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

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


1
ให้คะแนนความเชี่ยวชาญภาษาโปรแกรมของคุณตามแนวคิดของภาษา [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังมองหาวิธีการที่ดีในการประเมินความเชี่ยวชาญในโดยเฉพาะอย่างยิ่งการเขียนโปรแกรมภาษา ความคิดเกิดขึ้นเมื่อฉันพบบทความต่อไปนี้: รับเครดิตทั้งหมดเท็จ? คุณไม่ทราบว่า JavaScript มันแสดงรายการในลักษณะที่ครอบคลุมคุณสมบัติภาษาและแนวคิดของ JavaScript ฉันหวังว่าจะมีรายการสำหรับทุกภาษาการเขียนโปรแกรม โดยเฉพาะฉันจะสนใจเกี่ยวกับ: ชวา ค หลาม C # / .NET C ++ JavaScript ภาษาหรือเทคโนโลยีอื่นใดก็น่าสนใจเช่นกัน ในคำถามที่คล้ายกันมีวิธีที่ดีในการจัดอันดับทักษะการเขียนโค้ดของคุณเองได้อย่างไรแนะนำProgrammer Competency Matrix ฉันคิดว่ามันเป็นวิธีการที่ดี แต่ฉันคิดว่ามันธรรมดาเกินไป คุณทราบถึงบทสรุปอื่น ๆ ของแนวคิดภาษาที่สามารถช่วยให้คะแนนความเชี่ยวชาญด้านการเขียนโปรแกรมภาษาหรือไม่

2
มีความแตกต่างระหว่างการผสานใน svn เมื่อเปรียบเทียบกับ git หรือ mercurial หรือไม่?
จากความเข้าใจของฉัน SVN คือ 'ง่ายต่อการแตกสาขา ยากที่จะรวม ' ทำไมถึงเป็นอย่างนั้น? มีวิธีแตกต่างกันอย่างไร?
12 git  svn  mercurial  dvcs 

14
โปรแกรมเมอร์ที่ไม่มีประสบการณ์จำเป็นต้องมี IDE หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา การอ่านคำถามอื่นทำให้ฉันสงสัยว่าฉัน (ในฐานะโปรแกรมเมอร์ PHP มือใหม่) ควรติดกับ WAMP และ Notepad ++ หรือเปลี่ยนเป็น IDE บางตัวเช่น Eclipse เป็นที่เข้าใจกันว่านักพัฒนาที่มีทักษะจะได้รับประโยชน์จาก IDE ที่ยอดเยี่ยม แต่ทำไมผู้เริ่มต้นที่แน่นอนควรใช้ IDE? ผลประโยชน์มีมากกว่าความท้าทายพิเศษในการเรียนรู้ IDE ด้านบนของการเรียนรู้เพื่อพัฒนาหรือไม่? ปรับปรุงเพื่อความกระจ่าง: เป้าหมายของฉันคือการได้รับประสบการณ์การเขียนโปรแกรมพื้นฐาน ด้วยการเลือก PHP และ WAMP (และ FogBugz และ Kiln) ฉันหวังว่าจะหลีกเลี่ยงการนำทางเฉพาะ OS ที่ยุ่งยาก / ยุ่งและการคอมไพล์ ฯลฯ และเพียงมุ่งเน้นไปที่ฟังก์ชั่นพื้นฐานเช่นแบบฟอร์มลงทะเบียนผู้ใช้ออนไลน์ ฉันมีความเข้าใจทางทฤษฎีมากมายจากมหาวิทยาลัยเมื่อสิบปีก่อน แต่ไม่มีประสบการณ์จริง ฉันต้องการแก้ไขด้วยโครงการงานอดิเรกที่คล้ายกับเว็บแอปที่ขายได้จริง มีคำถามมากมายให้ถาม ข้อผิดพลาดมากมายที่ฉันอาจต้องผิดพลาด …
12 ide 

4
ความแตกต่างระหว่างตัวชี้ที่ชี้ไปยังตำแหน่ง 0x0 และตัวชี้ถูกตั้งค่าเป็น NULL คืออะไร
ตัวชี้ชี้ไปที่ 0x0000 เหมือนกับตัวชี้ที่ตั้งค่าเป็น NULL หรือไม่ ถ้าค่า NULL ถูกกำหนดในภาษา C แปลตำแหน่งทางกายภาพเป็นอะไร มันเหมือนกับ 0x0000 ฉันจะหารายละเอียดเพิ่มเติมเกี่ยวกับแนวคิดเหล่านี้ได้ที่ไหน
12 c  pointers  null 

2
ทำไมผู้คนถึงไม่แนะนำให้ใช้ตัวแปรอินสแตนซ์สำหรับมุมมองใน Ruby on Rails
ทำไมฉันถึงได้ยินว่ามันไม่ดีที่จะแบ่งปันตัวแปรอินสแตนซ์ระหว่างตัวควบคุมและมุมมอง ฉันชอบมันเพราะฉันเห็นได้ทันทีผ่านทาง @ ว่ามีบางอย่างมาจากคอนโทรลเลอร์ ผมเห็นเป็นวิธีที่ดีที่จะใช้ผู้ช่วยเหลือในการควบคุมที่นี่: http://www.stephencelis.com/2008/09/06/rails-controllers-views-and-variables.html แต่ฉันใช้ cancan สำหรับส่วนนั้น

7
จัดเรียงอัลกอริทึมที่ทำงานกับข้อมูลจำนวนมาก
ฉันกำลังมองหาอัลกอริทึมการเรียงลำดับที่สามารถทำงานกับข้อมูลจำนวนมากได้เช่นสามารถทำงานได้แม้ว่าชุดข้อมูลทั้งหมดไม่สามารถเก็บไว้ในหน่วยความจำหลักได้ในครั้งเดียว ผู้สมัครคนเดียวที่ฉันพบจนถึงขณะนี้คือการเรียงลำดับการผสาน: คุณสามารถใช้อัลกอริทึมในลักษณะที่จะสแกนชุดข้อมูลของคุณในแต่ละการผสานโดยไม่ต้องเก็บข้อมูลทั้งหมดในหน่วยความจำหลักในครั้งเดียว การเปลี่ยนแปลงของ merge sort ฉันมีในใจได้อธิบายไว้ในบทความนี้ในส่วนของการใช้งานด้วยเทปไดรฟ์ ฉันคิดว่านี่เป็นทางออกที่ดี (มีความซับซ้อน O (nx log (n)) แต่ฉันอยากรู้ว่ามีวิธีการเรียงลำดับอื่น ๆ (เร็วกว่า) เรียงลำดับที่สามารถทำงานกับชุดข้อมูลขนาดใหญ่ที่ไม่เหมาะกับหน่วยความจำหลัก แก้ไข นี่คือรายละเอียดเพิ่มเติมตามคำตอบที่ต้องการ: ข้อมูลจะต้องมีการเรียงลำดับเป็นระยะเช่นหนึ่งครั้งในหนึ่งเดือน ฉันไม่จำเป็นต้องแทรกบางระเบียนและมีการเรียงลำดับข้อมูลที่เพิ่มขึ้น ไฟล์ข้อความตัวอย่างของฉันมีขนาดประมาณ 1 GB UTF-8 แต่ฉันต้องการแก้ปัญหาโดยทั่วไปแม้ว่าไฟล์จะเป็น 20 GB ก็ตาม ไม่ได้อยู่ในฐานข้อมูลและเนื่องจากข้อ จำกัด อื่น ๆ จึงไม่สามารถทำได้ ข้อมูลถูกทิ้งโดยผู้อื่นเป็นไฟล์ข้อความฉันมีรหัสของตัวเองเพื่ออ่านไฟล์ข้อความนี้ รูปแบบของข้อมูลเป็นไฟล์ข้อความ: อักขระบรรทัดใหม่เป็นตัวคั่นเร็กคอร์ด การปรับปรุงที่เป็นไปได้อย่างหนึ่งที่ฉันนึกไว้คือการแบ่งไฟล์ออกเป็นไฟล์ที่มีขนาดเล็กพอที่จะเรียงในหน่วยความจำและท้ายที่สุดผสานไฟล์เหล่านี้ทั้งหมดโดยใช้อัลกอริทึมที่ฉันได้อธิบายไว้ข้างต้น

2
ฉันจะทำให้กลุ่มผู้ใช้ภายในประสบความสำเร็จได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันต้องการเปิดตัวกลุ่มผู้ใช้ / ฟอรัมภายในสำหรับนักพัฒนาใน บริษัท ของฉัน แต่ฉันไม่แน่ใจว่าจะเริ่มต้นอย่างไร เรามีนักพัฒนาหลายทีมซึ่งประกอบไปด้วยเทคโนโลยีและประสบการณ์หลายระดับ ฉันจินตนาการว่านี่เป็นโอกาสสำหรับเราทุกคนที่จะมารวมกันและแบ่งปันเทคนิคการปฏิบัติที่ดีที่สุดบทเรียนที่เรียนรู้จุดปวดเทคโนโลยีใหม่ ๆ หรือสิ่งอื่น ๆ ที่นักพัฒนาพบว่าน่าสนใจ นี่อาจเป็นวิธีที่ยอดเยี่ยมสำหรับการจ้างงานใหม่เพื่อรวมเรียนรู้วิธีที่เราทำสิ่งต่าง ๆ และแบ่งปันความเชี่ยวชาญที่พวกเขานำมาด้วย นี่เป็นครั้งแรกที่ฉันพยายามทำสิ่งนี้และฉันต้องการทำสิ่งที่ถูกต้อง ฉันสนใจสิ่งต่าง ๆ เช่น: การขับขี่อย่างมีส่วนร่วม ทำให้สิ่งต่าง ๆ น่าสนใจสำหรับทหารผ่านศึก 20 ปีและผู้สำเร็จการศึกษาสีเขียวสด หลีกเลี่ยงข้อผิดพลาดที่ทราบว่าเป็นพิษต่อกลุ่มผู้ใช้ มีใครทำเช่นนี้สำเร็จหรือไม่ ถ้าเป็นเช่นนั้นคุณจะแบ่งปันอะไรได้บ้างเกี่ยวกับประสบการณ์นี้

6
Python มีคุณลักษณะอะไรบ้างที่ทำให้มีลักษณะเฉพาะเป็นภาษาของตัวเอง [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา Python มีคุณลักษณะอะไรบ้างที่ทำให้มีลักษณะเฉพาะเป็นภาษาของตัวเอง ฉันกำลังมองหาลักษณะที่หลากหลายตั้งแต่ดีไปถึงไม่ดีมีประโยชน์ต่ออุปสรรคการใช้งานจริง แต่การสังเกตที่ไม่ชัดเจนจะเป็นประโยชน์มากที่สุดสำหรับนักพัฒนาทั่วไป ฉันเป็นคนใหม่ที่นี่ดังนั้นสิ่งที่เข้าใจง่ายอาจต้องอธิบาย .....

4
อะไรคือผลของการมีการอ้างอิงและการใช้ที่ไม่จำเป็น?
ฉันเป็นคนที่คลั่งไคล้และมีแนวโน้มที่จะทำให้โครงการของฉันโดยการทำความสะอาดข้อมูลอ้างอิงusingในแต่ละชั้นเรียนเพื่อรักษาเฉพาะสิ่งที่ใช้จริง ฉันสามารถโต้แย้งอะไรได้อีก (นอกจากทำให้สงบประสาท OCD ของฉัน) ในการรักษาสิ่งจำเป็น? ฉันคิดว่าการอ้างอิงระบบส่วนใหญ่การอ้างอิงใด ๆ กับงานที่กำหนดเองจะนำมาซึ่งปัญหาความเข้ากันได้แบบย้อนหลัง การปล่อยรอยเท้าใหญ่ขึ้นหรือไม่? รวบรวมเวลานานขึ้น?
12 c# 

3
Entity Framework และการแยกชั้น
ฉันพยายามทำงานกับ Entity Framework เล็กน้อยและฉันมีคำถามเกี่ยวกับการแยกชั้น ฉันมักจะใช้ UI -> BLL -> วิธี DAL และฉันสงสัยว่าจะใช้ภาษา EF ที่นี่ได้อย่างไร DAL ของฉันมักจะเป็นอะไรที่ชอบ GetPerson(id) { // some sql return new Person(...) } BLL: GetPerson(id) { Return personDL.GetPerson(id) } UI: Person p = personBL.GetPerson(id) คำถามของฉันคือ: เนื่องจาก EF สร้างแบบจำลองและ DAL ของฉันมันเป็นความคิดที่ดีหรือไม่ที่จะห่อ EF ไว้ใน DAL ของฉันเองหรือแค่เสียเวลา? ถ้าฉันไม่ต้องการห่อ EF ฉันจะยังคงวาง Model.esmx …

5
“ โดเมนปัญหา” คืออะไร
ฉันต้องทำเอกสารโปรแกรมของฉันสำหรับโครงการโรงเรียนและเรามีส่วนที่เรียกว่า "โดเมนปัญหา" แต่ฉันไม่รู้ว่าจะพูดคุยอะไรในส่วนนี้ ดังนั้นคำถามคือสิ่งที่ควรกล่าวถึงในโดเมนปัญหา

3
Android, OpenGL และขยาย GLSurfaceView หรือไม่
คำถามนี้เป็นส่วนหนึ่งทางเทคนิคส่วนหนึ่งเมตาส่วนร่วมและเฉพาะเจาะจงมาก: ฉันเป็นนักพัฒนาเกมอินดี้ที่ทำงานกับ Android และในช่วง 6 เดือนที่ผ่านมาฉันพยายามและในที่สุดก็ประสบความสำเร็จในการสร้างแอพเกม 3D ของฉันเองสำหรับ Android ดังนั้นฉันคิดว่าฉันจะกระโดดเพื่อให้และช่วยเหลือผู้อื่นที่กำลังต่อสู้กับ Android และ openGL-ES GLSurfaceViewแต่ส่วนใหญ่ของคำถามที่เกี่ยวข้องกับการขยาย ฉันสร้างแอปทั้งหมดของฉันโดยไม่ขยายGLSurfaceView(และมันก็ทำงานได้ดี) ฉันไม่เห็นเหตุผลใด ๆ เลยGLSurfaceViewสำหรับคำถามส่วนใหญ่ที่ฉันเจอ เลวร้ายยิ่งไปกว่านั้นเอกสาร Android นั้นบอกเป็นนัยว่าคุณควรจะทำ แต่ไม่ได้อธิบายอย่างละเอียดว่าทำไมหรือข้อดีข้อเสียคืออะไรที่ไม่ขยายและทำทุกอย่างผ่านการใช้งานของคุณเองGLSurfaceView.Rendererเหมือนที่ฉันทำ ถึงกระนั้นปริมาณคำถามที่เลี่ยงไม่ได้ที่จะขยายGLSurfaceViewคือทำให้ฉันสงสัยว่าจริง ๆ แล้วมีบางเหตุผลที่ดีจริง ๆ ที่ทำแบบนั้นกับวิธีที่ฉันทำ (และแนะนำคำตอบของฉันให้คนอื่น ๆ ) ทำ). ดังนั้นมีบางสิ่งที่ฉันขาดหายไปหรือไม่ ฉันควรหยุดตอบคำถามในเวลาเดียวกันหรือไม่? เอกสารประกอบ openGL ของ Android
12 android  opengl 

5
ไวยากรณ์ของภาษาโปรแกรมขึ้นอยู่กับการนำไปใช้หรือไม่
แม้ว่าคำถามของฉันอาจไม่เกี่ยวข้องทั้งหมด แต่ฉันได้สัมผัสรูปแบบระหว่างภาษาโปรแกรมส่วนใหญ่และการใช้งานอย่างเป็นทางการของพวกเขา การตีความ (byte-ตีความแล้ว?) ภาษาเช่น Python, Lua ฯลฯ มักจะมีรูปแบบที่ผ่อนปรนและง่ายและโดยทั่วไปจะพิมพ์น้อยกว่าหรือไม่ต้องการให้ผู้พัฒนาเขียนประเภทตัวแปรในซอร์สโค้ดอย่างชัดเจน ภาษาที่คอมไพล์เช่น C, C ++, Pascal ฯลฯ มักจะมีไวยากรณ์ที่เข้มงวดโดยทั่วไปมีประเภทและส่วนใหญ่ต้องการรหัส / เวลาในการพัฒนามากขึ้น ภาษาที่มีการใช้งานอย่างเป็นทางการคือJIT-Compiledเช่น Java / C # มักจะเป็นการประนีประนอมระหว่างสองคนข้างต้นกับคุณสมบัติที่ดีที่สุดของทั้งสองอย่าง ภาษาโปรแกรมคอมไพล์ที่ทันสมัยกว่าบางภาษาเช่น D และ Vala (และการนำ GNU GJC ไปใช้ของ Java) อาจเป็นข้อยกเว้นของกฎนี้และคล้ายกับไวยากรณ์และคุณลักษณะของภาษาที่รวบรวม JIT เช่น Java และ C # คำถามแรกของฉันคือสิ่งนี้เกี่ยวข้องกันจริงหรือ? หรือนี่เป็นเรื่องบังเอิญที่ภาษาที่ถูกตีความส่วนใหญ่มีไวยากรณ์ง่าย ๆ JIT-Compiled มีไวยากรณ์และคุณสมบัติในระดับปานกลางเป็นต้น ประการที่สองหากนี่ไม่ใช่เรื่องบังเอิญเหตุใดจึงเป็นเช่นนั้น ตัวอย่างเช่นคุณสมบัติบางอย่างสามารถนำไปใช้ในภาษาการเขียนโปรแกรมถ้าคุณพูด JIT- รวบรวมมัน?

3
การแยกคำสั่ง / แบบสอบถามนำไปใช้กับวิธีการที่สร้างวัตถุและส่งคืน ID หรือไม่
สมมติว่าเรามีบริการที่เรียกกระบวนการทางธุรกิจ กระบวนการนี้จะเรียกใช้ในชั้นข้อมูลเพื่อสร้างวัตถุประเภท A ในฐานข้อมูล หลังจากนั้นเราต้องเรียกอีกครั้งในคลาสข้อมูลอีกชั้นหนึ่งเพื่อสร้างอินสแตนซ์ของประเภท B ในฐานข้อมูล เราจำเป็นต้องส่งข้อมูลบางอย่างเกี่ยวกับ A สำหรับคีย์ต่างประเทศ ในวิธีแรกเราสร้างวัตถุ (แก้ไขสถานะ) และคืนค่าเป็น ID (แบบสอบถาม) ในวิธีการเดียว ในวิธีที่สองเรามีสองวิธีหนึ่ง (createA) สำหรับการบันทึกและอื่น ๆ (getId) สำหรับแบบสอบถาม public void FirstMethod(Info info) { var id = firstRepository.createA(info); secondRepository.createB(id); } public void SecondMethod(Info info) { firstRepository.createA(info); var key = firstRepository.getID(info); secondRepository.createB(key); } จากความเข้าใจของฉันวิธีที่สองดังนี้แยกแบบสอบถามคำสั่งอย่างเต็มที่มากขึ้น แต่ฉันคิดว่ามันสิ้นเปลืองและตอบโต้ง่าย ๆ เพื่อสืบค้นฐานข้อมูลเพื่อให้ได้วัตถุที่เราเพิ่งสร้างขึ้น คุณจะกระทบยอด …

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