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

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

6
สิ่งที่จำเป็นต้องเปลี่ยนเพื่อให้วิศวกรรมซอฟต์แวร์กลายเป็นอาชีพที่เป็นทางการ
แตกต่างจากอาชีพอื่น ๆ (เช่นการบัญชี, กฎหมาย, การแพทย์, ฯลฯ ) ไม่มีการรับรองทั่วทั้งอาชีพสำหรับวิศวกรรมซอฟต์แวร์ ฉันตระหนักดีถึงความหลากหลายของเทคโนโลยีและวิธีการรับรองเฉพาะที่มีจุดประสงค์เพื่อใช้เป็นหลักฐานของความเชี่ยวชาญและประสบการณ์ แต่ไม่มีสังคมวิศวกรรมซอฟต์แวร์สาธารณะ / องค์กรปกครองที่กำหนด (และมีอำนาจในการประเมินตามกฎหมาย) มาตรฐานวิชาชีพที่ยอมรับโดยทั่วไป . ฉันเข้าใจว่าซอฟต์แวร์นั้นเป็นสัตว์เดรัจฉาน - เป็นส่วนศิลปะศาสตร์ - แต่ฉันสงสัยว่าวิศวกรรมซอฟต์แวร์มีศักยภาพที่จะเป็นอาชีพที่เป็นทางการหรือไม่ อะไรคือสิ่งที่ต้องเปลี่ยนแปลงเพื่อให้เกิดสิ่งนี้และมันจะเป็นสิ่งที่ดีหรือไม่? (ถ้าใครรู้การวิจัยอย่างเป็นทางการในหัวข้อนี้ฉันจะขอบคุณอ้างอิงอย่างมาก) ปรับปรุง ฉันเห็นด้วยกับคะแนนที่ดีมากมายด้านล่างเกี่ยวกับการรับรองระดับปัจจุบันในวิศวกรรมซอฟต์แวร์ ฉันยังพบว่ามันน่าสนใจมากที่บางประเทศถือว่าวิศวกรรมซอฟต์แวร์เป็นอาชีพในขณะที่คนอื่นไม่ทำ อย่างไรก็ตามดูเหมือนว่าจะมีผ้าห่อศพล้อมรอบคำว่า "วิชาชีพที่เป็นทางการ" และจะนำไปใช้กับวิศวกรรมซอฟต์แวร์อย่างไร ฉันคิดว่าประเด็นสำคัญของวิศวกรรมซอฟต์แวร์ - และเหตุผลหลักที่ไม่ใช่อาชีพที่เต็มไปด้วยลม - นั่นคือถ้าคุณเป็นวิศวกรซอฟต์แวร์ที่ได้รับการรับรองและ - ตัวอย่างเช่น - ซอฟต์แวร์บางอย่างที่คุณเขียนเพื่อลิฟต์ทำงานผิดปกติและฆ่าคน การรับรองและ / หรือการเป็นสมาชิกของคุณกับองค์กรวิชาชีพที่เป็นทางการจะไม่ถูกเพิกถอน แน่นอนว่า บริษัท ของคุณอาจถูกฟ้องร้องเป็นล้านและคุณอาจสูญเสียงานของคุณและได้รับการอ้างอิงที่ไม่ดี แต่โดยทั่วไปแล้วคุณจะได้รับการคุ้มครองโดยบุคคลที่มีความรับผิด จำกัด อันเป็นผลมาจากการถูกว่าจ้างโดย บริษัท ดังกล่าว ในคำอื่น ๆ …

2
ฉันควรทำตามแนวทางใดในขณะออกแบบห้องสมุด?
ฉันกำลังทำงานในโครงการ Arduino โดยใช้ Uno โครงการมีรหัสจำนวนมาก ฉันต้องการสร้างห้องสมุดและฉันสามารถแชร์ในภายหลังได้ ฉันควรทำตามแนวทางใดในขณะออกแบบห้องสมุด?

3
ใครเป็นเจ้าของรหัสถ้าโครงการถูกยกเลิก [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ปัญหา: ฉันทำงานในตลาดอิสระและฉันตัดสินใจยกเลิกโครงการกับหนึ่งในลูกค้าของฉันเพราะลูกค้าเป็นไปไม่ได้ที่จะทำงานกับความล่าช้าที่ไม่ จำกัด และข้อบกพร่องมากมายในแบ็กเอนด์ของเขา ฉันต้องการคืนเงินให้เขาบางส่วน (บางส่วนเพราะฉันทำงานสองเดือนและมีรหัส 3k บรรทัดแม้ว่าแอปพลิเคชันยังไม่ทำงานเนื่องจากปัญหาจากแบ็กเอนด์ของเขา) คำถาม: ใครคือ "เจ้าของ" ของรหัสที่ฉันได้เขียน? เราไม่ได้ตกลงเกี่ยวกับเรื่องนี้เมื่อโครงการเริ่มต้นขึ้น ฉันจะบอกให้เขาไม่ใช้รหัสได้หรือไม่? ฉันเข้าใจว่าเขาสามารถเพิกเฉยต่อการห้ามของฉันต่อไปฉันแค่อยากรู้ว่าฉันมี "สิทธิ" อย่างเป็นทางการที่จะพูดเช่นนั้น

3
การทอโค้ด Byte กับ Lisp แมโคร
ฉันได้อ่านเกี่ยวกับห้องสมุดที่ผู้คนเขียนสำหรับภาษาอย่าง Java และ C # ซึ่งใช้ประโยชน์จากรหัสไบต์ที่ทอผ้าเพื่อทำสิ่งต่าง ๆ เช่นการตัดการเรียกใช้ฟังก์ชันการแทรกรหัสการบันทึก ฯลฯ ฉันได้อ่านมาโคร Lisp / Clojure ด้วย พยายามเข้าใจวิธีการใช้งานให้ดีขึ้น ยิ่งฉันอ่านมาโครมากเท่าไหร่ก็ยิ่งมีความสามารถในการทำงานเหมือนกับไลบรารีการทอโค้ดไบต์ โดยฟังก์ชั่นฉันหมายถึงความสามารถในการจัดการรหัสในเวลารวบรวม ตัวอย่างของห้องสมุดที่ฉันดูอยู่จะเป็น AspectJ, PostSharp และ Cecil มีสิ่งใดบ้างที่สามารถทำได้กับสิ่งหนึ่งและอีกอันหนึ่งไม่ใช่หรือ พวกเขาแก้ปัญหาเดียวกันได้จริงหรือฉันกำลังเปรียบเทียบแอปเปิ้ลกับส้ม?

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

2
การมอบหมายคืออะไรและทำไมจึงมีความสำคัญในการเขียนโปรแกรม iOS
ในขณะที่ฉันสอนตัวเองการเขียนโปรแกรม iOS และแนวคิดหนึ่งที่ฉันคิดว่ายากมากที่จะสรุปคือการมอบหมาย มันคืออะไร? ทำไมและมีการใช้อย่างไร? ข้อดีคืออะไร การเขียนทางเทคนิคจากหนังสือที่ฉันอ่านทำให้ยากที่จะเข้าใจ

3
แนวปฏิบัติที่ดีที่สุดสำหรับการแคชการแบ่งหน้าผลลัพธ์ที่การสั่งซื้อ / คุณสมบัติสามารถเปลี่ยนแปลงได้คืออะไร
แนวปฏิบัติที่ดีที่สุดสำหรับการแคชผลลัพธ์การค้นหาที่มีการเปลี่ยนแปลงการสั่งซื้อ / คุณสมบัติสามารถทำได้อย่างไร? พูดในแอปพลิเคชันของฉันมีคนต้องการเห็น 20 กระทู้การสนทนาล่าสุด (จาก 10,000) คำขอจะถูกส่งไปยังฐานข้อมูลservletเพื่อดึงข้อมูล 20 รายการแรกจากตารางหัวข้อการสนทนาเป็น XML / JSON หากพวกเขาต้องการที่จะเห็น 20 ถัดไปพวกเขาไปที่หน้าถัดไปของผลลัพธ์และสิ่งนี้จะดับคำขออื่นเพื่อรับล็อตถัดไป เพื่อลดการโหลดเซิร์ฟเวอร์และการรอลูกค้าฉันต้องการแคชหน้าผลลัพธ์ก่อนหน้า อย่างไรก็ตามฉันมีสองคำถาม: ตารางที่แสดงผลลัพธ์สามารถสั่งซื้อได้โดยมากกว่าหนึ่งแอตทริบิวต์ (เช่นวันที่สร้างเธรด, ผู้เขียนเธรด, วันสุดท้าย) ซึ่งหมายความว่าคำสั่งเช่น 'ผลลัพธ์ 20 อันดับแรก' ไม่มีเหตุผลหากไม่มีบริบท (กล่าวคือเรากำลังจัดเรียงอะไร) ส่วนหน้าแล้วสื่อสารกับส่วนหลังสิ่งที่โหลดไปแล้วได้อย่างไร ความคิดแรกของฉันคือการใช้ ID สำหรับแต่ละผลลัพธ์ แต่การส่งกลับไปที่เซิร์ฟเวอร์ตามคำขอในภายหลัง ฉันจะทำสิ่งนี้ได้อย่างไร จะเกิดอะไรขึ้นหากแอตทริบิวต์ของผลลัพธ์ที่ส่งคืนก่อนหน้านี้ (เช่นล่าสุดหลังวันที่) มีการเปลี่ยนแปลง จากนั้นเราต้องการวิธีการตรวจสอบผลลัพธ์แต่ละรายการเพื่อดูว่ามีการแก้ไขฝั่งเซิร์ฟเวอร์หรือไม่เนื่องจากมีการทำเพจเอาต์ฉันจะทำสิ่งนี้ได้อย่างไร

2
.Net ผู้พัฒนาพยายามเรียนรู้ทับทิมบนราง
ฉันเป็นนักพัฒนา. NET และฉันมีโอกาสได้เล่นกับ Ruby on Rails ในสุดสัปดาห์นี้ ใน. NET เราแยกเลเยอร์ของแอปพลิเคชันโดยการสร้างโครงการไลบรารีคลาสแยกต่างหาก จากมุมมองรูปแบบการออกแบบเราต้องทำเช่นนั้นใน Rails ด้วยหรือเป็นเพียงโครงการเดียวที่มีทุกอย่างในนั้นหรือไม่

3
รูปแบบของผู้จัดพิมพ์กับผู้สมัครสมาชิกและเครื่องปฏิกรณ์แตกต่างกันอย่างไร
รูปแบบการเผยแพร่และสมัครสมาชิกเครื่องปฏิกรณ์มีลักษณะคล้ายกับฉันมาก แตกต่างกันอย่างไร ในทั้งสองรูปแบบข้อความจะถูกส่งผ่านไปยังสมาชิกทางอ้อม (ฟังในรูปแบบของเครื่องปฏิกรณ์) ฉันรู้สึกว่ารูปแบบของผู้สังเกตการณ์คล้ายกับอีกสองรูปแบบเช่นกัน อะไรคือความแตกต่างที่สำคัญระหว่างรูปแบบเหล่านั้น

6
การเปลี่ยนแปลงใดที่ใหญ่เกินกว่าจะออกแบบได้โดยง่าย
นี่เป็นคำถามที่ค่อนข้างคลุมเครือ แต่เป็นสิ่งที่ฉันไม่เคยรู้สึกว่าได้รับคำตอบอย่างน่าพอใจเมื่ออ่านเกี่ยวกับการออกแบบที่เหมาะสม โดยทั่วไปเมื่อเรียนรู้เกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ, นามธรรม, แยกตัวประกอบ ฯลฯ จอกศักดิ์สิทธิ์ของการออกแบบ - และเหตุผลที่พวกเขาอ้างเสมอว่าคุณใช้เทคนิคการพัฒนาที่เป็นปัญหา - คือมันจะทำให้โปรแกรมของคุณ "ง่ายต่อการเปลี่ยนแปลง" , "maintainable", "ยืดหยุ่น" หรือคำพ้องความหมายใด ๆ ที่ใช้เพื่อแสดงแนวคิดเกี่ยวกับการผลิตที่ทำให้เกิดเสียงดังกล่าว ด้วยการทำเครื่องหมายส่วนตัวของ ivars ให้แยกรหัสออกเป็นวิธีเล็ก ๆ ที่มีอยู่ในตัวเองทำให้อินเตอร์เฟสทั่วไปทำให้คุณสามารถปรับเปลี่ยนโปรแกรมของคุณได้อย่างง่ายดาย สำหรับการเปลี่ยนแปลงที่ค่อนข้างเล็กสิ่งนี้ใช้ได้ดีสำหรับฉัน การเปลี่ยนแปลงโครงสร้างข้อมูลภายในที่ใช้โดยคลาสเพื่อเพิ่มประสิทธิภาพไม่เคยมีความยุ่งยากที่สำคัญและไม่มีการเปลี่ยนแปลงส่วนท้ายของส่วนต่อประสานผู้ใช้ที่เป็นอิสระจาก API เช่นการออกแบบระบบป้อนข้อความใหม่หรือปรับปรุงกราฟิกสำหรับองค์ประกอบการเล่นเกม . การเปลี่ยนแปลงทั้งหมดเหล่านี้ดูเหมือนมีอยู่ในตัวเองโดยเนื้อแท้ ไม่มีสิ่งใดที่เกี่ยวข้องกับการเปลี่ยนแปลงพฤติกรรมหรือการออกแบบองค์ประกอบของโปรแกรมของคุณที่ได้รับการแก้ไขตราบใดที่รหัสภายนอกเกี่ยวข้อง ไม่ว่าคุณจะเขียนขั้นตอนหรือในสไตล์ OO ที่มีฟังก์ชั่นขนาดใหญ่หรือขนาดเล็กการเปลี่ยนแปลงเหล่านี้ง่ายต่อการเปลี่ยนแปลงแม้ว่าคุณจะมีการออกแบบที่ดีพอสมควรก็ตาม อย่างไรก็ตามเมื่อใดก็ตามที่การเปลี่ยนแปลงมีขนาดใหญ่และมีขนฟูนั่นคือการเปลี่ยนแปลง API - ไม่มีรูปแบบ "อันมีค่า" ของฉันเลยที่จะช่วยเหลือ การเปลี่ยนแปลงครั้งใหญ่ยังคงใหญ่รหัสที่ได้รับผลกระทบยังคงได้รับผลกระทบและงานการวางไข่หลายชั่วโมงอยู่ข้างหน้าฉัน ดังนั้นคำถามของฉันคือสิ่งนี้ การออกแบบที่เหมาะสมนั้นมีการเปลี่ยนแปลงขนาดใหญ่เพียงใดเพื่อให้สามารถอำนวยความสะดวกได้? มีเทคนิคการออกแบบเพิ่มเติมบางอย่างไม่เป็นที่รู้จักสำหรับฉันหรือฉันล้มเหลวในการใช้งานที่ทำให้การปรับเปลี่ยนที่ทำให้เกิดเสียงง่าย ๆ หรือเป็นสัญญานั้น (ซึ่งฉันได้ยินจากกระบวนทัศน์ที่แตกต่างกันมากมาย) เป็นแนวคิดที่ดี ตัดการเชื่อมต่ออย่างสมบูรณ์จากความจริงที่ไม่เปลี่ยนรูปแบบของการพัฒนาซอฟต์แวร์? มี "เครื่องมือเปลี่ยน" …

5
ฉันควรใช้วิธีนามธรรมหรือเสมือน?
หากเราสมมติว่ามันไม่เป็นที่พึงปรารถนาสำหรับคลาสฐานที่จะเป็นคลาสอินเตอร์เฟสที่บริสุทธิ์และใช้ 2 ตัวอย่างจากด้านล่างซึ่งเป็นวิธีที่ดีกว่าโดยใช้คำนิยามคลาสของวิธีนามธรรมหรือเสมือน? ข้อได้เปรียบของเวอร์ชั่น "นามธรรม" คือมันอาจดูสะอาดและบังคับให้คลาสที่ได้รับมาเพื่อให้การใช้งานมีความหมายอย่างมีความหวัง ข้อได้เปรียบของเวอร์ชัน "เวอร์ชวล" คือสามารถดึงโมดูลได้ง่ายและใช้สำหรับการทดสอบโดยไม่ต้องเพิ่มเฟรมพื้นฐานมากมายเหมือนเวอร์ชั่นนามธรรมที่ต้องการ เวอร์ชั่นบทคัดย่อ: public abstract class AbstractVersion { public abstract ReturnType Method1(); public abstract ReturnType Method2(); . . public abstract ReturnType MethodN(); ////////////////////////////////////////////// // Other class implementation stuff is here ////////////////////////////////////////////// } รุ่นเสมือน: public class VirtualVersion { public virtual ReturnType Method1() { return …
11 c#  design 

4
การออกแบบรูปแบบคำสั่ง
ฉันมีการใช้รูปแบบคำสั่งเก่านี้ เป็นการผ่านบริบทผ่านการใช้งานDIOperationทั้งหมดแต่ฉันรู้ในภายหลังในกระบวนการเรียนรู้และการเรียนรู้ (ที่ไม่เคยหยุดนิ่ง) นั่นไม่เหมาะสม ฉันยังคิดว่า "การเยี่ยมชม" ที่นี่ไม่เหมาะและสับสนจริงๆ จริง ๆ แล้วฉันกำลังคิดที่จะเปลี่ยนรหัสของฉันอีกครั้งเนื่องจากคำสั่งไม่ควรรู้อะไรเกี่ยวกับผู้อื่นและในขณะนี้พวกเขาทั้งหมดใช้คู่ค่าคีย์เดียวกัน มันยากที่จะรักษาคลาสที่เป็นเจ้าของคีย์ - ค่าซึ่งบางครั้งนำไปสู่ตัวแปรที่ซ้ำกัน ตัวอย่างกรณีการใช้งานสมมติว่าCommandBต้องการชื่อผู้ใช้ที่CommandAกำหนดไว้ CommandA ควรตั้งค่าUserNameForCommandB = Johnหรือไม่ หรือพวกเขาควรแบ่งปันชื่อผู้ใช้ทั่วไป= John key-value หรือไม่ จะเกิดอะไรขึ้นหากชื่อผู้ใช้ถูกใช้โดยคำสั่งที่สาม ฉันจะปรับปรุงการออกแบบนี้ได้อย่างไร ขอบคุณ! class DIParameters { public: /** * Parameter setter. */ virtual void setParameter(std::string key, std::string value) = 0; /** * Parameter getter. */ virtual std::string getParameter(std::string …

1
มีการศึกษาเชิงประจักษ์เกี่ยวกับผลกระทบของการคอมเม้นท์ซอร์สโค้ดต่อคุณภาพของซอฟต์แวร์ความสามารถในการบำรุงรักษาและประสิทธิภาพของนักพัฒนาหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นผู้สนับสนุนให้ความเห็นเกี่ยวกับซอร์สโค้ดและการทำเอกสารผลิตภัณฑ์ซอฟต์แวร์ มันเป็นประสบการณ์ส่วนตัวและการสังเกตของฉันว่าการทำงานกับซอร์สโค้ดที่แสดงความคิดเห็นอย่างจริงจังได้ช่วยฉันในรูปแบบที่แตกต่างกันเมื่อฉันต้องเติบโตซอฟต์แวร์หรือบำรุงรักษามัน อย่างไรก็ตามมีอีกค่ายหนึ่งที่กล่าวว่าการแสดงความคิดเห็นนั้นไร้ค่าในที่สุดหรือคุณค่าของมันนั้นน่าสงสัย ผู้เสนอการเข้ารหัสจำนวนมากโดยไม่แสดงความเห็นแย้งว่า: หากโค้ดหนึ่งชิ้นเขียนได้ดีก็จะเป็นการอธิบายตนเองและไม่จำเป็นต้องแสดงความคิดเห็น หากโค้ดหนึ่งชิ้นไม่สามารถอธิบายตัวเองได้ให้ทำการรีแฟคเตอร์ใหม่และทำให้มันอธิบายได้ด้วยตนเองเพื่อที่ว่ามันจะไม่ต้องการความคิดเห็นใด ๆ ชุดทดสอบของคุณคือเอกสารสด เมื่อเวลาผ่านไปรหัสและความคิดเห็นไม่ซิงค์กันและจะกลายเป็นแหล่งที่มาของอาการปวดหัว Agile กล่าวว่ารหัสการทำงานสำคัญกว่ากองเอกสารดังนั้นเราจึงสามารถละเว้นการเขียนความคิดเห็นได้อย่างปลอดภัย สำหรับฉันนี่เป็นเพียงความเชื่อ อีกครั้งการสังเกตส่วนตัวของฉันคือซอฟต์แวร์ที่เขียนโดยทีมนักพัฒนาที่ชาญฉลาดและมีประสบการณ์ท้ายที่สุดก็จบลงด้วยรหัสจำนวนมากที่ไม่ได้อธิบายตัวเอง อีกครั้งที่ Java API, Cocoa API, Android API ฯลฯ แสดงว่าหากคุณต้องการเขียนและดูแลรักษาเอกสารที่มีคุณภาพเป็นไปได้ การพูดถึงสิ่งเหล่านี้การสนทนาเกี่ยวกับข้อดีข้อเสียของการจัดทำเอกสารและการแสดงความคิดเห็นในซอร์สโค้ดที่อิงตามความเชื่อส่วนตัวมักจะไม่จบลงและนำไปสู่ข้อสรุปที่ไม่พึงพอใจ ดังนั้นฉันกำลังมองหาเอกสารทางวิชาการและการศึกษาเชิงประจักษ์เกี่ยวกับผลกระทบของเอกสารประกอบซอฟต์แวร์โดยเฉพาะการแสดงความคิดเห็นซอร์สโค้ดต่อคุณภาพและการบำรุงรักษารวมถึงผลกระทบต่อประสิทธิภาพการทำงานของทีม คุณได้สะดุดกับบทความดังกล่าวและสิ่งที่เป็นผลของพวกเขาถ้ามี?

2
'รหัสเอียง' คืออะไร
ในหนังสือ O'Reilly ใน Scala ฉันอ่านว่าการวางสำเนาของรหัสสร้างขึ้น: ... สร้างประเด็นของรหัสบวม, การบำรุงรักษาและลาด , ฉันไม่เห็นคำจำกัดความที่ชัดเจนของคำว่าเอียงในบริบท ฉันตระหนักถึงปัญหาของการคัดลอกวาง แต่ฉันไม่สามารถทำให้พอดีกับคำว่า 'เอียง' เนื่องจากสิ่งนี้ถูกใช้ในหนังสือ O'Reilly ฉันเดาว่ามันเป็นคำที่ใช้ในการเขียนโปรแกรมอย่างแท้จริง ตัวชี้ใด ๆ

3
โครงข่ายประสาทเทียมสามารถให้คำตอบมากกว่า "ใช่" หรือ "ไม่" ได้หรือไม่?
ทุกตัวอย่างเครือข่ายประสาทสำหรับการรับรู้ภาพฉันได้อ่านเกี่ยวกับการผลิตคำตอบง่าย ๆ "ใช่" หรือ "ไม่" โหนดทางออกหนึ่งสอดคล้องกับ "ใช่นี่คือรูปใบหน้าของมนุษย์" และโหนดหนึ่งตรงกับ "ไม่นี่ไม่ใช่รูปใบหน้าของมนุษย์" ฉันเข้าใจว่าสิ่งนี้น่าจะเป็นคำอธิบายที่ง่าย แต่ฉันสงสัยว่าเครือข่ายนิวรัลนั้นสามารถตั้งโปรแกรมให้เอาต์พุตที่เจาะจงมากขึ้นได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันกำลังจำแนกสัตว์ แทนที่จะพูดว่า "สัตว์" หรือ "ไม่ใช่สัตว์" ฉันต้องการคำตอบเช่น "สุนัข", "ปลา", "นก", "งู" ฯลฯ ด้วยโหนดทางออกสุดท้ายหนึ่งเป็น "ไม่ใช่สัตว์ / ฉัน ไม่รู้จักสิ่งนี้ " ฉันแน่ใจว่าสิ่งนี้จะต้องเป็นไปได้ แต่ฉันมีปัญหาในการทำความเข้าใจวิธีการ ดูเหมือนว่าเนื่องจากการฝึกอบรมการ backpropogation ของข้อผิดพลาดในขณะที่คุณฝึกฝนโหนดทางออกหนึ่ง (เช่น "นี่คือสุนัข") และน้ำหนักของเซลล์ประสาทจะเปลี่ยนไปดังนั้นสถานะอุดมคติสำหรับโหนดทางออกอื่นที่คุณก่อนหน้านี้ ได้รับการฝึกฝนแล้ว (เช่น "นี่คือนก") จะเริ่มเบี่ยงเบนและในทางกลับกัน ดังนั้นการฝึกอบรมเครือข่ายให้จดจำหมวดหมู่หนึ่งจะก่อวินาศกรรมการฝึกอบรมใด ๆ ที่ทำขึ้นสำหรับหมวดหมู่อื่นจึง จำกัด ให้เราออกแบบ "ใช่" หรือ "ไม่" ง่าย ๆ …

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