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

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

5
UTF-8 จะสามารถรองรับภาษาต่างประเทศที่มีตัวละครใหม่นับล้านตัวได้หรือไม่?
ในกรณีที่มีการบุกรุกจากมนุษย์ต่างดาวและเราถูกบังคับให้สนับสนุนภาษาของพวกเขาในทุกระบบคอมพิวเตอร์ที่มีอยู่ของเรา UTF-8 ได้รับการออกแบบมาเพื่อให้สามารถใช้อักขระจำนวนมากได้หรือไม่? (แน่นอนเราไม่ทราบว่ามนุษย์ต่างดาวมีภาษาจริง ๆ มีวิธีสื่อสารกันหรือไม่ แต่เพื่อการโต้แย้งโปรดลองจินตนาการว่าพวกเขาทำ) ตัวอย่างเช่นหากภาษาของพวกเขาประกอบด้วยร่ายมนตร์ที่ค้นพบใหม่สัญลักษณ์และ / หรือการรวมตัวอักษร UTF-8 ในทางทฤษฎีสามารถขยายได้ในลักษณะที่ไม่แตกหักเพื่อรวมร่ายมนตร์ใหม่เหล่านี้และยังรองรับซอฟต์แวร์ที่มีอยู่ทั้งหมดหรือไม่ ฉันสนใจมากขึ้นถ้าร่ายมนตร์ไกลเกินขีด จำกัด ขนาดปัจจุบันและต้องการไบต์เพิ่มขึ้นเพื่อแทนร่ายมนตร์เดียว ในกรณีที่ไม่สามารถขยายUTF-8 ได้หรือไม่นั่นพิสูจน์ได้ว่าข้อได้เปรียบเดียวของ UTF-32 นั้นคือขนาดของตัวอักษรที่ต่ำกว่าหรือไม่?
86 unicode  utf-8 

11
การทดสอบหน่วยจะช่วยให้ซิตี้กรุ๊ปหลีกเลี่ยงข้อผิดพลาดราคาแพงนี้หรือไม่
ฉันอ่านเกี่ยวกับ snafu นี้: ค่าใช้จ่ายข้อผิดพลาด Programming ซิตี้กรุ๊ป $ 7 หลังจากการทำธุรกรรมที่ legit เข้าใจผิดว่าเป็นข้อมูลการทดสอบเป็นเวลา 15 ปี เมื่อระบบเปิดตัวในกลางปี ​​1990 รหัสโปรแกรมจะกรองธุรกรรมใด ๆ ที่ได้รับรหัสสาขาสามหลักจาก 089 ถึง 100 และใช้คำนำหน้าเหล่านั้นเพื่อวัตถุประสงค์ในการทดสอบ แต่ในปี 1998 บริษัท เริ่มใช้รหัสสาขาตัวอักษรและตัวเลขเมื่อขยายธุรกิจ ในหมู่พวกเขาคือรหัส 10B, 10C และอื่น ๆ ซึ่งระบบถือว่าอยู่ในช่วงที่ยกเว้นและการทำธุรกรรมของพวกเขาจะถูกลบออกจากรายงานใด ๆ ที่ส่งไปยังสำนักงาน ก.ล.ต. (ฉันคิดว่าสิ่งนี้แสดงให้เห็นว่าการใช้ตัวบ่งชี้ข้อมูลที่ไม่ชัดเจนคือ ... ย่อยที่ดีที่สุดมันจะดีกว่ามากที่จะเติมและใช้Branch.IsLiveคุณสมบัติที่ชัดเจนเชิงความหมาย) นอกเหนือจากนั้นปฏิกิริยาแรกของฉันคือ "การทดสอบหน่วยจะช่วยให้ที่นี่" ... แต่พวกเขาจะ? ฉันเพิ่งอ่านว่าเพราะเหตุใดการทดสอบหน่วยส่วนใหญ่จึงหมดความสนใจและดังนั้นคำถามของฉันคืออะไรการทดสอบหน่วยที่จะล้มเหลวในการแนะนำรหัสสาขาตัวอักษรและตัวเลขมีลักษณะอย่างไร

10
ทำไมอลันเคย์ถึงพูดว่า“ อินเทอร์เน็ตทำได้ดีมาก แต่เว็บเป็นมือสมัครเล่น”?
ตกลงดังนั้นฉันถอดความ อ้างเต็ม: อินเทอร์เน็ตทำได้ดีมากจนคนส่วนใหญ่คิดว่ามันเป็นทรัพยากรธรรมชาติเช่นมหาสมุทรแปซิฟิกแทนที่จะเป็นสิ่งที่มนุษย์สร้างขึ้น ครั้งสุดท้ายที่เทคโนโลยีที่มีสเกลเช่นนั้นปราศจากข้อผิดพลาดเกิดขึ้นเมื่อใด เว็บในการเปรียบเทียบเป็นเรื่องตลก เว็บทำโดยมือสมัครเล่น - อลันเคย์ ฉันกำลังพยายามทำความเข้าใจประวัติของอินเทอร์เน็ตและเว็บและข้อความนี้ยากที่จะเข้าใจ ฉันได้อ่านที่อื่นว่าอินเทอร์เน็ตใช้สิ่งที่แตกต่างจากตอนนี้มากและมันอาจเป็นปัจจัย อะไรทำให้อินเทอร์เน็ตทำได้ดีมากและอะไรที่ทำให้เว็บไม่ชำนาญ (แน่นอนอลันเคย์ผิดพลาดและไม่มีใครอยู่ที่นี่คืออลันเคย์ดังนั้นเราจึงไม่สามารถรู้ได้อย่างแม่นยำว่าทำไมเขาถึงพูดแบบนั้น แต่มีคำอธิบายอะไรที่เป็นไปได้บ้าง) * โปรดดูบทสัมภาษณ์ต้นฉบับ *

5
สำหรับเทียบกับ foreach กับ LINQ
เมื่อฉันเขียนโค้ดใน Visual Studio, ReSharper (ขอให้พระเจ้าคุ้มครองมัน!) มักจะแนะนำให้ฉันเปลี่ยนโรงเรียนเก่าของฉันสำหรับวงในรูปแบบ foreach ขนาดกะทัดรัดมากขึ้น และบ่อยครั้งที่ฉันยอมรับการเปลี่ยนแปลงนี้ ReSharper ก้าวไปข้างหน้าและแนะนำให้ฉันเปลี่ยนอีกครั้งในรูปแบบ LINQ ดังนั้นฉันสงสัยว่า: มีข้อได้เปรียบจริงบ้างไหมในการปรับปรุงเหล่านี้ ในการใช้งานโค้ดอย่างง่าย ๆ ฉันไม่เห็นการเพิ่มความเร็ว (ชัด) แต่ฉันเห็นโค้ดน้อยลงและอ่านง่ายขึ้น ... ดังนั้นฉันจึงสงสัยว่า: มันคุ้มหรือไม่
86 c#  linq 

10
ทำไมจำนวนผู้ส่ง Git เพิ่มขึ้นอย่างฉับพลันในกราฟ Debian popcon ในปี 2010-01
เกือบทุกบทความที่ฉันได้อ่าน1 การเปรียบเทียบ Git และ Mercurial ดูเหมือนว่า Mercurial จะมีบรรทัดคำสั่ง UX ที่ดีกว่าโดยที่แต่ละคำสั่งถูก จำกัด เพียงหนึ่งแนวคิดเท่านั้น (ต่างจากที่พูดgit checkout) แต่เมื่อถึงจุดหนึ่ง Git ก็เริ่มได้รับความนิยมสูงสุดและจำนวนผู้ส่ง Git บนกราฟ Debian popcon (ดูภาพกราฟด้านล่าง) ระเบิดอย่างแท้จริง ที่มา: Debian เกิดอะไรขึ้นในปี 2010-01 ว่ามีการเปลี่ยนแปลงอย่างกระทันหัน ดูเหมือนว่า GitHub ก่อตั้งขึ้นเร็วกว่านั้นในปี 2008
86 git  history  mercurial 

6
ข้อดีของการใช้จาวาสคริปต์แท้ผ่าน JQuery
อะไรคือข้อดีของการใช้ Javascript อย่างเดียวเมื่อเทียบกับการใช้ JQuery เท่านั้น? ฉันมีประสบการณ์ จำกัด เกี่ยวกับการเข้ารหัส JavaScript และ JQuery ฉันได้เพิ่มบิตและตัวอย่างของแต่ละหน้าไปยังหน้า HTML แต่ฉันส่วนใหญ่เขียนสิ่งฝั่งเซิร์ฟเวอร์ในภาษาอื่น ๆ ฉันสังเกตว่าในขณะที่คุณสามารถทำสิ่งเดียวกันในทางทฤษฎีโดยใช้วิธีใดวิธีหนึ่งจากสองวิธี (และแน่นอนว่าคุณสามารถผสม 'em up ในโครงการเดียวกัน) ดูเหมือนว่ามีแนวโน้มที่จะเริ่มใช้ JQuery ตั้งแต่ต้น ไม่ว่าโครงการนั้นต้องการอะไร ดังนั้นฉันเพียงแค่สงสัยว่ามีประโยชน์ตรงเวลาที่จะไม่ใช้ JQuery เท่านั้น แต่แทนที่จะใช้ JavaScript เก่าธรรมดา? ฉันรู้ว่าสิ่งนี้ดูเหมือนว่าไม่ใช่คำถามเพราะสามารถพูดได้ว่า "ไม่มีคำตอบที่ชัดเจน" หรือ "มันสามารถถกเถียงกันได้ตลอดกาล" แต่จริง ๆ แล้วฉันหวังว่าจะได้คำตอบตรงเวลาเช่น "คุณสามารถทำได้ใน วิธีการหนึ่งและคุณไม่สามารถทำได้ด้วยวิธีอื่น " ตามความคิดเห็นของ scrwtp ฉันไม่ได้อ้างถึงเฉพาะในส่วนการจัดการ DOM คำถามของฉันค่อนข้าง: JQuery เป็นห้องสมุด สำหรับ Javascript สิ่งที่ฉันแปลกเกี่ยวกับห้องสมุดนี้เมื่อเทียบกับห้องสมุดอื่น …

2
ความแตกต่างระหว่างตัวเรือนแบบขอบมุมแบบตัวพิมพ์ฐานและแบบเส้นขอบมีความแตกต่างกันอย่างไร
ฉันไม่ใช่เจ้าของภาษา ในภาษาของฉันฉันรู้ถึงคำศัพท์บางคำที่ใช้อ้างถึงเงื่อนไขที่ตรวจสอบเพื่อหยุดการเรียกซ้ำและเงื่อนไขที่ตรวจสอบสำหรับกรณีที่รุนแรงไม่น่าจะเป็นไปได้ ในภาษาอังกฤษฉันเจอคำว่า "edge case", "corner case", "boundary case" และ "base case" แต่ฉันไม่สามารถเข้าใจความแตกต่างได้และใช้เพื่ออ้างอิงถึงสิ่งใด ฉันชอบที่จะสรุปความแตกต่างระหว่างพวกเขา โดยเฉพาะอย่างยิ่งฉันจะมีความสุขมากถ้าใครบางคนสามารถให้คำอธิบายประกอบสำหรับบรรทัดในตัวอย่างรหัสต่อไปนี้: int transmogrify(int n) { 1. assert(n <= 1000000); 2. if (n < 0) return -1; 3. if (n == 1000000) return PRE_CALC; 4. if (n == 0) return n+1; // For stopping the recursion 5. …

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

21
คุณจะตอบสนองอย่างไรถ้ามีคนบอกว่ารหัสของคุณยุ่งเหยิง?
ฉันเป็นโปรแกรมเมอร์ที่ดีหรือฉันคิดอย่างนั้นมาก่อน ฉันรักการเขียนโปรแกรมเสมอ และฉันต้องการเรียนรู้หลายสิ่งหลายอย่างเกี่ยวกับการเขียนโปรแกรมเพื่อทำให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้น ฉันศึกษาการเขียนโปรแกรมเป็นเวลา 1 ปีและตอนนี้ฉันทำงานเป็นโปรแกรมเมอร์เกือบ 2 ปี ดังนั้นในระยะสั้นฉันมีประสบการณ์การเขียนโปรแกรมเกือบ 3 ปี ทีมงานของเราประกอบด้วยโปรแกรมเมอร์ 5 คนและเรา 4 คนใหม่ 1 คนมีประสบการณ์มากกว่า 3 ปี เราได้ทำงานกับโปรแกรมมาเกือบปีแล้วและไม่มีใครเคยตรวจสอบรหัสของฉันและฉันได้รับหน้าที่ให้ทำงานด้วย เราไม่เคยมีรีวิวรหัสและเราใหม่ทั้งหมดดังนั้นเราไม่ทราบว่ารหัสที่สะอาดดูเหมือนอะไร ฉันคิดว่าโปรแกรมเมอร์เรียนรู้ด้วยตัวเองเหรอ? เราปรับใช้โปรแกรมของเรากับโปรแกรมโดยไม่มีการทดสอบอย่างละเอียด ตอนนี้มันแน่นและเราต้องได้รับการอนุมัติและตรวจสอบรหัสก่อนที่เราจะทำการเปลี่ยนแปลงกับรหัส เป็นครั้งแรกที่มีคนตรวจสอบรหัสของฉันและเขาบอกว่ามันไม่เป็นระเบียบ ฉันรู้สึกเศร้าและเจ็บปวดมาก ฉันรักการเขียนโปรแกรมและทำให้พวกเขาพูดอะไรบางอย่างที่ทำให้ฉันเจ็บจริงๆ ฉันต้องการพัฒนาตนเอง แต่ดูเหมือนว่าฉันไม่ใช่โปรแกรมเมอร์อัจฉริยะเหมือนในภาพยนตร์ คุณสามารถให้คำแนะนำกับฉันให้ดีขึ้นได้อย่างไร คุณเคยพบเห็นบางสิ่งที่วิจารณ์รหัสของคุณและคุณรู้สึกเจ็บจริง ๆ ไหม? คุณทำอะไรกับเหตุการณ์เหล่านั้น

7
ประวัติของเหตุใดไบต์ถึงแปดบิต?
สิ่งที่กองกำลังทางประวัติศาสตร์ในการทำงานการแลกเปลี่ยนที่จะทำในการตัดสินใจที่จะใช้กลุ่มแปดบิตเป็นหน่วยพื้นฐาน? มีเครื่องใช้ครั้งหนึ่งเคยใช้คำขนาดอื่น แต่วันนี้สำหรับผู้ที่ไม่ใช่แปดคนคุณต้องมองไปที่ชิ้นส่วนพิพิธภัณฑ์ชิปพิเศษสำหรับการใช้งานแบบฝังและ DSP ไบต์วิวัฒนาการมาจากความวุ่นวายและความคิดสร้างสรรค์ในยุคแรก ๆ ของการออกแบบคอมพิวเตอร์อย่างไร ฉันสามารถจินตนาการได้ว่าบิตที่น้อยลงจะไม่มีประสิทธิภาพในการจัดการข้อมูลเพียงพอที่จะทำให้การคำนวณเป็นไปได้ในขณะที่หลาย ๆ คนอาจทำให้ฮาร์ดแวร์มีราคาแพง มีอิทธิพลอื่น ๆ ในการเล่นหรือไม่? เหตุใดแรงเหล่านี้จึงสมดุลกันถึงแปดบิต (BTW ถ้าฉันสามารถเดินทางข้ามเวลาได้ฉันจะกลับไปเมื่อ "ไบต์" ถูกประกาศให้เป็น 8 บิตและโน้มน้าวให้ทุกคนทำให้มันเป็น 12 บิตติดสินบนพวกเขาด้วยเครื่องประดับเล็ก ๆ แห่งศตวรรษที่ 21)
86 history  hardware  byte  bit 

17
สิ่งที่ต้องทำความคิดเห็นทำให้รู้สึก? [ปิด]
ฉันกำลังทำงานในโครงการขนาดใหญ่พอสมควรและได้รับงานแปล มีป้ายกำกับจำนวนมากที่ไม่ได้รับการแปลและในขณะที่ฉันกำลังขุดหารหัสฉันพบรหัสชิ้นนี้ //TODO translations นี่ทำให้ฉันคิดถึงความรู้สึกของความคิดเห็นเหล่านี้กับตัวเอง (และคนอื่น ๆ ?) เพราะฉันรู้สึกว่านักพัฒนาส่วนใหญ่หลังจากที่พวกเขาทำโค้ดบางอย่างเสร็จแล้วและทำในสิ่งที่ควรจะทำ เพื่อรักษาหรือเพิ่มฟังก์ชันการทำงานใหม่ เพื่อที่TODOจะได้หายไปเป็นเวลานาน มันสมเหตุสมผลหรือไม่ที่จะเขียนความคิดเห็นนี้หรือควรเขียนลงในไวท์บอร์ด / กระดาษ / อย่างอื่นที่พวกเขายังคงอยู่ในความสนใจของนักพัฒนา?

6
ความแตกต่างระหว่างสถานะและไร้สัญชาติคืออะไร?
หนังสือและเอกสารเกี่ยวกับ MVC เป็นเพียงกองในการใช้เงื่อนไข Stateful และไร้สัญชาติ บอกตามตรงฉันไม่สามารถคว้าความคิดของมันสิ่งที่หนังสือกำลังพูดถึง พวกเขาไม่ได้ยกตัวอย่างให้เข้าใจสถานะใดสถานะหนึ่งแทนที่จะบอกว่า HTTP นั้นไร้สถานะและด้วย ASP.NET MVC microsoft ก็จะเข้ากันได้ดี ฉันขาดความรู้พื้นฐานบ้างไหมเพราะฉันไม่สามารถเข้าใจสิ่งที่เป็นรัฐและทำไมรัฐจึงเหมือนกันและไร้สัญชาติ ตัวอย่างที่ง่ายและสั้นที่พูดถึงการควบคุมเช่นปุ่มหรือกล่องข้อความสามารถทำให้เข้าใจได้ง่ายขึ้น

5
เสียงสัญญาณเตือนดังกราวสำหรับการพัฒนา Objective-C
ในฐานะโปรแกรมเมอร์ C & Objective-C ฉันรู้สึกหวาดระแวงเล็กน้อยกับแฟล็กการเตือนของคอมไพเลอร์ ฉันมักจะพยายามค้นหารายการคำเตือนทั้งหมดสำหรับคอมไพเลอร์ที่ฉันใช้และเปิดใช้งานส่วนใหญ่ยกเว้นว่าฉันมีเหตุผลที่ดีจริง ๆ ที่จะไม่เปิดใช้งาน โดยส่วนตัวฉันคิดว่าสิ่งนี้อาจช่วยพัฒนาทักษะการเขียนโค้ดรวมถึงการพกพาโค้ดที่อาจเกิดขึ้นป้องกันปัญหาบางอย่างเนื่องจากมันบังคับให้คุณระวังทุกรายละเอียดเล็กน้อยการใช้งานที่อาจเกิดขึ้นและปัญหาด้านสถาปัตยกรรมและอื่น ๆ ... มันเป็นความคิดของฉันเป็นเครื่องมือการเรียนรู้ที่ดีทุกวันแม้ว่าคุณจะเป็นโปรแกรมเมอร์ที่มีประสบการณ์ สำหรับส่วนที่เป็นอัตนัยของคำถามนี้ฉันสนใจที่จะได้ยินนักพัฒนาอื่น ๆ (ส่วนใหญ่ C, Objective-C และ C ++) เกี่ยวกับหัวข้อนี้ คุณสนใจเกี่ยวกับสิ่งต่าง ๆ เช่นคำเตือนเกี่ยวกับเด็ก ๆ หรือไม่? และถ้าใช่หรือไม่ใช่ทำไม ตอนนี้เกี่ยวกับ Objective-C ฉันเพิ่งเปลี่ยนมาใช้LLVM toolchain (กับ Clang) แทน GCC ในรหัสการผลิตของฉันฉันมักจะตั้งค่าสถานะการเตือนนี้ (ชัดเจนแม้ว่าบางคนอาจจะครอบคลุมโดย -Wall): -ผนัง -Wbad ฟังก์ชั่หล่อ -Wcast ชิด -Wconversion -Wdeclaration หลังจากคำสั่ง -Wdeprecated-การใช้งาน -Wextra -Wfloat เท่ากับ …

8
จะดีกว่าการทำเอกสารฟังก์ชั่นในไฟล์ส่วนหัวหรือไฟล์ต้นฉบับ?
ในภาษาที่แยกความแตกต่างระหว่างไฟล์ "แหล่งที่มา" และ "ส่วนหัว" (ส่วนใหญ่ C และ C ++) จะดีกว่าฟังก์ชั่นเอกสารในไฟล์ส่วนหัวหรือไม่: (ขโมยจากCCAN ) /** * time_now - return the current time * * Example: * printf("Now is %lu seconds since epoch\n", (long)time_now().tv_sec); */ struct timeval time_now(void); หรือในไฟล์ต้นฉบับ? (ขโมยจาก PostgreSQL) /* * Convert a UTF-8 character to a Unicode code point. * …
86 c++  c  headers 

19
ทำไม OCaml จึงไม่เป็นที่นิยมมากกว่า?
ผมเคยได้ยินเสมอว่าซีเป็นภาษาของทางเลือกที่จะใช้สำหรับระบบฝังตัวหรือสิ่งที่ต้องการที่จะทำงานที่ความเร็วสูงสุด ฉันไม่เคยพัฒนาความชื่นชอบให้กับ C ส่วนใหญ่เป็นเพราะฉันไม่ชอบเลขคณิตของตัวชี้และภาษาแทบจะไม่ดังไปกว่าแอสเซมเบลอร์ ในทางตรงกันข้ามภาษา ML นั้นใช้งานได้ภาษาที่รวบรวมขยะและ OCaml มีรูปแบบวัตถุ แต่พวกเขาก็มีชื่อเสียงในด้านความรวดเร็วเท่ากับภาษา C. ML มีสิ่งที่เป็นนามธรรมทุกคนสามารถขอให้เขียนในระดับสูงกระชับ รหัส แต่ยังคงความเร็วที่จำเป็นสำหรับการเขียนแอปพลิเคชันประสิทธิภาพสูง โดยเฉพาะอย่างยิ่ง OCaml สามารถใช้งานได้ทุกที่ที่ C ใช้แบบดั้งเดิมเช่นสำหรับอุปกรณ์ฝังตัว, ไดรเวอร์กราฟิก, ระบบปฏิบัติการ ฯลฯ โดยสิทธิทั้งหมด OCaml ควรจะครองโลก แต่ตอนนี้แทบไม่มีใครได้ยินภาษา แต่เพียงผู้เดียว ใช้มัน นี่เป็นคำถามแบบอัตนัย แต่ทำไมภาษาอื่นของ OCaml และ ML ยังคงคลุมเครือในขณะที่ภาษา C และภาษาอื่น ๆ ได้รับความนิยม
86 c  ocaml 

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