“ ภาษาที่ จำกัด ” ของ Fernando J. Corbató


13

สำหรับคำปราศรัยรางวัลทัวริงปี 1990เฟอร์นันโดเจคอร์บัตโตระบุเหตุผลว่าทำไมระบบที่ซับซ้อนจะล้มเหลวอย่างหลีกเลี่ยงไม่ได้ ในบทสรุปของเขาเขาให้คำแนะนำสำหรับการลดความน่าจะเป็นของความล้มเหลว เขาแสดงความคิดเดียวดังนี้:

[U] se ของภาษาที่มีข้อ จำกัด สำหรับการออกแบบหรือการสังเคราะห์เป็นวิธีการที่ทรงพลัง การไม่อนุญาตให้โปรแกรมเมอร์หรือผู้ออกแบบแสดงความคิดเห็นที่ไม่เกี่ยวข้องทำให้โดเมนของข้อผิดพลาดที่อาจเกิดขึ้นมี จำกัด มากขึ้น

เขาหมายถึงอะไรโดย "ภาษา จำกัด "

สำหรับช่วงเวลาที่ผมถือว่าการเขียนโปรแกรม จำกัด อย่างไรก็ตามการเขียนโปรแกรมข้อ จำกัด เกี่ยวกับการ จำกัด พื้นที่โซลูชันของโปรแกรม มันเป็นเครื่องมือที่ช่วยให้โปรแกรมเมอร์ คุณสมบัติCorbatóหมายถึงดูเหมือนว่าจะเป็นสิ่งที่ จำกัด โปรแกรมเมอร์จริงๆหรืออย่างน้อยก็ทำให้เธอมีแนวโน้มที่จะเขียนรหัส terser มากขึ้น

ความคิดที่สองของฉันคือการที่เขาจะหมายถึงการเขียนโปรแกรมภาษาอนุรักษ์นิยม Corbatóได้รับรางวัลทัวริงของเขาสำหรับงานที่ทำในปี 1960 และ 1970 เป็นความเข้าใจของฉันที่เขาจัดการกับการ์ดเจาะจำนวนมาก ฉันไม่เคยเห็น punch card ดังนั้นฉันไม่ทราบวิธีการตั้งโปรแกรมอย่างแน่นอน แต่ฉันอาจเดาว่าการเขียนโปรแกรม punch card นั้นมีความเป็นอิสระอย่างมาก ฉันสงสัยว่าการตรวจสอบประเภทการวิเคราะห์แบบคงที่และอื่น ๆ นั้นไม่มีอยู่จริง ดังนั้นอาจเป็นCorbatóอาจหมายถึงความคิดของภาษาที่ จำกัด นักพัฒนาจากการทำผิดพลาดโง่? ดูเหมือนจะไม่เป็นเช่นนั้น การตรวจสอบความปลอดภัยและการสร้างแบบจำลองข้อมูลไม่มีส่วนเกี่ยวข้องกับความตึงเครียดซึ่งเป็นสิ่งที่เขาพูดถึงเมื่อเขาพูดถึง "ไม่อนุญาต ... ความคิดที่ไม่เกี่ยวข้อง"


@jweyrich ขอบคุณที่ส่งต่อฉันไปยัง Programmers.SE อย่างไรก็ตามเมื่อฉันไปที่แท็กภาษาการเขียนโปรแกรมบน StackOverflow ฉันพบคำถามมากมายที่เหมือนกับของฉันเช่น "มีภาษาที่พิมพ์แบบคงที่หรือไม่?" ที่ผู้เขียนยังอ้างอิงถึงวัสดุการอ่านทั่วไป
Xander Dunn

5
@ แม้ว่าข้อตกลงตรวจสอบวันที่เกี่ยวกับคำถามที่คุณพูดถึงฉันยินดีที่จะเดิมพันพวกเขาส่วนใหญ่ค่อนข้างเก่า ดังนั้นอายุ 4 ขวบมีการเปลี่ยนแปลงและโดยทั่วไปเราจะเข้มงวดขึ้นเมื่อเวลาผ่านไป คำถามของคุณใช้ได้กับโปรแกรมเมอร์ (ฉันเป็น mod อยู่ที่นั่น) แต่มันจะง่ายกว่าถ้าคุณเพิ่งตั้งค่าสถานะนี้เพื่อให้ความสนใจในการกลั่นกรองและขอให้โยกย้ายแทนการโพสต์ใหม่ การย้ายถิ่นจะช่วยให้คุณประหยัดปัญหาในการรีโพสต์และนำคำตอบมาให้โปรแกรมเมอร์พร้อมกับคำถาม ไม่ต้องกังวลตอนนี้ฉันจะดูแลมัน
yannis

3
ตัวอย่างเช่นหาก (หมายเหตุ: ถ้า ) แนวคิดของmallocคือ "ไม่เกี่ยวข้อง" สำหรับบางแอปพลิเคชันด้วยเหตุผลบางประการจากนั้นเลือก Java ("ถูก จำกัด โดยไม่มี malloc) เหนือ C (malloc อยู่ที่นั่น) จะ จำกัด " โดเมนของข้อผิดพลาด "ที่อาจเกี่ยวข้องกับ malloc
gnat

@YannisRizos ขอบคุณมากสำหรับการย้ายข้อมูล ฉันไม่ทราบว่ามีฟังก์ชั่นนี้อยู่ บางทีผู้ใช้ที่มีประสบการณ์มากกว่าใน StackOverflow อาจแนะนำเส้นทางนี้แทนที่จะปิดมัน
Xander Dunn

3
"การเข้ารหัสบนบัตรที่ถูกเจาะ " เป็นอีกวิธีหนึ่งในการพิมพ์โปรแกรม ในช่วงปลายทศวรรษ 1960 และต้นปี 1970 เรามีภาษาที่มีความซับซ้อนเทียบเท่ากับภาษาที่เรามีอยู่ทุกวันนี้ แนวคิดหลักหลายประการของภาษาการเขียนโปรแกรมได้รับการยอมรับอย่างดีและALGOL 60ได้กำหนดมาตรฐานสำหรับเครื่องมือการเขียนโปรแกรมโดยปี 1963
Ross Patterson

คำตอบ:


8

"การเขียนโปรแกรมภาษา จำกัด " เป็นเพียงวิธีการหนึ่งที่ไม่ได้ให้วิธีง่าย ๆ ในการทำสิ่งที่ไม่เกี่ยวข้องกับวัตถุประสงค์ของภาษา

โปรดทราบว่า "ไม่เกี่ยวข้อง" ไม่ใช่ "โง่", "โง่" หรือ "ไม่ถูกต้อง"

ตัวอย่างที่ยุติธรรมของสิ่งนี้อาจเป็น ISO / ANSI SQL (ก่อน SQL-92) ซึ่งไม่มีวิธีในภาษาคิวรีเพื่อแสดงส่วนการเขียนโปรแกรมชนิดโพรซีเดอร์เช่นการเรียกซ้ำหรือลูป (แม้ว่าจะมีตอนนี้และผู้ขายได้เพิ่มส่วนขยายที่กำหนดเองสำหรับพวกเขาก่อนหน้านี้อยู่แล้ว)


6
นี่คือประเด็นของCorbató เขาเข้าไปในรายละเอียดจำนวนมากในบทความ Datamation ปี 1969 ที่เรียกว่าPL / I เป็นเครื่องมือสำหรับการเขียนโปรแกรมระบบ (พร้อมคำบรรยายที่ยอดเยี่ยม " ห้าปีพร้อมกับผู้แปลชั่วคราว "!)
Ross Patterson

ขอบคุณคำตอบนี้มีประโยชน์มาก ความคิดนี้มีความหมายที่น่าสนใจ สิ่งนี้ดูเหมือนจะบ่งชี้ว่าโปรแกรมเมอร์ต้องการที่จะเข้าถึงภาษาที่หลากหลายด้วยความสามารถที่แตกต่างกันมากกว่ามีภาษาเดียวที่จะปกครองพวกเขาทั้งหมดซึ่งเป็นสิ่งที่โปรแกรมเมอร์หลายคนต้องการสมมติว่า C, C ++ หรือ Java อาจเป็น
Xander Dunn

@RossPatterson ยอดเยี่ยม! ขอขอบคุณ! ฉันกำลังมองหารายละเอียดเพิ่มเติมในหัวข้อจากCorbató แต่ฉันไม่พบอะไรมาก
Xander Dunn

1
ข้อความสรุปยอดเยี่ยมจากบทความ Datamation: " เป้าหมายของเราในการทำระบบ ... คือการสำรวจชายแดนและดูว่าจะรวบรวมระบบที่มีประสิทธิภาพและบรรลุเป้าหมายที่วางไว้ได้อย่างไรเราพยายามค้นหา ออกแนวคิดการออกแบบที่สำคัญและสื่อสารสิ่งเหล่านี้ให้ผู้อื่นโดยไม่คำนึงถึงระบบที่พวกเขาคุ้นเคยดังนั้นภาษาที่ได้รับเหนือรายละเอียดเฉพาะของฮาร์ดแวร์เป็นที่พึงปรารถนาอย่างแน่นอน ... ในคำอื่น ๆ มันบังคับให้หนึ่งในการออกแบบ ไม่คุ้นเคยกับรหัสและนี้ได้เปิดออกมาเป็นหนึ่งในจุดแข็งของมัน. . "
รอสส์แพตเตอร์สัน

2
@ Thoughtadvances " สิ่งนี้ดูเหมือนจะบ่งบอกว่าโปรแกรมเมอร์ต้องการที่จะเข้าถึงภาษาที่หลากหลายด้วยความสามารถที่หลากหลายมากกว่ามีภาษาเดียวในการปกครองพวกเขาทั้งหมด " - นั่นเป็นหนึ่งในความแตกต่างระหว่างจูเนียร์และโปรแกรมเมอร์อาวุโส ช่างไม้คนใดไม่มีค้อนเดียว :-)
Ross Patterson


0

ก่อนอื่นคุณต้องเข้าใจยุคของการคำนวณเมื่อคำพูดของเขาได้รับ (1990) และตระหนักว่าเขากำลังพูดกับผู้ฟังเชิงวิชาการและ MIT ก็เป็นฐานของเขาด้วย

ในยุคนั้นภาษาสำหรับการเขียนภาษา (meta-languages) เป็นหัวข้อยอดนิยม Art of the Meta-Object โปรโตคอลเพิ่งเปิดตัวและสร้างแรงบันดาลใจในการออกแบบภาษาใหม่ อย่างไรก็ตามความหรูหราทั้งหมดนี้มาในราคา: ความซับซ้อน

เพื่อช่วยลดความซับซ้อนของระบบและอนุญาตให้ตรวจสอบระบบเหล่านี้ได้เมตาดาต้าภาษาเช่น Z ออกมาเพื่อทำข้อกำหนดคุณสมบัติที่สามารถทดสอบได้ ฉันเดาว่าเขาหมายถึงภาษาเหล่านี้


2
Corbatóไม่ได้เป็นเพียงนักวิชาการ MIT ปลายปีที่สอง เขาเป็นหนึ่งในผู้บุกเบิกสาขาของเรา งานของเขาในCTSSเป็นน้ำเชื้อนำไปสู่ ​​Multics, Unix, CP / 67 และระบบ Linux และ z / VM ในปัจจุบัน และคำแถลงในคำถามนั้นเกี่ยวข้องกับหลักการที่เขาเปิดเผยอย่างเปิดเผยเมื่อ 20 ปีก่อนหน้าArt of the Meta-Object Protocolและการบรรยายทัวริงของเขา
Ross Patterson

0

อาจเป็นไปได้ว่าเขาหมายถึงภาษาที่มีจำนวนแนวคิดที่ค่อนข้างต่ำ ตรวจสอบไดอะแกรมที่นี่ซึ่งแสดงการแสดงกราฟิกของแนวคิดใน Coffescript, Ruby และ C ++ อาจเป็นเครื่องรับสัญญาณซึ่งหมายความว่ายิ่งคุณมีแนวคิดเกี่ยวกับภาษาน้อยลงเท่าใดโอกาสในการแสดงความคิดเห็นที่ไม่เกี่ยวข้องน้อยลง


"... หรือภาษา" - นี่เป็นความคิดเห็นในบางสิ่งหรือไม่
gnat

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