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

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

7
“ ภาษา A เขียนด้วยภาษา B” หมายความว่าอะไร?
ผมมักจะได้ยินคำว่าภาษาเป็นสิ่งที่เขียนในภาษา B. ตัวอย่างเช่นPHPได้รับการเขียนC , C #จะถูกเขียนในภาษา C ++ ใครช่วยกรุณาอธิบายสิ่งนั้นหมายความว่าและถ้ามันถูกต้อง? สิ่งนี้เกี่ยวข้องกับการแปลของล่ามที่ใช้โดยภาษาหรือไม่? นอกจากนี้ปัจจัยอะไรบ้างที่ทำให้ภาษาที่ใช้ในการเลือกใช้ถูกสร้างขึ้น

6
เหตุใด Quicksort จึงดีกว่าอัลกอริธึมการเรียงลำดับอื่น ๆ ในทางปฏิบัติ
นี่คือ repost ของคำถามเกี่ยวกับ cs.SEโดยJanoma หน่วยกิตและเครดิตทั้งหมดของเขาหรือของซีเอส ในหลักสูตรอัลกอริธึมมาตรฐานเราถูกสอนว่าquicksortคือ O (n log n) โดยเฉลี่ยและ O (n²) ในกรณีที่แย่ที่สุด ในเวลาเดียวกันอัลกอริธึมการเรียงลำดับอื่น ๆ กำลังศึกษาซึ่งเป็น O (n log n) ในกรณีที่เลวร้ายที่สุด (เช่นการผสานและheapsort ) และแม้แต่เวลาเชิงเส้นในกรณีที่ดีที่สุด (เช่นbubbleort ) แต่มีความต้องการหน่วยความจำเพิ่มเติม หลังจากมองผ่าน ๆ ในเวลาที่วิ่งเร็วขึ้นมันเป็นเรื่องธรรมดาที่จะบอกว่า quicksort ไม่ควรมีประสิทธิภาพเหมือนกับคนอื่น ๆ นอกจากนี้ให้พิจารณาว่านักเรียนเรียนรู้ในหลักสูตรการเขียนโปรแกรมขั้นพื้นฐานที่การเรียกซ้ำโดยทั่วไปไม่ดีนักเพราะอาจใช้หน่วยความจำมากเกินไป ฯลฯ ดังนั้น (และแม้ว่านี่จะไม่ใช่ข้อโต้แย้งจริง ๆ ) สิ่งนี้ทำให้เกิดความคิดว่า ดีจริงๆเพราะเป็นอัลกอริทึมแบบเรียกซ้ำ เหตุใด quicksort จึงมีประสิทธิภาพสูงกว่าอัลกอริทึมการเรียงลำดับอื่น ๆ ในทางปฏิบัติ มันเกี่ยวข้องกับโครงสร้างของข้อมูลจริงหรือไม่? มันเกี่ยวข้องกับการทำงานของหน่วยความจำในคอมพิวเตอร์หรือไม่? ฉันรู้ว่าความทรงจำบางอย่างนั้นเร็วกว่าวิธีอื่น …

2
C ++ / CX และ C ++ / CLI คืออะไรและเกี่ยวข้องกับ C ++ และ WinRT อย่างไร
ฉันกำลังพิจารณาที่จะท้าทายการเรียนรู้ C ++ สำหรับการออกแบบแอพ Metro และนั่นคือตอนที่ฉันเจอ C ++ / CX แอพ Metro สามารถใช้รหัสใน C ++ 11 ได้หรือไม่? พวกเขาต้องการให้ C ++ / CX ทำงานหรือไม่ แล้ว C ++ / CX คืออะไร? เป็นไปได้หรือไม่ที่จะสร้างแอพ Metro โดยใช้ C ++ หรือจำเป็นต้องใช้ C ++ / CX? นอกจากนี้ C ++ / CLI ยังผูกกับภาพนี้อย่างไร
31 c++  windows-8  winrt 

7
ทีม Agile ควรส่งมอบคุณสมบัติใหม่ทุกวันหรือไม่?
บริษัท ของฉันกำลังอยู่ในช่วงเปลี่ยนผ่านจากการพัฒนาสไตล์น้ำตกเป็น Agile / Scrum เหนือสิ่งอื่นใดเราได้รับการบอกว่าความคาดหวังนั้นมีไว้สำหรับเราที่จะมีคุณสมบัติการทำงานใหม่ทดสอบได้ (โดย QA) ในตอนท้ายของแต่ละวัน devs ส่วนใหญ่ของเราสูญเสียประมาณ 2 ชั่วโมงต่อวันสำหรับการประชุมและค่าใช้จ่ายอื่น ๆ ขององค์กร ซึ่งหมายความว่าในระยะเวลา 6 ชั่วโมง (อย่างดีที่สุด) เราต้องออกแบบเขียนทดสอบหน่วยสร้างและปรับใช้ (พร้อมบันทึกประจำรุ่น) รหัสเพียงพอที่จะสร้างคุณลักษณะที่สมบูรณ์สำหรับ QA เพื่อเล่นด้วย ฉันเข้าใจว่าบันทึกการสร้าง / ปรับใช้ / วางจำหน่ายอาจเป็นไปโดยอัตโนมัติด้วยการตั้งค่า CI ที่เหมาะสม แต่เรายังไม่ได้มี นอกจากนี้เรายังมีการเขียนโค้ดฝั่งเซิร์ฟเวอร์ขนาดใหญ่ในต่างประเทศและความแตกต่างของเวลา 12 ชั่วโมงทำให้ยากยิ่งขึ้น เราพยายามที่จะจัดทำเรื่องราวให้แคบลงในแนวดิ่งเพื่อให้ฟีเจอร์แบบครบวงจรเร็วที่สุดเท่าที่จะทำได้ แต่วันส่วนใหญ่รู้สึกค่อนข้างคลั่งและฉันมักจะจับคนที่ใช้ทางลัดที่บอบบางและเปราะบางเพื่อให้มั่นใจว่า ปัญหานี้เกิดขึ้นหลังจากที่มีการดำเนินการ sprint สองสามวันเมื่อข้อบกพร่องที่หลีกเลี่ยงไม่ได้เริ่มที่จะกลิ้งเข้ามาและต้องพอดีกับหน้าต่าง 6 ชั่วโมงเดียวกัน นี่เป็นก้าวปกติของทีม Agile หรือไม่? แม้ว่าเราจัดการเพื่อใช้การตั้งค่า CI ฉันไม่สามารถดูว่าเราจะสามารถรักษาจังหวะนี้ไว้ได้อย่างไรและยังคงสร้างซอฟต์แวร์ที่มีคุณภาพ แก้ไข: มีคำตอบที่ดีหลายอย่างที่นี่ …
31 agile  scrum 

3
ทำไมกองเติบโตขึ้น
ฉันสมมติว่ามีประวัติ แต่ทำไมสแต็คถึงลง? ดูเหมือนว่าฉันชอบบัฟเฟอร์ล้นจะยากมากที่จะใช้ประโยชน์หากกองเติบโตขึ้น ...
31 cpu  stack 

2
เว็บไซต์ควรใช้ API สาธารณะหรือไม่
ฉันเริ่มเขียน webservice และฉันสร้างด้วย nodeJS และ RESTfulish จากสิ่งที่ฉันรวบรวม: ข้อดีคือคุณไม่ต้องทำซ้ำรหัส ข้อเสียคือคุณ: จะอัปเดต API สาธารณะเป็นประจำ แต่ควรแก้ไขด้วยการกำหนดเวอร์ชัน ไม่สามารถทำการแคชเฉพาะบริการและเพิ่มประสิทธิภาพได้จริงๆ การปฏิบัติที่ดีที่สุดคืออะไร? เว็บไซต์เช่น Stack Exchange, Github, Twitter และอื่น ๆ ใช้ API ของตัวเองสำหรับลูกค้าของพวกเขาหรือไม่?
31 api 

5
วิศวกรอาวุโส: กลับไปที่การเข้ารหัส?
นี่เป็นคำถามเกี่ยวกับวิศวกรที่มีประสบการณ์มากกว่า 20 ปี แต่เป็นคำถามสำหรับทุกคนที่เกี่ยวข้องกับการพัฒนาอาชีพ ฉันตกงานเป็นเวลานานอย่างน่าประหลาดใจและปัญหาดูเหมือนว่านายจ้างจะไม่ยอมรับฉันในฐานะผู้เขียนโค้ด ใช่ฉันทำสิ่งต่าง ๆ มากมายมี บริษัท ของตัวเองขายเร็วเกินไป ฯลฯ แต่โลกต้องการแรงงานที่มีประสิทธิผลเสมอและทักษะของฉันเป็นปัจจุบันและคมชัด ตลาดที่ฉันเข้ามามีช่องเปิดน้อยกว่าสำหรับผู้อาวุโสและฉันไม่รังเกียจที่จะถอยห่างออกไปสองหรือสามก้าวถ้าฉันสามารถหาสถานที่ที่จะมีส่วนร่วมได้ คุณมีความคิดอย่างไรเกี่ยวกับการจัดการอาชีพที่เตรียม 40, 50 ปีสำหรับการหยุดชะงักอาชีพอย่างฉับพลัน?

4
นักพัฒนาเว็บอิสระทำเว็บโฮสติ้งให้กับลูกค้าอย่างไร
ฉันได้สร้างเว็บไซต์จำนวนมากสำหรับเพื่อนครอบครัว ฯลฯ และฉันได้รวบรวมไว้ในบัญชีเว็บโฮสติ้งที่ใช้ร่วมกันเพียงครั้งเดียว ตอนนี้พวกเขาสร้างเสร็จแล้วฉันต้องการออกจากธุรกิจเพื่อช่วยเหลือพวกเขาและจ่ายเงินให้พวกเขา (เพื่อนของฉันจ่ายเงินคืนให้ฉัน แต่ฉันจ่ายเงินตามค่าใช้จ่ายจริง) ดังนั้นฉันจึงคิดว่าจะให้พวกเขาสร้างบัญชีโฮสติ้งของตนเอง เว็บไซต์มากกว่า ฉันคิดว่าคนทำอาชีพอิสระคนนี้ทำได้อย่างไร พวกเขาบังคับให้ลูกค้าของพวกเขาตั้งค่าโฮสติ้งของตัวเองและปล่อยให้โปรแกรมเมอร์เข้าสู่บัญชีลูกค้าในระหว่างการพัฒนา จะเกิดอะไรขึ้นถ้าหากมีข้อผิดพลาดในอนาคตและพวกเขาจำเป็นต้องย้อนกลับไป? ฉันอยากรู้ว่ารุ่นใดที่คนส่วนใหญ่ใช้ที่สร้างเว็บไซต์ให้ผู้อื่นเนื่องจากดูเหมือนว่าเป็นสถานการณ์ที่ยุ่งยาก

5
เราควรใช้ Entity Framework หรือไม่
ขณะนี้เรามีสแต็กต่อไปนี้: VS 2005 เว็บฟอร์ม SQL Server 2005 IIS 6 เรากำลังวางแผนที่จะเปลี่ยนเป็น: VS 2010 MVC และเว็บฟอร์ม SQL Server 2008 IIS 7 คำถามของฉันคือเมื่อเราย้ายไปที่ MVC ด้วย VS 2010 เราควรใช้ Entity Framework (หรือ ORM อื่น) micro ORM (เช่นMassive ) หรือ SQL ธรรมดาหรือไม่ บทเรียนทั้งหมดที่ฉันได้อ่านเกี่ยวกับ VS 2010 นั้นมุ่งไปที่การใช้ Entity Framework สำหรับการทำธุรกรรมข้อมูล แต่นั่นจะเป็นไปในอนาคตอันใกล้ (5+ ปี) หรือไม่? หากเป็นเรื่องสำคัญแอปพลิเคชันของลูกค้าของเราสามารถมีผู้ใช้งานตั้งแต่ 10 …

2
O (…) คืออะไรและฉันจะคำนวณได้อย่างไร
ช่วยด้วย! ฉันมีคำถามที่ฉันต้องการวิเคราะห์ Big-O ของอัลกอริทึมหรือรหัสบางอย่าง ฉันไม่แน่ใจว่า Big-O คืออะไรหรือเกี่ยวข้องกับ Big-Theta หรือวิธีอื่น ๆ ในการวิเคราะห์ความซับซ้อนของอัลกอริทึม ฉันไม่แน่ใจว่า Big-O อ้างอิงถึงเวลาในการเรียกใช้รหัสหรือจำนวนหน่วยความจำที่ใช้ (การแลกเปลี่ยนพื้นที่ / เวลา) ฉันมีการบ้านวิทยาการคอมพิวเตอร์ที่ฉันต้องใช้ลูปบางทีอัลกอริทึมแบบเรียกซ้ำและมากับ Big-O สำหรับมัน ฉันกำลังทำงานกับโปรแกรมที่ฉันมีตัวเลือกระหว่างสองโครงสร้างข้อมูลหรืออัลกอริทึมกับ Big-O ที่รู้จักกันดีและไม่แน่ใจว่าจะเลือกตัวเลือกใด ฉันจะเข้าใจวิธีการคำนวณและใช้ Big-O กับโปรแกรมการบ้านหรือความรู้ทั่วไปของวิทยาการคอมพิวเตอร์ได้อย่างไร หมายเหตุ: คำถามนี้เป็นเป้าหมายแบบดัชชู่ที่เป็นที่ยอมรับสำหรับคำถาม Big-O อื่น ๆตามที่ชุมชนกำหนด เป็นความตั้งใจโดยทั่วไปที่จะสามารถเก็บข้อมูลที่เป็นประโยชน์จำนวนมากสำหรับคำถาม Big-O ได้ โปรดอย่าใช้ข้อเท็จจริงที่ว่านี้เป็นข้อบ่งชี้ว่าคำถามที่คล้ายกันเป็นที่ยอมรับได้

13
ปัญหา (เช่นการบำรุงรักษา) ในการพัฒนาด้วยภาษาที่ไม่เป็นที่นิยม
ฉันกำลังพัฒนาแอปพลิเคชันบางอย่างโดยใช้ clojure (เสียงกระเพื่อม) เพียงอย่างเดียวในทีมของฉัน มันเริ่มเป็นแอปพลิเคชั่นขนาดเล็ก ไม่มีปัญหา. แต่เนื่องจากมันมีคุณสมบัติและขยายพื้นที่ออกไปมันจึงกลายเป็นโปรแกรมที่สำคัญ ฉันกังวลเกี่ยวกับการบำรุงรักษาหรืออะไรบางอย่าง ไม่มีใครในทีมของฉันรู้ว่าการปิดบังหรือเสียงกระเพื่อมและไม่สนใจภาษาเช่นพวกเขา ดังนั้นการเขียนโปรแกรมในภาษาที่ไม่นิยมใช่ไหม (เพื่อความสนุกของฉันเอง) ฉันควรใช้ภาษายอดนิยมมากกว่านี้ไหม? (อย่างน้อยเช่น python) ฉันแน่ใจว่าถ้าฉันออกจากทีม - ไม่ได้บอกว่าฉันไปแล้ว :) - ไม่มีใครจะรักษามัน โปรแกรมนี้จะถูกทำลายและบางส่วนจะพัฒนาด้วยภาษาอื่น ฉันสนุกกับการพัฒนาด้วย clojure มาก แต่ฉันก็เจอกับสิ่งนี้อาจไม่เหมาะกับทีมของฉัน คุณคิดอย่างไรเกี่ยวกับเรื่องนี้? ฉันคิดว่าโปรแกรมเมอร์จำนวนมากที่รักภาษาที่ไม่เป็นที่นิยมมีปัญหาเกี่ยวกับเรื่องเดียวกัน

13
จะตอบคำถามผิดหรือไม่ตอบระหว่างการสัมภาษณ์อย่างไร? [ปิด]
วันนี้ฉันได้ทำการสัมภาษณ์ครั้งแรกกับผู้ฝึกงานที่มีศักยภาพ แม้ว่านี่จะเป็นคำถามที่เปิดกว้าง แต่ฉันก็มีงานเขียนโปรแกรมเล็กน้อยสำหรับพวกเขา: เขียนฟังก์ชันที่คืนค่าจริงถ้าด้านสามเหลี่ยม (จำนวนเต็มทั้งหมด) a, b และ c สามารถแทนสามเหลี่ยมมุมฉากได้ FizzBuzz คำนวณองค์ประกอบที่ N ของฟีโบนักชีโดยใช้การเรียกซ้ำ (ถ้าไม่รู้ว่าฟีโบนักชีคืออะไรฉันจะเขียนคำจำกัดความ F (n) = F (n-1) + F (n-2); F (1) = 1; F (0) = 1) ใช้รายการโครงสร้างสำหรับจำนวนเต็มและเขียนฟังก์ชันเพื่อย้อนกลับ เห็นได้ชัดว่าเป็นงานที่ง่ายมากและฉันไม่ได้เตรียมไว้สำหรับบางคนที่จะไม่แก้ปัญหา ฉันควรทำอย่างไรเมื่อพวกเขาต่อสู้กับคำถามเหล่านี้ ฉันควรยกเลิกคำตอบหรือไม่? ให้ทีละคำแนะนำ (ฉันทำอย่างนั้นและลงเอยด้วยการแก้ปัญหาด้วยตัวเอง)? หรือเพียงแค่ย้าย (หรืออาจหยุด) กับการสัมภาษณ์? PS เมื่อมีปัญหากับคำถามฉันไม่ได้หมายความว่ามีปัญหาฉันหมายความว่าถ้าพวกเขาไม่สามารถเริ่มต้นได้ นี่เป็นกรณีที่มีฟีโบนักชีและคำถามรายการ

7
เมื่อใดที่ฉันควรใช้คลาส 2 คุณสมบัติเหนือโครงสร้างที่สร้างไว้ล่วงหน้าเช่น KeyValuePair
เมื่อใดที่คุณควรใส่ข้อมูล Key / Value ในคลาสของตัวเองแทนที่จะใช้โครงสร้างทั่วไปที่สร้างไว้ล่วงหน้าเช่น a KeyValuePairหรือ a Tuple? ตัวอย่างเช่น ComboBox ส่วนใหญ่ที่ฉันสร้างมี DisplayName และค่า นี่เป็นข้อมูลประเภทหนึ่งที่ฉันพยายามจะตัดสินใจว่าจะใส่คลาสใหม่เมื่อใดและเมื่อใดควรใช้ KeyValuePair ขณะนี้ฉันกำลังทำงานกับบางสิ่งที่ใช้iCalendarงานอยู่และในที่สุดข้อมูลของผู้ใช้ที่เลือกจะได้รับการรวมกันเป็นkey1=value1;key2=value2;สตริงชนิดหนึ่ง ฉันเริ่มต้นด้วยการใส่ข้อมูลในKeyValuePair<string,string>แต่ตอนนี้ฉันสงสัยว่ามันควรจะเป็นชั้นเรียนของตัวเองแทน โดยรวมแล้วฉันสนใจที่จะทราบว่าจะใช้แนวทางใดเมื่อตัดสินใจใช้โครงสร้าง / คลาสที่มีอยู่เช่นKeyValuePairวัตถุ 2 คุณสมบัติและในสถานการณ์แบบใดที่คุณจะใช้อีกแบบหนึ่ง
31 c#  coding-style 

5
จะดีกว่าที่จะออกแบบจากบนลงล่างหรือล่างขึ้นบน?
ดังที่ฉันเข้าใจการออกแบบจากบนลงล่างคือการปรับแนวคิดระดับสูงที่เป็นนามธรรมลงในคอนกรีตขนาดเล็กและชิ้นส่วนที่เข้าใจได้จนกว่าจะมีการกำหนด Building Block ที่เล็กที่สุด ในขณะที่ล่างขึ้นบนจะกำหนดส่วนที่ต่ำจากนั้นค่อย ๆ สร้างบล็อกระดับที่สูงขึ้นจนกว่าระบบทั้งหมดจะเกิดขึ้น ในทางปฏิบัติได้มีการกล่าวที่ดีที่สุดในการรวมสองวิธี: เริ่มต้นด้วยข้อกำหนดระดับสูงเพื่อระบุความรู้โดเมนความสัมพันธ์และข้อ จำกัด เมื่อเข้าใจปัญหาได้แล้วจะมีการสร้าง Building Block ที่เล็กที่สุดเพื่อสร้างระบบ กระบวนการของ: การสร้างสเป็คความต้องการ สร้างข้อกำหนดการออกแบบ (พร้อมไดอะแกรม) Implement ส่งมอบ ทำซ้ำ (ในการพัฒนาซ้ำ ๆ แทนที่จะทำทั้งก้อนในแต่ละขั้นตอนเราทำกันเล็กน้อยซ้ำแล้วซ้ำอีกและมีการประชุมประจำวันเพื่อปรับให้เข้ากับความต้องการแบบไดนามิกของลูกค้า) ดูเป็นเรื่องปกติสำหรับฉัน (โดยมีรายละเอียดตามแผน) มันมีข้อบกพร่อง แต่นั่นคือสาเหตุที่เราได้รับการพัฒนาซ้ำ: แทนที่จะใช้เวลาในเฟสเดียวกล่าวว่าการวิเคราะห์ความต้องการเพื่อศึกษาทุกสิ่งที่เป็นไปได้ในความรู้ด้านโดเมนซึ่งอาจมีการเปลี่ยนแปลง (อาจเป็นรายวัน) เราทำการวิเคราะห์เล็กน้อย การออกแบบนิดหน่อยแล้วใช้มัน อีกวิธีคือการทำซ้ำแต่ละครั้งเป็นแบบ mini-waterfall ซึ่งจะทำการวิเคราะห์ในสองสามวัน (หรือหนึ่งสัปดาห์) เช่นเดียวกับการออกแบบ เวลาที่เหลือจะถูกนำไปใช้ในการดำเนินการ มีบางอย่างผิดปกติกับวิธีการจากบนลงล่างร่วมกับการพัฒนาแบบวนซ้ำหรือไม่? ในการเขียนโปรแกรมเรียงความของเขาBottom Upดูเหมือนว่า Paul Graham จะสนับสนุนการสร้างจากล่างขึ้นบนอย่างสมบูรณ์หรือตั้งโปรแกรมจากล่างขึ้นบน แต่ไม่ใช่ช่วงการวิเคราะห์ความต้องการ / การออกแบบ: โปรแกรมเมอร์ Lisp ที่มีประสบการณ์แบ่งโปรแกรมต่างกันออกไป …
31 design  c++  lisp 

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

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