วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

9
ทรัพยากรในการเรียนรู้การเขียนโปรแกรมในรหัสเครื่อง? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นนักเรียนสดใหม่ในการเขียนโปรแกรมและรักมันจาก Java ไปยัง C ++ และลงไปที่ C ฉันย้ายกลับไปที่แบร์โบนและคิดว่าจะลงไปที่ Assembly ต่อไป แต่ฉันประหลาดใจที่คนจำนวนมากบอกว่ามันไม่เป็นอย่างที่ C และมีการใช้งานไม่มี พวกเขาบอกการเรียนรู้ทั้งวิธีการเขียนโปรแกรมเคอร์เนลหรือเขียนคอมไพเลอร์ C ความฝันของผมคือการเรียนรู้ในการเขียนโปรแกรมในไบนารี (รหัสเครื่อง) หรืออาจจะเขียนโปรแกรมโลหะเปลือย (โปรแกรมไมโครคอนโทรลเลอร์ร่างกาย) หรือการเขียนประวัติหรือตักบูตหรือสิ่งที่มีลักษณะที่ สิ่งที่เป็นไปได้เพียง แต่ผมได้ยินมาหลังจากการวิจัยมากเป็นที่แก้ไข hex เป็นสิ่งที่ใกล้เคียงกับภาษาเครื่องที่ฉันสามารถหาในยุคนี้และยุค มีสิ่งอื่นที่ฉันไม่รู้หรือไม่ มีแหล่งข้อมูลเพื่อเรียนรู้การเขียนโปรแกรมในรหัสเครื่องหรือไม่? โดยเฉพาะอย่างยิ่งใน 8 บิตไมโครคอนโทรลเลอร์ / ไมโครโปรเซสเซอร์ นี้คำถามคือคล้ายกับระเบิด แต่ฉันสนใจในการเรียนรู้การปฏิบัติก่อนแล้วจึงทำความเข้าใจทฤษฎี

13
คำว่า "while (จริง)" วนซ้ำกับ "break" ด้านในคืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา สมมติว่าฉันมีวงใน C ++ หรือ C # ที่เป็นเช่นนี้: while( true ) { doSomething(); if( condition() ) { break; } doSomethingElse(); } สิ่งนี้เรียกว่า "infinite loop" แต่มันเป็นไปไม่ได้ในทางเทคนิคอนันต์ - breakมันจะหยุดทันทีที่ควบคุมการไหลผ่าน คำสำหรับวงดังกล่าวคืออะไร - ที่มีคำสั่งการควบคุมแบบวนซ้ำ "ตลอดไป" และ "ตัวแบ่ง" ภายใน

4
มีคำสำหรับการทำเช่นนี้: func1 (func2 (), func3 ());
ฉันรู้ว่าobj.func1().func2()มันถูกเรียกว่า method chaining แต่อะไรคือคำศัพท์ทางเทคนิคสำหรับ: func1(func2(), func3()); เมื่อมีการใช้ฟังก์ชัน return เป็นอาร์กิวเมนต์ให้กับฟังก์ชันอื่น

4
ทำไมต้องใช้ coffeescript แทน javascript [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันคิดว่าการสร้างภาษาที่เรียบเรียงเป็นภาษาอื่นนั้นให้ความรู้สึกที่ไม่ดีตั้งแต่เริ่มต้นแทนที่จะเรียนรู้จาวาสคริปต์อย่างถูกต้องตั้งแต่เริ่มต้น ดูที่ Douglas Crockfords Good Parts แล้วคุณจะติดงอมแงม และจาวาสคริปต์ก็ไม่ยาก - การเขียนโค้ดที่ดีนั้นทำได้ยากโดยไม่คำนึงถึงภาษา! ถ้าคุณเขียนโค้ดเส็งเคร็งใน javascript คุณจะสามารถเขียนโค้ดเส็งเคร็งใน coffeescript หรือ lattescript หรือรสชาติของวันนั้น และจะบอกว่าไวยากรณ์ coffeescript สวยงามผ่านฉัน ฉันชอบวงเล็บปีกกาของฉันและไวยากรณ์ C - และควรจะทำงานในภาษาที่เป็นเช่นนั้น (ขออภัย VB!) และมีของเล่นและภาษาและกรอบการทำงานมากกว่าเดิมที่ทำสิ่งเดียวกันอีกครั้งรู้สึกว่าฉันไม่ก้าวหน้าอีกต่อไป!
24 javascript 

5
การเรียนรู้ภาษาการเขียนโปรแกรมแต่ละประเภท
ฉันเคยได้ยินหลายครั้งว่าโปรแกรมเมอร์ทุกคนควรเรียนรู้ภาษาใดภาษาหนึ่งในแต่ละประเภท ตอนนี้มันไม่จำเป็นจริง แต่ฉันเชื่อว่ามันเป็นความคิดที่ดี ฉันได้เรียนรู้ภาษาขั้นตอน (Perl) แต่มีประเภทอื่นคืออะไร อะไรคือความแตกต่างระหว่างพวกเขาและสิ่งที่เป็นตัวอย่างของแต่ละคน?

3
ทำไมบางภาษาที่ใช้งานจำเป็นต้องใช้หน่วยความจำในการทำธุรกรรมซอฟต์แวร์
ภาษาที่ใช้งานได้ตามคำจำกัดความไม่ควรรักษาตัวแปรสถานะ เหตุใด Haskell, Clojure และอื่น ๆ จึงมีการใช้งานซอฟต์แวร์ transactional memory (STM) มีความขัดแย้งระหว่างสองแนวทางหรือไม่?

3
Softpedia เผยแพร่โครงการโอเพ่นซอร์สของฉัน - จะตอบโต้อย่างไร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว (FYI: ฉันเพิ่งย้ายคำถามนี้มาจาก Stackoverflow ตามคำแนะนำ) ฉันเพิ่งได้รับอีเมลไม่กี่แจ้งว่า softpedia.com ได้เพิ่ม "ผลิตภัณฑ์" ของฉันลงในฐานข้อมูลของสคริปต์สคริปต์ตัวอย่างข้อมูลและโปรแกรมประยุกต์บนเว็บ ผลิตภัณฑ์ของฉันอยู่ในกรณีนี้บางโครงการโอเพนซอร์สที่เล็กกว่าซึ่งฉันได้โฮสต์และเผยแพร่บน GitHub ตอนนี้ฉันสงสัยว่าจะตอบสนองต่อสิ่งนี้อย่างไร ไซต์นี้สร้างรายได้จากการทำงานของฉันผ่านโฆษณาฟรีสามหน้าก่อนการดาวน์โหลดจริง พวกเขาดูเหมือนจะ "ประดิษฐ์" หมายเลขรุ่นและฉันไม่สามารถทราบได้ว่าพวกเขากำลังโฮสต์โครงการล่าสุดหรือรุ่นทั้งหมดของฉัน - ฉันสามารถดูว่าสิ่งนี้จะนำไปสู่ปัญหาในอนาคตได้อย่างไรเนื่องจากฉันไม่ได้ควบคุมสิ่งที่ "ล่าสุด" ทุกที่ ในขณะที่ฉันไม่สนใจการประชาสัมพันธ์ที่เพิ่มขึ้น ฉันต้องการให้คนจำนวนมากที่สุดเท่าที่จะเป็นไปได้ที่จะรู้เกี่ยวกับโครงการใช้พวกเขาแยกพวกเขาและหวังว่าจะปรับปรุงพวกเขา โครงการในคำถามมีขนาดค่อนข้างเล็ก แต่ในอนาคตอาจไม่เหมาะกับฉันและ / หรือคนอื่น ๆ ที่อ่านคำถามนี้ ฉันแน่ใจว่าสิ่งนี้จะต้องเกิดขึ้นกับคนอื่น ๆ ที่นี่ ความคิดเห็นของคุณคืออะไร ฉันควรพยายามลบการดาวน์โหลดออกไหม อัปเดต 1 ฉันขอให้ลบและกล่าวว่าฉันไม่รู้สึกว่า Softpedia สามารถจัดหาสภาพแวดล้อมที่เหมาะสมสำหรับโครงการประเภทนี้ ทีมของพวกเขากลับมาหาฉันทันทีพร้อมอีเมลบอกว่าพวกเขาจะลบลิงก์ในตอนนี้: หากคุณกังวลว่าโครงการของคุณจะไม่ได้รับการอัปเดตฉันจะต้องบอกคุณว่ามีบุ๊คมาร์คพวกเขาในโปรแกรมอ่าน RSS ของฉันดังนั้นการเปลี่ยนแปลงเวอร์ชันใด ๆ …

3
ทำความเข้าใจกับรูปแบบการออกแบบสะพาน
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange โอนย้าย 8 ปีที่แล้ว ฉันไม่เข้าใจรูปแบบการออกแบบ "สะพาน" เลย ฉันได้ผ่านเว็บไซต์ต่าง ๆ แต่พวกเขาไม่ได้ช่วย ใครช่วยฉันในการทำความเข้าใจสิ่งนี้

4
คุณจะวางไลบรารี่ต่าง ๆ ในการควบคุมเวอร์ชันได้อย่างไร? คุณใช้แท็กหรือไม่ หรือสาขา หรือวิธีอื่น
ฉันเพิ่งเริ่มวางโค้ดของฉันภายใต้การควบคุมเวอร์ชัน (ในแล็บที่ฉันทำงานอยู่ภายใต้ SVN และรหัสของฉันเองใน GitHub (เห็นได้ชัดกับ git) ก่อนที่จะใช้การควบคุมเวอร์ชันฉันเคยทำอะไรแบบนี้ ฉันมีโฟลเดอร์ชื่อห้องสมุดในหลาย ๆ โฟลเดอร์ที่มีหมายเลขเวอร์ชัน ทุกครั้งที่ฉันต้องการเริ่มทำงานกับเวอร์ชันที่ใหม่กว่าฉันจะทำสำเนาของเวอร์ชันล่าสุดเปลี่ยนชื่อเป็นเวอร์ชันใหม่และเริ่มนำไปใช้ อย่างไรก็ตามวิธีนี้ดูเหมือนจะซ้ำซ้อนเมื่อโฟลเดอร์อยู่ภายใต้การควบคุมเวอร์ชัน นอกเหนือจากความซ้ำซ้อนหากมีคนต้องการรับรุ่นล่าสุดพวกเขาจะดาวน์โหลดทุกรุ่นถ้าเขาเพียงแค่imports / clones ตอนนี้ฉันเห็นหลายวิธีในการทำเช่นนี้ด้วยการควบคุมเวอร์ชัน แต่เนื่องจากฉันใหม่สำหรับมันฉันไม่ทราบว่าจะบำรุงรักษาได้ดีกว่า วิธีที่ 1: ใช้แท็ก หากฉันเข้าใจแท็กอย่างถูกต้องคุณจะมีสาขาหลักของคุณคุณยอมรับการเปลี่ยนแปลงใด ๆ ที่คุณได้รับและแท็กด้วยเวอร์ชัน จากนั้นเมื่อคุณต้องการได้รับสำเนาที่ใช้งานได้คุณจะได้รับแท็กที่แน่นอน (ช่วยแก้ให้ด้วยนะถ้าฉันผิด) วิธีที่ 2: เวอร์ชันการแยกสาขา ในวิธีนี้สาขาหลักจะเป็นสาขาการพัฒนา ทุก ๆ ครั้งที่มีการสร้างเวอร์ชันที่เสถียร (สมมติว่าv1.2.0) คุณสร้างสาขาสำหรับเวอร์ชันนั้นและไม่ผูกมัด ด้วยวิธีนี้หากคุณต้องการดาวน์โหลดเวอร์ชันใดรุ่นหนึ่งคุณจะได้รับรหัสจากสาขานั้น แม้ว่าฉันจะบอกว่าคุณไม่เคยยอมทำ แต่ก็เป็นไปได้ที่จะแก้ไขข้อผิดพลาดและผูกมัดกับสาขาของรุ่นเก่าเพื่อให้รุ่นเก่าทำงานต่อไป ตัวอย่างเช่นหากรุ่นปัจจุบันคือv2.0แต่มีคนที่ต้องการใช้v1.2คุณสามารถรับสาขาอื่นจากv1.2คือv1.2.1และกระทำการแก้ไขข้อบกพร่องหรือเพียงแค่ทำให้รุ่นเดียวกันv1.2และเพียงแค่แก้ไขข้อผิดพลาด ดังนั้นกิ่งจะเป็นดังนี้: v1.2.1 v1.2.2 / / v1.0.0 v1.2.0--------- v2.0.0 / / / …

9
ความซับซ้อนของการเขียนโปรแกรมที่ไม่มีการจัดการหน่วยความจำคืออะไร?
หรือกล่าวอีกนัยหนึ่งว่าการเก็บขยะอัตโนมัติมีปัญหาอะไรแก้ได้บ้าง ฉันไม่เคยเขียนโปรแกรมระดับต่ำมาก่อนดังนั้นฉันจึงไม่ทราบว่าความซับซ้อนในการเพิ่มแหล่งข้อมูลจะช่วยให้ได้รับอย่างไร ชนิดของข้อบกพร่องที่ที่อยู่ของ GC ดูเหมือนจะ (อย่างน้อยก็ต่อผู้สังเกตการณ์ภายนอก) ซึ่งเป็นสิ่งที่โปรแกรมเมอร์ที่รู้ภาษาไลบรารีแนวคิดแนวความคิดและสำนวนอื่น ๆ แต่ฉันอาจผิด: การจัดการหน่วยความจำด้วยตนเองมีความซับซ้อนหรือไม่

5
ตัวดำเนินการอินสแตนซ์ Java ของการพิจารณาการสะท้อนและสิ่งที่กำหนดสะท้อน?
ฉันได้พูดคุยกับเพื่อนร่วมงานในวันนี้ไม่ว่าการใช้งานตัวดำเนินการ Java instanceofนั้นเป็นสิ่งที่สะท้อนออกมาหรือไม่ และการอภิปรายพัฒนาอย่างรวดเร็วในสิ่งที่กำหนดสะท้อน ดังนั้นคำจำกัดความของการสะท้อนคืออะไร? และการใช้งานของการinstanceofพิจารณา "ใช้การสะท้อน" คืออะไร? และนอกจากนี้หากinstanceofพิจารณาว่าเป็นเงาสะท้อนแล้วความหลากหลายนั้นก็ไม่ "ใช้การสะท้อน" เช่นกัน? ถ้าไม่ต่างกันคืออะไร

8
จำเป็นหรือไม่ที่จะต้องเข้าใจว่าเกิดอะไรขึ้นที่ระดับฮาร์ดแวร์เพื่อเป็นโปรแกรมเมอร์ที่ดี?
ฉันเป็นโปรแกรมเมอร์ที่สอนตัวเองในกรณีที่คำถามนี้ได้รับคำตอบใน CS 101 ฉันได้เรียนรู้และใช้ภาษาเป็นจำนวนมากซึ่งส่วนใหญ่มีไว้สำหรับใช้ส่วนตัวของฉันเอง ดูเหมือนว่าฉันมักจะวิ่งเข้าไปในกำแพงเดียวกันเมื่อฉันพบปัญหาในการเขียนโปรแกรม ตัวอย่างเช่นฉันเพิ่งถามคำถามในฟอรัมอื่นเกี่ยวกับวิธีจัดการกับตัวชี้ไปยังอาร์เรย์ที่ฟังก์ชันส่งคืน ตอนแรกฉันคิดว่าฉันไม่รู้เทคนิคที่เหมาะสมที่นักออกแบบของ C ++ ตั้งขึ้นเพื่อจัดการกับสถานการณ์ แต่จากคำตอบและการสนทนาที่ตามมาฉันเห็นว่าฉันไม่ได้สิ่งที่เกิดขึ้นจริง ๆ เมื่อมีบางสิ่งที่ "คืน" ความเข้าใจในระดับลึกของกระบวนการเขียนโปรแกรมต้องเป็นโปรแกรมเมอร์ที่ดีได้อย่างไร

2
เหตุใด Objective-C จึงไม่ได้ใช้อย่างกว้างขวางนอกเหนือจากสภาพแวดล้อมของโกโก้
Objective-C มีการวางแนววัตถุที่ดีความเรียบง่ายความสง่างามและ (ในรูปแบบของ C) ความสามารถระดับต่ำ มันอาจเป็นทางเลือกที่ง่ายทันสมัยใน C ++ ที่หลายคนมองหาและลองค้นหาใน Go แต่มันถูกใช้ในสภาพแวดล้อม Cocoa และ post-NextSTEP และแม้แต่ในกรณีนี้ก็ยังถูกมองว่าเป็นภาระด้วยเหตุผลทางประวัติศาสตร์มากกว่าเป็นทางเลือกที่ดีที่สุด ทำไมมันไม่ใช้กันอย่างแพร่หลายมากขึ้นแล้ว? ปัญหาของมันคืออะไร?

11
ฉันควรยอมรับการเขียนรหัสที่ไม่ปลอดภัยหรือไม่หากนายจ้างขอให้ฉันทำเช่นนั้น? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการ4 ปีที่แล้ว นายจ้างของฉันขอให้ฉันใช้งานคุณลักษณะที่ต้องใช้การจัดเก็บรหัสผ่านเป็นข้อความที่ชัดเจนในฐานข้อมูล (หรือใช้ฟังก์ชั่นการเข้ารหัส / ถอดรหัสที่ไม่ชัดเจนซึ่งจัดเก็บในไบนารีซึ่งค่อนข้างดีกว่า แต่ก็ไม่ปลอดภัยด้วย) ฉันตอบว่าฉันยินดีที่จะใช้คุณสมบัติดังกล่าวหากลูกค้าได้รับการยอมรับถึงผลกระทบด้านความปลอดภัยเมื่อใช้งาน เมื่อพูดถึงปัญหานี้กับเพื่อนร่วมงานมีคนบอกฉันว่าในฐานะวิศวกรซอฟต์แวร์เรามีความรับผิดชอบส่วนบุคคล (ในแง่กฎหมาย) สำหรับปัญหาด้านความปลอดภัยที่เราแนะนำในผลิตภัณฑ์ของเรา ฉันดูสัญญา แต่ไม่พบสิ่งใดที่เกี่ยวข้องกับคดีที่คล้ายกัน จากมุมมองทางกฎหมายฉันควรปฏิเสธที่จะใช้คุณลักษณะดังกล่าวหรือไม่? เป็นความจริงหรือไม่ที่นายจ้างของฉันสามารถพาฉันขึ้นศาลได้หากลูกค้าประสบความเสียหายเนื่องจากคุณสมบัตินี้แม้ว่าเขาจะตระหนักถึงปัญหาด้านความปลอดภัยเช่นกัน แก้ไข:ฉันเข้าใจคำถามนี้สามารถตอบได้อย่างน่าเชื่อถือจากทนายความเท่านั้น เช่นเดียวกันสำหรับคำถามเกี่ยวกับสิทธิ์ใช้งาน: ผู้คนที่นี่ให้ความเข้าใจและประสบการณ์ของพวกเขาบางครั้งหลังจากได้ปรึกษากับทนายความโดยไม่มีการรับประกันว่าจะมีผลบังคับใช้ในเขตอำนาจศาลอื่น แต่การอนุญาตให้ใช้สิทธิ์ได้รับการยอมรับอย่างชัดเจนในหัวข้อที่นี่โปรดดูคำถามประเภทใดที่ฉันสามารถถามได้ที่นี่ . ฉันเชื่อว่าโปรแกรมเมอร์คนอื่น ๆ อาจมีปัญหาเดียวกันและคนอื่น ๆ อาจเคยเจอกับสถานการณ์นี้มาก่อนและอาจปรึกษาทนายความเรื่องนั้น
24 security  legal 

2
ความแตกต่างระหว่างการเปรียบเทียบและชุดอักขระคืออะไร?
ฉันมีคำถามทั่วไปเกี่ยวกับฐานข้อมูล เรามักจะใช้คำเปรียบเทียบกับฐานข้อมูล ฉันอยากจะรู้ว่ามันแตกต่างจากชุดตัวละครอย่างไร ฉันเดาว่า collation เป็นเซตย่อยของชุดตัวละคร หากเป็นจริงวัตถุประสงค์ในการเปรียบเทียบหลายครั้งภายใต้ชุดอักขระคืออะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.