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

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

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

8
รายชื่อพจนานุกรม
ดังนั้นฉันจึงเจองานDictionary<int, int>วันนี้ สิ่งนี้ดูแปลกสำหรับฉันเพราะฉันอาจจะใช้List<int>แทน มีความแตกต่างและจะมีกรณีการใช้งานที่โครงสร้างหนึ่งจะเป็นที่ต้องการมากกว่าอีกหรือไม่

4
วันที่ลิขสิทธิ์สำหรับการอัปเดตเป็นโครงการโอเพนซอร์ซเมื่อปีที่แล้ว
ในปี 2011 ฉันเปิดตัวโค้ดโอเพนซอร์ซที่ได้รับใบอนุญาตโดยใช้ใบอนุญาต Apache เช่นนี้ไฟล์ต้นฉบับทั้งหมดจะมีข้อความระบุแผ่นหม้อน้ำที่ด้านบน: /* Copyright 2011 My Name Licensed under the Apache License... <blah blah> */ ดังนั้นตอนนี้ก็คือปี 2012 และฉันพร้อมที่จะเปิดตัวรุ่น 1.1 ดังนั้นไฟล์ต้นฉบับทั้งหมดส่วนใหญ่จึงถูกสัมผัสด้วยวิธีใดวิธีหนึ่ง และเพิ่มไฟล์ซอร์สโค้ดใหม่บางไฟล์ ฉันจะอัปเดตวันที่ลิขสิทธิ์ในไฟล์ที่มีอยู่ได้อย่างไร การปรับปรุงที่ถูกต้องต่อไปนี้เป็นไฟล์ต้นฉบับแต่ละไฟล์หรือไม่? (เช่นเปลี่ยน 2011 เป็น "2011-2012") /* Copyright 2011-2012 My Name Licensed under the Apache License... <blah blah> */ ไฟล์ต้นฉบับใหม่นั้นมีCopyright 2011-2012การนำไปใช้อย่างเท่าเทียมกันเช่นกันหรือไม่? หรือรหัสใหม่เพิ่งได้รับCopyright 2012?

5
ในที่สุดการใช้ประโยคในการทำงานหลังจากกลับมาสไตล์ไม่ดี / เป็นอันตรายหรือไม่?
ในฐานะส่วนหนึ่งของการเขียน Iterator ฉันพบว่าตัวเองเขียนโค้ดต่อไปนี้ (การจัดการข้อผิดพลาดในการลอก) public T next() { try { return next; } finally { next = fetcher.fetchNext(next); } } พบว่าอ่านง่ายกว่าเล็กน้อย public T next() { T tmp = next; next = fetcher.fetchNext(next); return tmp; } ฉันรู้ว่ามันเป็นตัวอย่างง่ายๆที่ความแตกต่างของความสามารถในการอ่านอาจจะไม่มากนัก แต่ฉันสนใจในความคิดเห็นทั่วไปว่าไม่ดีที่จะลองใช้ในที่สุดในกรณีเช่นนี้ที่ไม่มีข้อยกเว้นที่เกี่ยวข้องหรือ ถ้ามันเป็นที่ต้องการจริง ๆ เมื่อมันลดความซับซ้อนของรหัส ถ้ามันไม่ดี: ทำไม สไตล์ประสิทธิภาพข้อผิดพลาด ... ? บทสรุป ขอบคุณคำตอบทั้งหมดของคุณ! ฉันเดาข้อสรุป (อย่างน้อยสำหรับฉัน) คือตัวอย่างแรกอาจอ่านง่ายกว่าถ้ามันเป็นรูปแบบทั่วไป …

7
นิพจน์ทั่วไปทำงานอย่างไร
สมมติว่าคุณมีเอกสารที่เขียนเรียงความ คุณต้องการแยกวิเคราะห์บทความนี้เพื่อเลือกคำบางคำเท่านั้น เย็น. การใช้นิพจน์ทั่วไปเร็วกว่าการแยกวิเคราะห์บรรทัดไฟล์ต่อบรรทัดและต่อคำค้นหาคำหรือไม่? ถ้าเป็นเช่นนั้นมันทำงานอย่างไร คุณไปได้เร็วกว่าการดูแต่ละคำอย่างไร

3
อะไรคือข้อดีและข้อเสียในแนวทางของ C #, Java และ Scala to Closures / Lambdas / …?
ฉันสงสัยว่าสิ่งที่แตกต่างระหว่างดำเนินการทางเทคนิค C # และสกาล่าและวิธีการแก้ปัญหาทั้งเปรียบเทียบกับความคิดของการดำเนินงานและความกังวลเปล่งออกมาในอีเมลPeek อดีตแลมบ์ดาโดยไบรอันเก๊ส่งไปยังรายการทางไปรษณีย์ของโครงการแลมบ์ดา (JSR 335) ? จากอีเมล: เราสำรวจถนนของ "บางที lambdas ควรจะเป็นอินสแตนซ์ของคลาสภายในซึ่งจะง่ายมาก" แต่ในที่สุดก็มาถึงตำแหน่งของ "ฟังก์ชั่นเป็นทิศทางที่ดีกว่าสำหรับอนาคตของภาษา" และต่อไป: มุมมอง lambdas-are-objects ของโลกขัดแย้งกับอนาคตที่เป็นไปได้นี้ มุมมอง lambdas-are-function ของโลกไม่ได้และการรักษาความยืดหยุ่นนี้เป็นหนึ่งในจุดที่สนับสนุน lambdas ที่ไม่ทำให้เกิดภาระด้วยแม้แต่ลักษณะที่ปรากฏของวัตถุ สรุป: Lambdas-are-function เปิดประตู Lambdas-are-objects ปิดพวกเขา เราต้องการเห็นประตูที่เปิดทิ้งไว้ และความคิดเห็นบางส่วนจากบุคคลในเธรด Redditพูดว่า: จริง ๆ แล้วฉันส่งอีเมลถึง Neal Gafter เกี่ยวกับเรื่องนี้และความเข้าใจที่ จำกัด ของฉันเกี่ยวกับการอธิบายของเขา C # และการออกแบบ Java ในปัจจุบันค่อนข้างคล้ายกับที่ผู้ได้รับมอบหมายเป็นวัตถุจริงและไม่ใช่ประเภทการทำงาน ดูเหมือนว่าเขาเชื่อว่า Java ควรเรียนรู้จากข้อเสียของแกะแกะ C # …
30 c#  java  scala  lambda  closures 

7
อะไรคือปัจจัยในการตัดสินใจเลือกเปิดเผยบริการเว็บเป็นบริการ SOAP หรือ REST
เท่าที่ฉันเห็นการบริโภค SOAP ต้องใช้ SOAP stack ดังนั้นจึงยากสำหรับลูกค้าของคุณที่จะใช้เช่นพวกเขาต้องการให้แน่ใจว่าพวกเขามี SOAP stack ในสถานที่ที่จัดรูปแบบข้อมูล POST และส่วนหัวได้อย่างถูกต้อง โครงสร้างข้อมูลในขณะที่ REST คุณเพียงแค่ร้องขอ HTTP GET พร้อมอาร์กิวเมนต์ในสตริงการสืบค้นและรับข้อความที่ฉันคิดว่าน่าจะเป็น XML กลับมา ดังนั้นค่าใช้จ่ายพิเศษ / ความซับซ้อนของ SOAP ให้อะไรคุณเมื่อไหร่ที่คุณต้องการและเมื่อไหร่ที่คุณและคุณควรจะทำโดยไม่ต้องทำ?

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

4
การแย่งชิง: วิธีจัดการกับงานในมือที่มีความยาวมากกว่าหนึ่ง Sprint
ฉันเริ่มต้นด้วย SCRUM และฉันมีปัญหาในการทำความเข้าใจสิ่งหนึ่ง SCRUM จัดการรายการในมือที่ใช้เวลานานกว่าการวิ่งหนึ่งครั้งได้อย่างไร
30 scrum 

14
จะสัมภาษณ์นักวิทยาศาสตร์ธรรมชาติสำหรับตำแหน่งนักพัฒนาได้อย่างไร? [ปิด]
คำถามเดิม ฉันได้สัมภาษณ์ บริษัท ของฉันแล้วส่วนใหญ่นักวิทยาศาสตร์คอมพิวเตอร์สำหรับตำแหน่งนักพัฒนา แต่ก็มีผู้ทดสอบและผู้จัดการโครงการด้วย ตอนนี้ฉันต้องเติมช่องว่างในกลุ่มการวิจัยของเราภายในแผนก R&D (หมายเหตุด้านข้าง: "การวิจัย" หมายความว่าเราพยายามที่จะแก้ปัญหาในโดเมนมืออาชีพ / ตลาดเฉพาะของเราโดยใช้ซอฟต์แวร์ในโครงการวิจัยร่วมกับมหาวิทยาลัย บริษัท อื่น ๆ ศูนย์วิจัย และองค์กรผู้ใช้ปลายทางไม่ใช่งานวิจัยด้านวิทยาศาสตร์คอมพิวเตอร์เราจะไม่แก้ปัญหา P = NP) ตอนนี้เราเชิญคนที่ถือ MSc สาขาวิชาเคมี (มีวิชาฟิสิกส์มากมายใน CV ของเขาด้วย) ที่ไม่เคยเรียนวิชาวิทยาศาสตร์คอมพิวเตอร์มาก่อน ฉันได้พูดคุยกับเขาประมาณครึ่งชั่วโมงในวันทำงานในมหาวิทยาลัยท้องถิ่นและไม่ต้องสงสัยเลยว่าผู้ชายฉลาด เครื่องหมายของเขานั้นยอดเยี่ยมและเขาก็จบด้วยความแตกต่าง สำหรับวิทยาศาสตรบัณฑิตของเขาเขาจำเป็นต้องสอนการเขียนโปรแกรมด้วยตัวเองใน Mathematica และบอกฉันด้วยความเชื่อมั่นว่าเขาชอบเขียนโปรแกรมมาก นอกจากนี้เขายังแก้ไขปัญหาทางเคมีกายภาพบางอย่างที่ฉันอาจไม่เข้าใจโดยใช้ซอฟต์แวร์ของเขาเองซึ่งนำไปใช้ใน Mathematica สำหรับวิทยานิพนธ์ปริญญาโทของเขา มันมี GUI และขนาดที่น่าทึ่งของ 8,000 LoC ดูเหมือนว่าเขาจะถูกดึงดูดอย่างมากจากสิ่งที่เราทำในกลุ่มการวิจัยของเราและบอกตามตรงว่ามันค่อนข้างยากสำหรับ SME เช่นเราที่จะได้คนดี ฉันยังสนใจที่จะจ้างเขาเพราะเขาสามารถช่วยฉันในการเขียนข้อเสนอโครงการรายงานการนำเสนอผลงานและอื่น ๆ เขาอาจจะเหมาะกับทีมของเราเช่นกัน คำถามเดียวที่เหลือคือ: ฉันจะตรวจสอบได้อย่างไรว่าเขาจะได้รับทักษะการเขียนโปรแกรมที่จำเป็นสำหรับการติดตั้งซอฟต์แวร์ในโครงการของเราหรือไม่เพราะนี่จะเป็นส่วนสำคัญของงาน แน่นอนฉันจะถามเขาว่ามันคืออะไรที่น่าสนใจเกี่ยวกับการเขียนโปรแกรม ฉันจะถามด้วยว่าเขายังคงเขียนซอฟต์แวร์วิทยาศาสตร์ธรรมชาติของเขาอย่างไรและเขาสร้างมันอย่างไร …
30 interview  hiring 

17
การแนะนำการเขียนโปรแกรมให้นักคณิตศาสตร์ [ปิด]
ตอนนี้ฉันเป็นโปรแกรมเมอร์ฉันอายุเกือบ 16 ปีและได้ลดอาชีพของฉันลงไปจนถึงระดับปริญญาวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรรมไฟฟ้า (ฉันรู้ว่าพวกเขาแตกต่างกันมาก แต่คำถามนี้เกี่ยวกับเพื่อนของฉัน) เพื่อนไม่แน่ใจ เขาเป็นที่สนใจอย่างมากในวิชาคณิตศาสตร์และเป็นสิ่งที่ดีมากที่มันและผมคิดว่าเขาจะสนุกกับการเขียนโปรแกรม แต่เขาไม่เต็มใจที่จะลอง ( แก้ไขเขาเป็นเต็มใจที่จะลอง แต่ไม่เคยทำมาก่อน) ทุกคนสามารถให้คำแนะนำสำหรับภาษาหรือเครื่องมือที่เขาสามารถตะลุยในการเขียนโปรแกรม (ในระดับพื้นฐานที่สมเหตุสมผลฉันสมมติ) เพื่อแก้ปัญหาคณิตศาสตร์หรือเกี่ยวข้องกับคณิตศาสตร์บางประเภท อย่างที่ฉันบอกว่าเขาสนุกกับคณิตศาสตร์มาก แต่ฉันคิดว่าเขาจะสนุกกับการเขียนโปรแกรมปัญหาคือฉันไม่ต้องการให้เขาถูกนำออกโดยสิ่งที่ไม่เกี่ยวข้องในระดับเบื้องต้นเช่นการจัดสรรหน่วยความจำและคณะ ฉันรู้ว่ามันสำคัญมาก แต่ประเด็นก็คือฉันต้องการให้เขาเรียนรู้การเขียนโปรแกรมด้วยคณิตศาสตร์สักเล็กน้อยจากนั้นก็หวังว่าถ้าเขาสนใจพอเขาสามารถเริ่มเรียนรู้การเขียนโปรแกรมเป็นการเขียนโปรแกรม แก้ไข: ไม่ใช่ว่าเขาไม่สนใจอย่างสมบูรณ์ - ยิ่งกว่านั้นเขาไม่ได้สำรวจพื้นที่อย่างแข็งขันมาก่อนอาจเป็นเพราะเขาไม่ได้รับแจ้งเกี่ยวกับเรื่องนี้ ฉันไม่ต้องการบังคับให้เขาทำสิ่งที่เขาไม่ต้องการฉันเห็นสิ่งนี้เป็นการผลักดันเล็กน้อยเพื่อให้เขาสามารถเรียนรู้เกี่ยวกับการเขียนโปรแกรม ถ้าเขาไม่ชอบมัน - ยุติธรรมมากพอฉันไม่สามารถควบคุมมันได้และไม่ต้องการ แต่ถ้าเขาชอบมันมันจะเป็นสิ่งที่ถูกต้อง
30 education  math 

10
ผู้สนับสนุนการเขียนโปรแกรมเชิงฟังก์ชั่นจะตอบข้อความนี้ใน Code Complete อย่างไร
ในหน้า 839 ของรุ่นที่สอง Steve McConnell กำลังพูดถึงวิธีการทั้งหมดที่โปรแกรมเมอร์สามารถ "พิชิตความซับซ้อน" ในโปรแกรมขนาดใหญ่ เคล็ดลับของเขาถึงจุดสูงสุดด้วยข้อความนี้: "การเขียนโปรแกรมเชิงวัตถุให้ระดับของนามธรรมที่ใช้กับอัลกอริธึมและข้อมูลในเวลาเดียวกันซึ่งเป็นนามธรรมชนิดหนึ่งที่การสลายตัวของฟังก์ชั่นเพียงอย่างเดียวไม่ได้ให้" เมื่อรวมกับข้อสรุปของเขาว่า "การลดความซับซ้อนนั้นเป็นกุญแจสำคัญที่สุดในการเป็นโปรแกรมเมอร์ที่มีประสิทธิภาพ" (หน้าเดียวกัน) สิ่งนี้ดูเหมือนจะเป็นความท้าทายอย่างมากสำหรับการเขียนโปรแกรมเชิงหน้าที่ การถกเถียงกันระหว่าง FP และ OO มักถูกนำเสนอโดย FP proponents เกี่ยวกับปัญหาของความซับซ้อนที่เกิดขึ้นโดยเฉพาะจากความท้าทายของการเกิดพร้อมกันหรือการขนาน แต่การทำงานพร้อมกันนั้นไม่ได้เป็นเพียงความซับซ้อนของโปรแกรมเมอร์ซอฟต์แวร์เท่านั้นที่จะต้องมีชัย บางทีการมุ่งเน้นไปที่การลดความซับซ้อนหนึ่งประเภทนั้นเพิ่มขึ้นอย่างมากในมิติอื่น ๆ เช่นในหลาย ๆ กรณีกำไรที่ได้ไม่คุ้มกับต้นทุน หากเราเปลี่ยนเงื่อนไขของการเปรียบเทียบระหว่าง FP และ OO จากประเด็นเฉพาะเช่นการเห็นพ้องด้วยหรือนำกลับมาใช้ใหม่เพื่อการจัดการความซับซ้อนระดับโลกการอภิปรายนั้นจะมีลักษณะอย่างไร แก้ไข ความแตกต่างที่ฉันต้องการเน้นคือ OO ดูเหมือนว่าจะห่อหุ้มและเป็นนามธรรมห่างจากความซับซ้อนของข้อมูลและอัลกอริทึมในขณะที่ฟังก์ชั่นการเขียนโปรแกรมฟังก์ชั่นดูเหมือนสนับสนุนให้รายละเอียดการดำเนินงานของโครงสร้างข้อมูล ดูตัวอย่างเช่น Stuart Halloway (ผู้เสนอชื่อ Clojure FP) ที่นี่บอกว่า "ข้อมูลจำเพาะของประเภทข้อมูล" เป็น "ผลลัพธ์เชิงลบของลักษณะ OO แบบใช้สำนวน" และนิยมวางแนวคิด …

4
โทรซอฟต์แวร์ GPL จากซอฟต์แวร์ที่ไม่ใช่ GPL
ฉัน (ตามกฎหมาย) ใช้โปรแกรมที่เผยแพร่ภายใต้ GPL จากโปรแกรมอื่นที่ฉันกำลังเขียนอยู่หรือไม่และไม่ต้องเคารพ GPL (สำหรับโปรแกรมที่ฉันเขียน) ตัวอย่างเช่นฉันมี GUI ที่ใช้โปรแกรม (ซึ่งอยู่ภายใต้ GPL) ฉันสามารถซ่อนรหัสใน GUI และขายได้หรือไม่
30 gpl 

3
ความสัมพันธ์ระหว่าง BDD และ TDD
ความสัมพันธ์ของ BDD และ TDD คืออะไร? จากสิ่งที่ฉันเข้าใจ BDD เพิ่มสองสิ่งสำคัญเหนือ TDD: การทดสอบการตั้งชื่อ (มั่นใจ / ควร) และการทดสอบการยอมรับ ฉันควรติดตาม TDD ในระหว่างการพัฒนาโดย BDD หรือไม่ ถ้าใช่จะทำการตั้งชื่อการทดสอบหน่วย TDD ของฉันในแบบเดียวกันให้แน่ใจว่า / ควรมีสไตล์?
30 tdd  bdd 

13
“ White-Board-Coding” ไม่เหมาะสมในระหว่างการสัมภาษณ์หรือไม่? [ปิด]
นี่เป็นคำถามแบบอัตนัย แต่ฉันชอบที่จะได้ยินความคิดเห็น / ความคิดเห็นจากผู้สัมภาษณ์ / ผู้ให้สัมภาษณ์ในหัวข้อ เราแบ่งการสัมภาษณ์ทางเทคนิคออกเป็น 4 ส่วน เขียนรหัสอ่านและวิเคราะห์รหัสออกแบบเซสชัน & รหัสบนกระดานไวท์บอร์ด สำหรับส่วนสุดท้ายสิ่งที่เราขอให้ผู้สัมภาษณ์ทำคือเขียนโค้ดขนาดเล็ก (4-5 บรรทัด) ลงบนไวท์บอร์ดและอธิบายขณะที่พวกเขาผ่านมันไป ให้ฉันชัดเจนว่าจุดประสงค์คือไม่ให้จับคนอื่น เราไม่ได้หาไวยากรณ์ที่สมบูรณ์แบบ แม้มันจะเป็นรหัสหลอกก็ได้ แต่ประเด็นก็คือให้ปัญหาที่ง่ายมากแก่พวกเขาและดูว่าสมองของพวกเขาสามารถสื่อสารแก้ปัญหาให้เราได้หรือไม่ จากปัญหาง่าย ๆ ฉันหมายถึง "Reverse a string", "FizzBuzz" ฯลฯ ... โปรดทราบว่าเรามักจะถามภาษาที่ชัดเจนก่อนเสมอ เราเป็น. NET C # house เราแค่พูดว่า "หลอกรหัส" ที่มีคนว่างเปล่า / ดิ้นรนกับรหัสจริงๆ คำถามของฉันคือ"มันไม่เหมาะสม / ไม่มีเหตุผลที่คาดหวังว่าโปรแกรมเมอร์จะเขียนข้อมูลโค้ดบนไวท์บอร์ดระหว่างการสัมภาษณ์หรือไม่"

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