ฉันไม่มีเวลาอ่านรายละเอียดทั้งหมดโดยละเอียด ... แต่ฉันก็รู้สึกสนุก
มีความขัดแย้งที่คล้ายกันในอายุหกสิบเศษและอายุเจ็ดสิบต้น (ประวัติศาสตร์วิทยาศาสตร์คอมพิวเตอร์มักจะทำซ้ำตัวเอง): ภาษาระดับสูงสามารถรวบรวมเพื่อผลิตรหัสที่มีประสิทธิภาพเป็นรหัสเครื่องดีพูดประกอบรหัสผลิตโดยโปรแกรมเมอร์ ทุกคนรู้ว่าโปรแกรมเมอร์นั้นฉลาดกว่าโปรแกรมใด ๆ และสามารถสร้างการเพิ่มประสิทธิภาพที่ชาญฉลาดได้ (คิดว่าจริงๆแล้วสิ่งที่เรียกว่าการเพิ่มประสิทธิภาพช่องมอง) แน่นอนนี่เป็นการประชดในส่วนของฉัน
แม้กระทั่งแนวคิดของการขยายโค้ด: อัตราส่วนของขนาดของโค้ดที่คอมไพเลอร์สร้างขึ้นกับขนาดของโค้ดสำหรับโปรแกรมเดียวกันที่สร้างโดยโปรแกรมเมอร์ที่ดี (ราวกับว่ามันมีมากเกินไป :-) แน่นอนว่าความคิดคืออัตราส่วนนี้มากกว่า 1 เสมอภาษาของเวลาคือ Cobol และ Fortran 4 หรือ Algol 60 สำหรับปัญญาชน ฉันเชื่อว่าเสียงกระเพื่อมไม่ได้รับการพิจารณา
มีข่าวลือว่ามีใครบางคนสร้างคอมไพเลอร์ที่บางครั้งอาจมีอัตราส่วนการขยายตัวที่ 1 ... จนกระทั่งมันกลายเป็นกฎที่คอมไพล์โค้ดได้ดีกว่าโค้ดที่เขียนด้วยมือ (และเชื่อถือได้มากกว่า) ผู้คนกังวลเกี่ยวกับขนาดของรหัสในช่วงเวลานั้น (ความทรงจำเล็ก ๆ ) แต่สิ่งเดียวกันก็เพื่อความรวดเร็วหรือการสิ้นเปลืองพลังงาน ฉันจะไม่ไปด้วยเหตุผล
คุณสมบัติแปลกประหลาดคุณสมบัติแบบไดนามิกของภาษาไม่สำคัญ สิ่งสำคัญคือวิธีใช้งานไม่ว่าจะใช้ ประสิทธิภาพไม่ว่าจะเป็นหน่วยใด (ขนาดรหัสความเร็วพลังงาน ... ) มักขึ้นอยู่กับส่วนเล็ก ๆ ของโปรแกรม ดังนั้นจึงเป็นโอกาสที่ดีที่สิ่งอำนวยความสะดวกที่ให้พลังในการแสดงออกจะไม่เข้าทาง ด้วยการฝึกการเขียนโปรแกรมที่ดีสิ่งอำนวยความสะดวกขั้นสูงจะถูกใช้ในลักษณะที่มีระเบียบวินัยเพื่อจินตนาการถึงโครงสร้างใหม่ (นั่นคือบทเรียนเสียงกระเพื่อม)
ความจริงที่ว่าภาษาที่ไม่มีการพิมพ์แบบสแตติกไม่เคยหมายความว่าโปรแกรมที่เขียนในภาษานั้นจะไม่ได้รับการพิมพ์แบบคงที่ ในทางกลับกันอาจเป็นไปได้ว่าระบบประเภทที่โปรแกรมใช้ยังไม่เป็นทางการเพียงพอสำหรับตัวตรวจสอบชนิดที่มีอยู่ในขณะนี้
มีการพูดคุยในการอ้างอิงหลายอ้างอิงถึงการวิเคราะห์กรณีที่เลวร้ายที่สุด ("ปัญหาการหยุดชะงัก", การแยกวิเคราะห์ PERL) แต่การวิเคราะห์กรณีที่เลวร้ายที่สุดส่วนใหญ่ไม่เกี่ยวข้อง สิ่งที่สำคัญคือสิ่งที่เกิดขึ้นในกรณีส่วนใหญ่หรือในกรณีที่มีประโยชน์ ... อย่างไรก็ตามกำหนดหรือเข้าใจหรือมีประสบการณ์ มาที่นี่อีกเรื่องที่เกี่ยวข้องโดยตรงกับการเพิ่มประสิทธิภาพของโปรแกรม มันเกิดขึ้นนานมาแล้วในมหาวิทยาลัยสำคัญในเท็กซัสระหว่างนักศึกษาปริญญาเอกและที่ปรึกษาของเขา (ซึ่งได้รับการเลือกตั้งในภายหลังในหนึ่งในสถาบันการศึกษาแห่งชาติ) เมื่อฉันจำได้นักเรียนก็ยืนกรานที่จะศึกษาปัญหาการวิเคราะห์ / การปรับให้เหมาะสมซึ่งผู้ให้คำปรึกษาได้แสดงให้เห็นว่าไม่สามารถใช้ได้ ในไม่ช้าพวกเขาก็ไม่ได้พูดคำศัพท์อีกต่อไป แต่นักเรียนถูกต้อง: ปัญหานั้นง่ายในกรณีที่ใช้งานได้จริงที่สุดดังนั้นวิทยานิพนธ์ที่เขาผลิตก็เป็นงานอ้างอิง
และเพื่อแสดงความคิดเห็นเพิ่มเติมเกี่ยวกับคำแถลงว่าPerl parsing is not
computable
สิ่งที่มีความหมายโดยประโยคนั้นมีปัญหาที่คล้ายกันกับ ML ซึ่งเป็นภาษาที่กรงเล็บที่ดีอย่างน่าทึ่งType
checking complexity in ML is a double exponential in the lenght of the
program.
นั่นเป็นผลลัพธ์ที่แม่นยำและเป็นทางการซึ่งมีความซับซ้อนของกรณีที่เลวร้ายที่สุด ... ซึ่งไม่สำคัญเลย Afaik ผู้ใช้ ML ยังคงรอโปรแกรมเชิงปฏิบัติที่จะระเบิดตัวตรวจสอบชนิด
ในหลายกรณีอย่างที่เคยเป็นมาก่อนเวลาและความสามารถของมนุษย์นั้นน่ากลัวกว่าพลังในการคำนวณ
ปัญหาที่แท้จริงของอนาคตคือการพัฒนาภาษาของเราเพื่อรวมความรู้ใหม่รูปแบบการเขียนโปรแกรมใหม่โดยไม่ต้องเขียนซอฟต์แวร์ดั้งเดิมทั้งหมดที่ยังคงใช้อยู่
ถ้าคุณดูคณิตศาสตร์มันเป็นองค์ความรู้ที่มีขนาดใหญ่มาก ภาษาที่ใช้ในการแสดงความคิดเห็นและแนวคิดได้พัฒนามานานหลายศตวรรษ มันง่ายที่จะเขียนทฤษฎีบทเก่าด้วยแนวคิดใหม่ เราปรับตัวพิสูจน์หลัก แต่ไม่ต้องกังวลกับผลลัพธ์มากมาย
แต่ในกรณีของการเขียนโปรแกรมเราอาจต้องเขียนบทพิสูจน์ใหม่ทั้งหมดตั้งแต่เริ่มต้น (โปรแกรมเป็นบทพิสูจน์) อาจเป็นได้ว่าสิ่งที่เราต้องการจริงๆคือภาษาการเขียนโปรแกรมระดับสูงมากและมีวิวัฒนาการ นักออกแบบเครื่องมือเพิ่มประสิทธิภาพยินดีที่จะติดตาม