คำถามติดแท็ก programming-languages

ภาษาประดิษฐ์สำหรับสั่งคอมพิวเตอร์ให้ทำขั้นตอนการคำนวณเพื่อให้งานสำเร็จ อนุญาตให้โปรแกรมเมอร์สื่อสารกับคอมพิวเตอร์

6
ฉันควรเลือกภาษาโปรแกรมที่ใช้งานได้หรือไม่
เมื่อเร็ว ๆ นี้ฉันกังวลเกี่ยวกับวิธีเขียนรหัสของฉันมากขึ้น หลังจากอ่านหนังสือสองสามเล่มเกี่ยวกับรูปแบบการออกแบบ (และการนำไปปฏิบัติมากเกินไปของพวกเขาฉันแน่ใจ) ฉันได้เปลี่ยนความคิดของฉันอย่างมากไปทางแค็ปซูลสิ่งที่เปลี่ยนแปลง ฉันมักจะสังเกตเห็นว่าฉันเขียนอินเทอร์เฟซน้อยลงและโค้ดที่เน้นวิธีการมากขึ้นซึ่งฉันชอบที่จะสปรูซชีวิตในคลาสเก่าด้วยภาคแสดงการกระทำและงานมอบหมายอื่น ๆ ฉันมักจะคิดว่ามันมักจะเป็นการกระทำที่เปลี่ยนแปลงดังนั้นฉันจึงสรุปแค็ปซูลเหล่านั้น ฉันมักจะแยกย่อยอินเทอร์เฟซให้เป็นวิธีการเดียว แต่บ่อยครั้งที่ฉันต้องการใช้ผู้รับมอบสิทธิ์สำหรับงานแทนที่จะบังคับให้รหัสลูกค้าสร้างคลาสใหม่ ดังนั้นฉันเดาว่ามันจะโดนฉัน ฉันควรจะเขียนโปรแกรมฟังก์ชั่นแทน? แก้ไข: ฉันอาจมีความเข้าใจผิดเกี่ยวกับการตั้งโปรแกรมการทำงาน ปัจจุบันภาษาที่ฉันเลือกคือ C # และฉันมาจากพื้นหลัง C ++ ฉันทำงานเป็นนักพัฒนาเกม แต่ตอนนี้ฉันว่างงาน ฉันมีความหลงใหลในงานสถาปัตยกรรมอย่างมาก คุณธรรมของฉันคือรหัสที่สะอาดยืดหยุ่นใช้ซ้ำได้และบำรุงรักษาได้ ฉันไม่รู้ว่าฉันถูกวางยาด้วยวิธีการเหล่านี้หรือไม่ ฉันเป็นไข้ refactoring หรือฉันควรจะไปต่อ? ฉันเข้าใจว่านี่อาจเป็นคำถามเกี่ยวกับ"ใช้เครื่องมือที่เหมาะสมสำหรับงาน"แต่ฉันอยากได้ยินความคิดของคุณ ฉันควรเลือกภาษาที่ใช้งานได้หรือไม่ หนึ่งในปัจจัยความกลัวของฉันคือการทำให้ Visual Studio สะดวกสบาย

7
อาร์กิวเมนต์สำหรับการเขียนโปรแกรมฟังก์ชั่น [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเพิ่งเรียนรู้ F # เพื่อความสนุก (ฉันเป็น VB.NET/C# dev) และฉันชอบสิ่งที่มีให้ ในทางทฤษฎีนั่นคือ แต่ฉันมีปัญหาในการพิจารณาสถานการณ์ที่ฉันจะเลือกรหัสใน F # มากกว่าใน C # ความคิดใด ๆ

4
มีเหตุผลใดที่การเริ่มต้นแบบขี้เกียจไม่สามารถสร้างใน Java ได้หรือไม่?
เนื่องจากฉันกำลังทำงานบนเซิร์ฟเวอร์ที่ไม่มีสถานะที่ไม่คงที่สำหรับผู้ใช้ทุกออบเจ็กต์ที่เกี่ยวข้องกับผู้ใช้ที่เรามีจะถูกนำเสนอในทุกคำขอ ดังนั้นฉันมักจะพบว่าตัวเองกำลังเริ่มต้นขี้เกียจของคุณสมบัติของวัตถุที่อาจไม่ได้ใช้ protected EventDispatcher dispatcher = new EventDispatcher(); กลายเป็น... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } มีเหตุผลใดที่สิ่งนี้ไม่สามารถสร้างใน Java ได้หรือไม่? protected lazy EventDispatcher dispatcher = new EventDispatcher(); ตามที่ระบุไว้ด้านล่างในความคิดเห็นฉันรู้ว่าภาษาอาจมีวิวัฒนาการทางทฤษฎีที่จะรวมทุกอย่างที่คุณต้องการ ฉันกำลังมองหาการวัดความเป็นไปได้ในทางปฏิบัติ สิ่งนี้ขัดแย้งกับฟีเจอร์อื่นหรือไม่ การใช้งานง่ายพอที่จะทำงานได้ดีกับ JVM หรือไม่ และเป็นความคิดที่ดีหรือไม่?

4
ภาษาโปรแกรมที่เกี่ยวข้องกับภาคการเงินมากที่สุด? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นนักศึกษาใหม่ในวิทยาลัยและทำวิศวกรรมซอฟต์แวร์ / การเงินสองหลัก ฉันได้เรียนรู้การเขียนโปรแกรมด้วยตัวเองและมีความคุ้นเคยกับ php เป็นอย่างดีในตอนนี้ ฉันสงสัยว่าสิ่งที่พวกคุณคิดว่าภาษาการเขียนโปรแกรมที่เกี่ยวข้องที่สุดสำหรับการใช้ทางการเงิน / การธนาคารเพื่อการลงทุน? ฉันได้อ่านหัวข้อนี้: /software/13109/books-on-developing-software-for-financial-markets-investment-banks ฉันต้องการเริ่มเรียนรู้ / อ่านภาษา (พื้นฐานไม่ใช่เรื่องการเงิน / เรื่องควอนตัม) เพื่อสร้างพื้นฐานสำหรับเรื่องทางการเงิน / ควอนตัมในอนาคต

6
ฉันควรมุ่งเน้นไปที่ความลึกหรือกว้าง [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันเป็นนักพัฒนามืออาชีพมานานกว่าครึ่งปีและรู้สึกทึ่งในความยิ่งใหญ่ของโลกนอกวิทยาลัย ฉันได้เรียนรู้อย่างต่อเนื่องในเวลาว่างของฉัน แต่ฉันสงสัยว่าฉันควรโฟกัสที่ไหน โฟกัส 1) กองการพัฒนาที่ บริษัท ของฉันใช้ ผลตอบแทนที่เร็วที่สุดในการพัฒนาแบบวันต่อวัน #Deepest โฟกัส 2) ภาษาอื่นที่มีกระบวนทัศน์เดียวกัน ดูว่าฉันสามารถสรุปความรู้และวิธีคิดของฉัน โฟกัส 3) ภาษาที่แตกต่างกระบวนทัศน์ที่แตกต่าง ขยายขอบเขตของฉันและเรียนรู้วิธีการใหม่ในการทำสิ่งต่าง ๆ #Broadest หากใครมีโฟกัสที่แตกต่างกันอย่าลังเลที่จะนำสิ่งนั้นออกมา

7
การเลือกเทคโนโลยีและสภาพแวดล้อม (ใช่มั้ย)
เราเป็นผู้พัฒนาสองคนบนขอบของการเริ่มต้นพัฒนาผลิตภัณฑ์เว็บใหม่ เราเป็นแฟนของวิธีการเริ่มต้นแบบลีนและต้องการฝึกการใช้งานอย่างต่อเนื่อง ที่นี่ขึ้นเขียง - เราทั้งคู่มาจากพื้นหลัง C # / Windows และเราต้องตัดสินใจระหว่าง: ติดกับ. NET และ Windows เราจะไม่เสียเวลาในการเรียนรู้เทคโนโลยีใหม่ ๆ และใช้ความพยายามทั้งหมดของเราในการพัฒนา เปลี่ยนเป็น Ruby on Rails และ Linux ซึ่งมีชื่อเสียงดีในด้านความรวดเร็วและการสนับสนุนโอเพ่นซอร์สมากมาย ด้านลบคือเราจะต้องใช้ความพยายามอย่างมากในการเรียนรู้ Ruby, Rails และ Linux ... คุณจะทำอย่างไร เราควรพิจารณาเรื่องอื่น ๆ อย่างไร

2
โครงการโอเพ่นซอร์ส C # ที่ใช้งานมากที่สุด?
ฉันกำลังมองหาโครงการโอเพนซอร์สที่กำลังดำเนินการใน C # ที่กำลังมองหานักพัฒนาและไม่สนใจว่าบุคคลที่เข้ามาจากพื้นหลัง C ++ คำแนะนำใด ๆ ที่ชื่นชม

5
Ruby on Rails / Grails เป็นเฟรมเวิร์กที่เร็วที่สุดในการทำให้ไซต์เร็วขึ้นหรือไม่?
ฉันกำลังพิจารณาใช้ Grails สำหรับเว็บไซต์ใหม่ แต่ฉันเปิดรับภาษาและกรอบการเขียนโปรแกรมอื่น / ใหม่ ฉันได้ทำการพัฒนาโดยใช้ J2EE / JSF2, ASP.NET และ PHP Grails หรือ Ruby on Rails เป็นวิธีที่ดีที่สุดในการทำให้การใช้งานและการทำงานรวดเร็วขึ้นหรือไม่? ความคิดเริ่มต้นบางอย่าง: DJango มีลักษณะคล้ายกับ RoR / Grails และฉันคิดว่ามัน GWT เป็นแนวคิดที่น่าสนใจ แต่ดูเหมือนว่าเวลาตอบสนองจะค่อนข้างเร็ว ขอบคุณ -Jon

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

8
เหตุใดการเสนองานส่วนใหญ่จึงมีไว้สำหรับนักพัฒนา <ภาษาที่นี่> แทนที่จะเป็นผู้พัฒนาโดยทั่วไป [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม &amp; คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในโลกอุดมคติ: ในบทความที่ยอดเยี่ยมอย่าเรียกตัวเองว่าเป็นโปรแกรมเมอร์และคำแนะนำด้านอาชีพอื่น ๆ Patrick McKenzie อธิบายเหนือสิ่งอื่นใดภาษานั้นไม่สำคัญ: นักพัฒนาคือคนที่แก้ปัญหาโดยทั่วไป นักพัฒนาไม่ใช่คนที่เขียนรหัสในภาษาที่เฉพาะเจาะจง ธุรกิจไม่สนใจภาษาที่คุณรู้จัก หากพวกเขาต้องการจ้างนักพัฒนาสำหรับโครงการที่เขียนในภาษาที่เฉพาะเจาะจงและพวกเขามีผู้สมัครที่มีประสบการณ์สูง แต่ไม่เคยเขียนบรรทัดของรหัสในภาษานี้เขาจะยังคงได้รับการว่าจ้าง จากประสบการณ์ของฉันทั้งในฐานะนักพัฒนาและในฐานะบุคคลที่ต้องจ้างนักพัฒนาอื่น ๆ การสังเกตนั้นคล้ายกันมาก: ประสบการณ์ N ปีใน Java หรือประสบการณ์ N ปีใน C # ไม่สำคัญ สิ่งที่สำคัญคือผู้สมัครรู้วิธีการแก้ปัญหารู้ถึงความแตกต่างระหว่างรหัสสปาเก็ตตี้และโค้ดที่สะอาดด้วยสถาปัตยกรรมที่มีความคิดดีเป็นต้น ฉันไม่สนใจภาษาที่คุณใช้มาก่อน สำหรับโครงการ C # ฉันจะจ้างนักพัฒนามืออาชีพที่ใช้ชีวิตในการเขียนโค้ด Java, Python และ Ruby on Railsมากกว่าผู้เริ่มต้นที่รู้เพียง C # และรู้ว่ามันแย่ ความรู้และประสบการณ์ที่คุณได้รับจากการใช้ภาษาหนึ่งนั้นส่วนใหญ่สามารถใช้ซ้ำได้ในภาษาอื่น ผู้พัฒนาที่มีประสบการณ์ซึ่งใช้ Ruby …

4
ฉันควรใช้ภาษาใดในการสร้างห้องสมุดข้ามแพลตฟอร์ม [ปิด]
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันต้องการสร้างห้องสมุดการแยกวิเคราะห์ SyncML ( ไม่มี UI ) ซึ่งควรจะสามารถสร้างข้อความตามข้อมูลที่ได้รับจากแอปพลิเคชันโฮสต์โดยใช้วิธีการของห้องสมุด นอกจากนี้ไลบรารีควรจะสามารถโทรกลับไปยังวิธีการต่างๆในแอปพลิเคชันโฮสต์ได้ ฉันต้องการรวบรวมและมีให้ในหลาย ๆ แพลตฟอร์มที่เป็นไปได้: Windows, Windows Phone 7 OS, OSX, iOS, Linux, Android, BlackBerry โดยทั่วไปจะมีแพลตฟอร์มให้มากที่สุด ลำดับความสำคัญคือการมีสิ่งนี้พร้อมใช้งานบนอุปกรณ์มือถือ คำถาม: ฉันควรใช้การตั้งค่าแบบใด (ภาษาโปรแกรมคอมไพเลอร์ IDE ฯลฯ ) ฉันจะรวบรวมไลบรารีนี้สำหรับแพลตฟอร์มต่าง ๆ เหล่านี้ได้อย่างไรและฉันจะเชื่อมต่อกับมันอย่างไร ข้อมูลอื่น ๆ ? เช่นบทความที่ครอบคลุมหัวข้อการพัฒนาข้ามแพลตฟอร์ม ฉันไม่ได้ทำโปรเจคข้ามแพลตฟอร์มแบบนี้มาก่อนดังนั้นข้อมูลใด ๆ ที่พร้อมจะให้ฉันไปในทิศทางที่ถูกต้องจะได้รับการต้อนรับ ตัวฉันฉันมีพื้นหลังใน …

11
การออกแบบช่วงตัวอักษรที่สมบูรณ์แบบ
ฉันคิดว่าฉันจะออกแบบตัวอักษรที่ "สมบูรณ์แบบ" ได้อย่างไรถ้าฉันจะออกแบบภาษา สำหรับคุณที่ไม่ทราบว่าเป็นช่วงตัวอักษรในคำสั่งที่แสดงถึงช่วงของค่าเช่น 1-4 พวกมันถูกใช้บ่อยที่สุดใน for / foreach loops ดูเหมือนจะมีปัญหาสองข้อที่ควรคำนึงถึง การสนับสนุนสำหรับช่วงที่รวมและไม่เหมือนใครการตรึงบน +1 หรือ -1 ถึงจุดสิ้นสุดดูเหมือนว่าจะผิดพลาดและไม่มีข้อผิดพลาด สนับสนุนการก้าวดังนั้นคุณสามารถสร้างช่วงของเลขคู่หรือคี่ได้ ความสามารถในการอ่านควรชัดเจนว่าช่วงตัวอักษรหมายถึงอะไร ความไม่น่าสงสัยมันควรจะไร้เหตุผลอย่างสมบูรณ์แบบในสิ่งที่ช่วงตัวอักษรอธิบาย ค่าเริ่มต้นควรเป็นแบบรวมถึงแบบเอกสิทธิ์เนื่องจากเป็นสิ่งที่ใช้ในกรณีส่วนใหญ่สำหรับการวนซ้ำอาร์เรย์เป็นต้น อย่างไรก็ตามตัวอย่างหนึ่งของช่วงตัวอักษรที่ฉันได้เห็นคือ Ruby ซึ่งอยู่ในรูปแบบของ 1..3 สำหรับช่วงพิเศษ (ที่สิ้นสุด) และ 1 ... 3 สำหรับการรวม (บนสุด) คุณยังสามารถทำ 1..10.step (5) หลังจากพิจารณาอย่างถี่ถ้วนแล้วฉันพบบางสิ่งที่ฉันไม่ชอบเกี่ยวกับวิธีการนั้น (จากความรู้ที่ จำกัด เกี่ยวกับทับทิม) คุณสามารถอธิบายได้อย่างครอบคลุมและพิเศษเฉพาะตอนท้าย ในขณะที่อธิบายสถานการณ์ส่วนใหญ่ดูเหมือนจะไม่สอดคล้องกันเล็กน้อย แตกต่างกันเพียงเพิ่มเติม ดูเหมือนว่าเป็นสูตรสำหรับทำให้ยากที่จะดูว่าช่วงนั้นครอบคลุมหรือเป็นเอกสิทธิ์ ฉันไม่รู้เกี่ยวกับคุณ แต่จุดที่มักจะกลายเป็นสิ่งที่เบลอ :) การเพิ่มวิธีการเช่นสัญกรณ์สำหรับช่วงดูเหมือนจะผสมผสานความคิดของตัวอักษรเข้ากับชั้นเรียนซึ่งดูเหมือนว่าจะไม่สอดคล้องกันเล็กน้อย อย่างไรก็ตามหลังจากไตร่ตรองทางเลือกที่แตกต่างกัน ฉันมากับสิ่งนี้ [5..1] …

1
ชื่อของเทคนิคสำหรับอาร์กิวเมนต์ประเภทอนุมานของพารามิเตอร์ชนิดหรือไม่
ตั้งค่า:สมมติว่าเรามีประเภทที่เรียกว่าIteratorซึ่งมีพารามิเตอร์ประเภทElement: interface Iterator&lt;Element&gt; {} แล้วเรามีอินเตอร์เฟซที่มีวิธีการหนึ่งที่จะกลับIterableIterator // T has an upper bound of Iterator interface Iterable&lt;T: Iterator&gt; { getIterator(): T } ปัญหาของIteratorการเป็นแบบทั่วไปคือเราต้องระบุอาร์กิวเมนต์ประเภท แนวคิดหนึ่งในการแก้ไขปัญหานี้คือ "อนุมาน" ประเภทของตัววนซ้ำ หลอกรหัสต่อไปนี้เป็นการแสดงออกถึงความคิดที่ว่ามีตัวแปรประเภทElementซึ่งอนุมานว่าจะเป็นอาร์กิวเมนต์ประเภทไปที่Iterator: interface &lt;Element&gt; Iterable&lt;T: Iterator&lt;Element&gt;&gt; { getIterator(): T } จากนั้นเราก็ใช้มันในที่นี้: class Vec&lt;Element&gt; implements Iterable&lt;VecIterator&lt;Element&gt;&gt; {/*...*/} คำจำกัดความของคำIterableว่าไม่ใช้Elementที่อื่นในคำจำกัดความของมัน แต่กรณีใช้งานจริงของฉัน ฟังก์ชั่นบางอย่างที่ใช้Iterableยังจำเป็นต้องสามารถ จำกัด พารามิเตอร์ของตนเพื่อยอมรับIterables ซึ่งคืนค่าตัววนซ้ำบางชนิดเช่นตัววนซ้ำสองทิศทาง คำถาม: มีชื่อที่กำหนดขึ้นสำหรับตัวแปรประเภทอนุมานเหล่านี้หรือไม่ เทคนิคโดยรวมเป็นอย่างไร การไม่รู้ระบบการตั้งชื่อเฉพาะทำให้การค้นหาตัวอย่างของสิ่งนี้เป็นเรื่องยากหรือเรียนรู้เกี่ยวกับคุณลักษณะเฉพาะทางภาษา ไม่ใช่ทุกภาษาที่มีชื่อสามัญมีเทคนิคนี้ …

4
มีสิ่งอำนวยความสะดวกด้านภาษาของเครื่องกำเนิดไฟฟ้าเช่น `yield 'เป็นความคิดที่ดีหรือไม่?
PHP, C #, Python และภาษาอื่น ๆ สองสามภาษามีyieldคำสำคัญที่ใช้ในการสร้างฟังก์ชั่นเครื่องกำเนิดไฟฟ้า ใน PHP: http://php.net/manual/en/language.generators.syntax.php ใน Python: https://www.pythoncentral.io/python-generators-and-yield-keyword/ ใน C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield ฉันกังวลว่าในฐานะคุณสมบัติทางภาษา / สิ่งอำนวยความสะดวกyieldแบ่งการประชุมบางส่วน หนึ่งในนั้นคือสิ่งที่ฉันจะอ้างถึงคือ "ความแน่นอน" มันเป็นวิธีการที่ส่งกลับผลลัพธ์ที่แตกต่างกันทุกครั้งที่คุณเรียกมัน ด้วยฟังก์ชั่นที่ไม่ใช่เครื่องกำเนิดไฟฟ้าปกติคุณสามารถเรียกมันได้และถ้ามันได้รับอินพุตเดียวกันมันก็จะส่งคืนเอาต์พุตเดียวกัน ด้วยผลผลิตจะส่งคืนเอาต์พุตที่ต่างกันตามสถานะภายใน ดังนั้นหากคุณสุ่มเรียกใช้ฟังก์ชันการสร้างโดยไม่ทราบสถานะก่อนหน้าคุณจะไม่สามารถคาดหวังว่าจะให้ผลลัพธ์ที่แน่นอน ฟังก์ชั่นเช่นนี้เหมาะสมกับกระบวนทัศน์ทางภาษาอย่างไร จริง ๆ แล้วมันเป็นการทำลายอนุสัญญาใด ๆ เป็นความคิดที่ดีที่จะมีและใช้คุณสมบัตินี้หรือไม่? (เพื่อเป็นตัวอย่างของสิ่งที่ดีและสิ่งที่ไม่ดีgotoเคยเป็นคุณสมบัติของหลายภาษาและยังคงเป็น แต่มันก็ถือว่าเป็นอันตรายและถูกกำจัดให้หมดไปจากบางภาษาเช่น Java) คอมไพเลอร์ภาษาโปรแกรม / ล่ามต้องแยกออกจากอนุสัญญาใด ๆ ที่จะใช้คุณลักษณะดังกล่าวตัวอย่างเช่นภาษาต้องใช้หลายเธรดสำหรับคุณลักษณะนี้ในการทำงานหรือสามารถทำได้โดยไม่ต้องเทคโนโลยีเกลียว?

6
การพิมพ์สแตติกมีประโยชน์จริง ๆ ในโครงการขนาดใหญ่อย่างไร
ในขณะที่อยากรู้อยากเห็นในหน้าหลักของเว็บไซต์ภาษาการเขียนโปรแกรมสคริปต์ฉันพบข้อความนี้: เมื่อระบบมีขนาดใหญ่เกินไปที่จะเก็บไว้ในหัวของคุณคุณสามารถเพิ่มประเภทคงที่ สิ่งนี้ทำให้ฉันจำได้ว่าในสงครามศาสนาจำนวนมากระหว่างภาษาแบบคงที่ภาษาที่รวบรวม (เช่น Java) และภาษาแบบไดนามิกที่ถูกตีความ (ส่วนใหญ่เป็นภาษาไพ ธ อนเนื่องจากมีการใช้มากกว่า แต่เป็น "ปัญหา" ที่ใช้ร่วมกันระหว่างภาษาสคริปต์ส่วนใหญ่) แฟน ๆ ที่พิมพ์ภาษามากกว่าภาษาที่พิมพ์แบบไดนามิกคือพวกเขาไม่ได้ปรับขนาดให้ดีขึ้นสำหรับโครงการขนาดใหญ่เพราะ "วันหนึ่งคุณจะลืมฟังก์ชั่นกลับมาและคุณจะต้องค้นหามันในขณะที่พิมพ์ภาษาแบบคงที่ทุกอย่าง มีการประกาศอย่างชัดเจน " ฉันไม่เคยเข้าใจข้อความเช่นนี้ ความซื่อสัตย์แม้ว่าคุณจะประกาศฟังก์ชั่นการส่งคืนคุณสามารถและจะลืมมันหลังจากที่คุณเขียนโค้ดหลายบรรทัดและคุณจะต้องกลับไปที่บรรทัดที่ประกาศไว้โดยใช้ฟังก์ชันการค้นหาของ แก้ไขข้อความของคุณเพื่อตรวจสอบ นอกจากนี้เมื่อฟังก์ชั่นถูกประกาศด้วยการtype funcname()...รู้ทันtypeคุณจะต้องค้นหาแต่ละบรรทัดที่เรียกใช้ฟังก์ชั่นเพราะคุณรู้เพียงว่าfuncnameในขณะที่ในไพ ธ อนและสิ่งที่คุณชอบเพียงแค่ค้นหาdef funcnameหรือfunction funcnameเกิดขึ้นเพียงครั้งเดียวที่ การประกาศ ยิ่งกว่านั้นด้วย REPLs การทดสอบฟังก์ชั่นการกลับมาของอินพุตที่แตกต่างกันเล็กน้อยในขณะที่ภาษาที่พิมพ์แบบคงที่คุณจะต้องเพิ่มโค้ดบางบรรทัด ดังนั้นนอกเหนือจากการทราบประเภทการส่งคืนของฟังก์ชันที่เห็นได้ชัดว่าไม่ใช่จุดแข็งของภาษาที่พิมพ์แบบคงที่การพิมพ์แบบคงที่มีประโยชน์มากในโครงการขนาดใหญ่อย่างไร

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