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

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

3
BASIC ค้นหาคำสั่ง NEXT ที่ไม่เป็นไปตามคำสั่งได้อย่างไรเมื่อลำตัววนซ้ำถูกข้ามไป
ตั้งค่าเครื่อง WABAC , Sherman คำถามนี้เกี่ยวกับ BASIC โดยทั่วไปและโดยเฉพาะของ Microsoft BASIC-80 โรงเรียนเก่าขั้นพื้นฐาน ด้วยหมายเลขบรรทัด ล่ามขั้นพื้นฐานแบบเก่า (หรือมากกว่านั้น) มีวิธีจัดการอย่างไร ... NEXT ลูปเมื่อตัวลูปไม่ได้ถูกดำเนินการและคำสั่ง NEXT นั้นไม่เป็นระเบียบ? คำสั่ง NEXT ที่เลิกใช้แล้วจากเวลาก่อน: นี่คือรูทีนย่อยจากเกมAwariจาก"101 Basic Computer Games"ของDavid H. Ahl : 200 K=M:GOSUB 600 205 E=0:IF K>6 THEN K=K-7 210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K 215 FOR I=0 TO 5:IF B(I)<>0 THEN 230 …

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

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

9
มี OOP การเรียนรู้ที่แตกต่างกันในภาษาการเขียนโปรแกรมที่แตกต่างกันหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเรียนรู้ OOP ฉันรู้จัก Python และฉันรู้เรื่องเล็ก ๆ น้อย ๆ เกี่ยวกับ OOP แต่เมื่อฉันค้นหา "เรียนรู้ OOP" ในฟอรัมฉันเห็นชายคนหนึ่งพูดว่า "Python ใหม่มากนั่นคือสาเหตุที่คุณไม่สามารถเรียนรู้ OOP บน Python ได้คุณควรเรียนรู้ Java แล้วเข้าใจ OOP บน Java" จริงป้ะ? มีความเข้าใจที่แตกต่างกัน OOP ในภาษาการเขียนโปรแกรมที่แตกต่างกันหรือไม่? ชอบเรียนรู้เกี่ยวกับ Java, C #, C ++, Perl หรือ Python หรือไม่

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

1
การเปลี่ยนลายเซ็นวิธีการสำหรับการใช้งานคลาสใน PHP
มีการทำงานที่ดีในการขาด Generics ของ PHP ที่ช่วยให้การตรวจสอบรหัสคงที่เพื่อตรวจสอบความสอดคล้องของประเภท? ฉันมีคลาสนามธรรมที่ฉันต้องการ sub-class และบังคับใช้วิธีการอย่างใดอย่างหนึ่งเปลี่ยนจากการรับพารามิเตอร์ชนิดหนึ่งการรับพารามิเตอร์ซึ่งเป็น sub-class ของพารามิเตอร์นั้น abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } สิ่งนี้ไม่ได้รับอนุญาตใน PHP เพราะมันเปลี่ยนลายเซ็นวิธีที่ไม่ได้รับอนุญาต ด้วย generics สไตล์ Java คุณสามารถทำสิ่งที่ชอบ: abstract class AbstractProcessor<T> { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor<WoodItem> { …

6
เหตุใดเธรดจึงเรียกว่าเธรด
ฉันเข้าใจว่ากระบวนการเป็นหน่วยของการเป็นเจ้าของทรัพยากรและคำแนะนำในการปฏิบัติการ เธรดอนุญาตให้กระบวนการแบ่งปันทรัพยากรด้วยการประมวลผลหลายครั้งและง่ายกว่าสำหรับ OS ที่จะกำหนดเวลาเธรดเนื่องจากโอเวอร์เฮดทั้งหมดที่เกี่ยวข้องกับกระบวนการทั้งหมด แต่ทำไมด้ายชื่อ? มันมีการอ้างอิงถึงสตริงหรือ interleaving ของการดำเนินการบางอย่าง? ถึงอย่างนั้นนี่ไม่ใช่คำศัพท์ที่เข้าใจง่ายในความคิดของฉัน

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

2
DDD: วัตถุที่ไม่เปลี่ยนรูปสามารถเป็นเอนทิตีได้หรือไม่
ฉันได้อ่านโพสต์นับไม่ถ้วนเกี่ยวกับความแตกต่างระหว่างเอนทิตีและออบเจ็กต์ค่าและในขณะที่ฉันคิดว่าอย่างน้อยที่สุดฉันเข้าใจว่าแนวคิดทั้งสองแตกต่างกันอย่างไรปรากฏว่าในผู้เขียนบทความบางคนพิจารณาว่า มีการเปลี่ยนรูป (ดังนั้นสถานะจะไม่เปลี่ยนแปลงอย่างน้อยภายในรูปแบบโดเมนนั้น) คุณเห็นด้วยหรือไม่ว่าหากสถานะของวัตถุจะไม่เปลี่ยนแปลงภายในโมเดลโดเมนใด ๆ วัตถุนี้จะไม่เป็นนิติบุคคลหรือไม่ ทำไม?

2
อะไรคือเหตุผลที่มาตรฐาน C พิจารณาข้อเสียแบบวนซ้ำ?
มาตรฐาน C99 ระบุไว้ใน 6.5.16: 2: ผู้ประกอบการที่ได้รับมอบหมายจะต้องมีค่า lvalue ที่สามารถแก้ไขได้เป็นตัวถูกดำเนินการด้านซ้าย และใน 6.3.2.1:1: lvalue ที่แก้ไขได้คือ lvalue ที่ไม่มีประเภทอาร์เรย์, ไม่มีประเภทที่ไม่สมบูรณ์, ไม่มีประเภทที่ผ่านการรับรองและถ้าเป็นโครงสร้างหรือสหภาพไม่มีสมาชิกใด ๆ (รวมถึงสมาชิกแบบเรียกซ้ำสมาชิกใด ๆ ) หรือองค์ประกอบของมวลรวมหรือสหภาพที่มีอยู่ทั้งหมด) ที่มีประเภทที่ผ่านการรับรอง ตอนนี้ขอพิจารณาไม่ใช่const structมีconstข้อมูล typedef struct S_s { const int _a; } S_t; ตามมาตรฐานรหัสต่อไปนี้คือพฤติกรรมที่ไม่ได้กำหนด (UB): S_t s1; S_t s2 = { ._a = 2 }; s1 = s2; ปัญหาทางความหมายของเรื่องนี้คือสิ่งที่แนบมาเอนทิตี้ของ ( …
9 design  c 

7
ความสำคัญคือการเริ่มต้นตัวแปร
การกำหนดค่าเริ่มต้นสำคัญอย่างไร การเริ่มต้นที่เหมาะสมหลีกเลี่ยงการรั่วไหลของหน่วยความจำหรือมีข้อได้เปรียบด้านประสิทธิภาพหรือไม่?

4
ที่วัตถุใน CQRS + ES ควรเริ่มต้นอย่างสมบูรณ์: ในตัวสร้างหรือเมื่อใช้เหตุการณ์แรก?
ดูเหมือนจะมีข้อตกลงอย่างกว้างขวางในชุมชน OOP ที่ตัวสร้างคลาสไม่ควรปล่อยให้วัตถุบางส่วนหรือไม่เตรียมการอย่างเต็มที่ ฉันหมายถึงอะไรโดย "การเริ่มต้น"? ประมาณพูดที่อะตอมกระบวนการที่จะนำวัตถุที่สร้างขึ้นใหม่ในสภาพที่ทั้งหมดของค่าคงที่ระดับนี้ถือเป็น มันควรเป็นสิ่งแรกที่เกิดขึ้นกับวัตถุ (ควรเรียกใช้เพียงครั้งเดียวต่อวัตถุ) และไม่ควรอนุญาตสิ่งใด ๆ ให้จับวัตถุที่ยังไม่ได้เริ่มต้น (ดังนั้นคำแนะนำบ่อยครั้งในการดำเนินการเริ่มต้นวัตถุในคลาส Constructor ด้วยเหตุผลเดียวกันInitializeวิธีการที่มักจะขมวดคิ้วเมื่อเหล่านี้แตกอะตอมและทำให้เป็นไปได้ที่จะได้รับและใช้วัตถุที่ยังไม่ได้ อยู่ในสถานะที่กำหนดไว้อย่างดี) ปัญหา:เมื่อรวม CQRS กับการจัดหาเหตุการณ์ (CQRS + ES) ซึ่งการเปลี่ยนแปลงสถานะทั้งหมดของวัตถุถูกจับในชุดลำดับเหตุการณ์ (กระแสเหตุการณ์) ที่สั่งไว้ฉันสงสัยว่าเมื่อวัตถุมาถึงสถานะเริ่มต้นเต็มที่: ในตอนท้ายของตัวสร้างคลาสหรือหลังจากเหตุการณ์แรกถูกนำไปใช้กับวัตถุหรือไม่ หมายเหตุ:ฉันไม่ต้องการใช้คำว่า "มวลรวมราก" หากคุณต้องการให้แทนที่เมื่อใดก็ตามที่คุณอ่าน "วัตถุ" ตัวอย่างสำหรับการอภิปราย:สมมติว่าแต่ละวัตถุมีการระบุIdค่าทึบแสงบางอย่าง(คิดว่า GUID) กระแสเหตุการณ์ที่เป็นตัวแทนของการเปลี่ยนแปลงสถานะของวัตถุนั้นสามารถระบุได้ในที่เก็บเหตุการณ์ด้วยIdค่าเดียวกัน: (ไม่ต้องกังวลเกี่ยวกับลำดับเหตุการณ์ที่ถูกต้อง) interface IEventStore { IEnumerable<IEvent> GetEventsOfObject(Id objectId); } สมมติต่อไปว่ามีสองประเภทวัตถุและCustomer ShoppingCartมามุ่งเน้นที่ShoppingCart: เมื่อสร้างแล้วตะกร้าสินค้านั้นว่างเปล่าและต้องเชื่อมโยงกับลูกค้าหนึ่งราย บิตสุดท้ายนั้นเป็นค่าคงที่ของคลาส: ShoppingCartวัตถุที่ไม่เกี่ยวข้องกับ a Customerอยู่ในสถานะที่ไม่ถูกต้อง ใน OOP แบบดั้งเดิมเราอาจทำแบบนี้ในตัวสร้าง: …

2
มีทางเลือกอื่นสำหรับสแต็ก + ฮีป + โมเดลหน่วยความจำสแตติก
โปรแกรมทั้งหมดที่ฉันได้เห็นจัดระเบียบหน่วยความจำข้อมูลลงในสแต็คการโทรหนึ่งครั้งขึ้นไป (ปกติขนาดคงที่ แต่บางครั้งก็ไม่ใช่) ฮีปและหน่วยความจำแบบสแตติก เมื่อเร็ว ๆ นี้ที่จัดเก็บแบบคงที่ของเธรดแบบโลคัลถูกเพิ่มเข้ากับสิ่งนี้เช่นกัน มีความพยายามใด ๆ ในการจัดระเบียบเค้าโครงหน่วยความจำข้อมูลด้วยวิธีที่แตกต่างอย่างสิ้นเชิงเช่นไม่มี call stack หรือไม่? หรือจัดระเบียบหน่วยความจำในวิธีอื่นที่ทำสิ่งเดียวกันสำเร็จ?

4
.NET Programming และคลาส POCO
ฉันมีความคิดในคืนนี้ขณะที่ไตร่ตรองเกี่ยวกับแอปพลิเคชันบางอย่างที่ฉันต้องเปลี่ยนและทำให้ฉันคิดได้ เอนทิตีกรอบเอนทิตีเป็น POCO (ธรรมดา CLR วัตถุเก่า) และรูปแบบที่ใช้ใน ASP.NET MVC ก็มักจะ POCO นี่หมายถึงคุณสมบัติโดยทั่วไปไม่มีวิธีการ ตอนนี้การเขียนโปรแกรม OO ตามปกติจะอนุญาตให้วัตถุห่อหุ้มการทำงานของมันซึ่งรวมถึงคุณสมบัติของมันเช่นเดียวกับวิธีการของมันซึ่งจะช่วยให้เกิดความหลากหลาย ด้วยการเพิ่มขึ้นของคลาส POCO ที่ใช้รูปแบบการออกแบบเช่นที่เก็บทั่วไปกลายเป็นที่นิยมมากขึ้น เมื่อก่อนวัตถุของฉันจะมีการดำเนินการ CRUD ของตัวเองตอนนี้ฉันมีพวกเขาในพื้นที่เก็บข้อมูล นี่เป็นเพียงวิวัฒนาการใน OO ที่การดำเนินการ CRUD ถูกลบออกจากวัตถุเพื่อให้สามารถแยกหรือการดำเนินการ CRUD อาจไม่ได้อยู่ในระดับวัตถุในอดีตและฉันผิด ห่าบางทีทั้งสองอย่างถูกต้องตามกฎหมายและได้รับเสมอ มันเป็นเพียงข้อสังเกตที่ทำให้ฉันคิดดังนั้นฉันจึงคิดว่าจะหาความคิดเห็นอื่น

4
ทำไมข้อมูลขนาดใหญ่จำเป็นต้องใช้งานได้?
ฉันเริ่มทำงานในโครงการใหม่ที่เกี่ยวข้องกับ Big Data สำหรับการฝึกงานของฉัน ผู้จัดการของฉันแนะนำให้เริ่มการเรียนรู้การเขียนโปรแกรมฟังก์ชั่น (พวกเขาขอแนะนำสกาล่า) ฉันมีประสบการณ์ที่ต่ำต้อยโดยใช้ F # แต่ฉันไม่เห็นความสำคัญของการใช้กระบวนทัศน์การเขียนโปรแกรมนี้เนื่องจากมีราคาแพงในบางกรณี คณบดีพูดคุยเกี่ยวกับหัวข้อนี้ที่น่าสนใจและแบ่งปันความคิดของเขาว่าทำไม "Big Data" ที่นี่: http://www.youtube.com/watch?v=DFAdLCqDbLQ แต่มันไม่สะดวกเพราะ Big Data ไม่ได้แปล Hadoop เท่านั้น ในฐานะที่เป็น BigData แนวคิดที่คลุมเครือมาก ฉันลืมไปซักพักแล้ว ฉันพยายามหาตัวอย่างง่ายๆหนึ่งตัวอย่างเพื่อเปรียบเทียบระหว่างแง่มุมต่าง ๆ เมื่อเราจัดการกับข้อมูลเพื่อดูว่าวิธีการใช้งานมีราคาแพงหรือไม่ หากการเขียนโปรแกรมเชิงฟังก์ชั่นมีราคาแพงและใช้หน่วยความจำสำหรับข้อมูลขนาดเล็กทำไมเราต้องใช้กับ Big Data? นอกเหนือจากเครื่องมือแฟนซีฉันพยายามสร้างวิธีแก้ปัญหาสำหรับปัญหาเฉพาะและเป็นที่นิยมโดยใช้สามวิธีคือวิธีที่จำเป็นและวิธีการใช้งาน (การเรียกซ้ำโดยใช้คอลเลกชัน) ฉันเปรียบเทียบเวลาและความซับซ้อนเพื่อเปรียบเทียบระหว่างสามแนวทาง ฉันใช้ Scala เพื่อเขียนฟังก์ชันเหล่านี้เนื่องจากเป็นเครื่องมือที่ดีที่สุดในการเขียนอัลกอริทึมโดยใช้กระบวนทัศน์สามแบบ def main(args: Array[String]) { val start = System.currentTimeMillis() // Fibonacci_P val s = …

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