การวิจัยและความท้าทายแบบเปิดในทฤษฎีภาษาโปรแกรม


32

ในจิตวิญญาณของบางอภิปรายทั่วไปเช่นนี้หนึ่งผมเปิดกระทู้นี้ด้วยความตั้งใจที่จะรวบรวมความคิดเห็นเกี่ยวกับสิ่งที่เป็นความท้าทายที่เปิดกว้างและหัวข้อที่ร้อนในการวิจัยเกี่ยวกับการเขียนโปรแกรมภาษา ฉันหวังว่าการอภิปรายอาจนำมาซึ่งความคิดเห็นเกี่ยวกับอนาคตของการวิจัยในภาษาโปรแกรม

ฉันเชื่อว่าการอภิปรายในลักษณะนี้จะช่วยให้นักวิจัยใหม่เช่นตัวฉันเองสนใจ PL และผู้ที่มีส่วนเกี่ยวข้องอยู่แล้ว


7
วิกิชุมชน
Suresh Venkat

2
ฉันคิดว่ามันจะช่วยปรับปรุงคำถามนี้และผู้ที่ตอบคำถามถ้าคุณอ้างหรือสรุปเนื้อหาของคำถาม "Frontiers of TCS" ขอบเขตที่คาดหวังของคำตอบสำหรับคำถามนี้ไม่ชัดเจนในขณะที่คำถามอื่น ๆ มีความแม่นยำมากขึ้นเกี่ยวกับสิ่งที่คาดหวัง
วีเจย์ D

เมื่อฉันถามคำถามเกี่ยวกับ stackoverflow เมื่อไม่นานมานี้ ... ฉันลงคะแนนแล้วและคำถามของฉันถูกปิด!
Rorschach

คำตอบ:


23

ฉันคิดว่าเป้าหมายโดยรวมของทฤษฎี PL คือการลดต้นทุนของการเขียนโปรแกรมขนาดใหญ่โดยการปรับปรุงภาษาโปรแกรมและระบบนิเวศทางเทคโนโลยีที่ใช้ภาษา

ต่อไปนี้เป็นคำอธิบายในระดับสูงที่ค่อนข้างคลุมเครือของพื้นที่การวิจัย PL ที่ได้รับความสนใจอย่างต่อเนื่องและอาจจะดำเนินต่อไปชั่วระยะเวลาหนึ่ง

  • การวิจัยภาษาโปรแกรมส่วนใหญ่เกิดขึ้นในบริบทของการคำนวณตามลำดับและตอนนี้เราได้วิเคราะห์เนื้อหาบนแกนของคุณลักษณะที่มีอยู่ในภาษาการเขียนโปรแกรมที่ทันสมัยที่สุด (เช่นฟังก์ชั่นลำดับสูงกว่า (บางส่วน) การอนุมานประเภท , ADTs, ตัวแปรหลายตัวแปร) และเป็นที่เข้าใจกันดี ยังไม่มีฉันทามติดังกล่าวเกี่ยวกับคุณสมบัติภาษาการเขียนโปรแกรมสำหรับการคำนวณพร้อมกันและแบบขนาน

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

  • เป็นกรณีพิเศษของประเด็นก่อนหน้านี้การติดต่อกับ Curry-Howard เกี่ยวข้องกับทฤษฎีการพิสูจน์โครงสร้างและการเขียนโปรแกรมเชิงปฏิบัติการที่นำไปสู่การถ่ายโอนเทคโนโลยีที่ยั่งยืนระหว่างวิทยาการคอมพิวเตอร์และคณิตศาสตร์ (พื้นฐานของ) คณิตศาสตร์ด้วยเช่น มีคำแนะนำยั่วเย้ามากมายที่สามารถขยายไปถึง (บางรูปแบบ) พร้อมกันและการคำนวณแบบขนาน

  • ข้อมูลจำเพาะและการตรวจสอบของโปรแกรมมีจำนวนมากในช่วงไม่กี่ปีที่ผ่านมาเช่นกับผู้ช่วยหลักฐานการโต้ตอบเช่น Isabelle และ Coq แต่เทคโนโลยียังห่างไกลจากการใช้งานในระดับสูงในการเขียนโปรแกรมทุกวัน ยังมีงานอีกมากที่ต้องดำเนินการเพื่อปรับปรุงสถานะของกิจการนี้

  • ภาษาโปรแกรมและเทคโนโลยีการตรวจสอบสำหรับการคำนวณรูปแบบใหม่ ฉัน
    คิดว่าที่นี่โดยเฉพาะอย่างยิ่งการคํานวณควอนตัมและแรงบันดาลใจทางชีวภาพกลไกการคำนวณให้ดูเช่นที่นี่

  • การรวมกัน มีหลายวิธีในการเขียนโปรแกรมภาษาประเภทการตรวจสอบและบางครั้งก็รู้สึกว่ามีการทับซ้อนกันระหว่างพวกเขาจำนวนมากและมีวิธีที่เป็นนามธรรมมากกว่ารอการค้นพบ โดยเฉพาะอย่างยิ่งกลไกการคำนวณที่ได้รับแรงบันดาลใจทางชีววิทยามีแนวโน้มที่จะครอบงำพวกเราต่อไป

ปัญหาหนึ่งของการวิจัย PL คือไม่มีปัญหาแบบเปิดที่ชัดเจนเช่นคำถาม P / NP ที่เราสามารถพูดได้ทันทีว่าวิธีแก้ปัญหาที่เสนอนั้นใช้ได้หรือไม่


1
ถ้าฉันอาจเพิ่มควอนตัมคอมพิวเตอร์และภาษาโปรแกรมควอนตัมควอนตัมคำนวณแม้ว่าจะไม่เกิดขึ้น แต่การศึกษาว่าแนวคิดการเขียนโปรแกรมบางอย่างอาจถูกถ่ายโอนในรูปแบบของการคำนวณนี้เป็นที่น่าสนใจถ้าไม่มีอะไรอื่นการเขียนโปรแกรมภาษาธรรมชาติ และแม้กระทั่งการคำนวณทางกายภาพและการเขียนโปรแกรมทางกายภาพ (การเขียนโปรแกรมโดยตรงในเรื่องเกินระดับโมเลกุล)
Nikos M.

1
@NikosM ฉันเห็นด้วย QC เป็นเรื่องใหญ่และสอบสวนอย่างหนัก บทความนี้แสดงให้เห็นถึงการเชื่อมต่อที่น่าประหลาดใจระหว่างรากฐานของกลศาสตร์ควอนตัมและทฤษฎีภาษาโปรแกรมที่ค้นพบโดยนามธรรมเท่านั้น
Martin Berger

ดีคำถามอาจตอบความสัมพันธ์ที่เป็นทางการ (หรือไม่เป็นทางการ) ประเภทนี้ได้
Nikos M.

11

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

  1. โปรแกรมเป็นโครงสร้างประโยค

    • โปรแกรมเมอร์จริงจะไม่ใช้ iPads ในการสร้างซอร์สโค้ด และแม้ว่าพวกเขาจะทำเช่นนั้นพวกเขาจะไม่มีประสิทธิภาพเท่า Emacs, Eclipse, NetBeans, XCode ฯลฯ
    • การวิจัยเกี่ยวกับวิธีทางเลือกในการสร้างโปรแกรมไม่ใช่การออกแบบโปรแกรมภาษา แต่เป็นการออกแบบส่วนต่อประสานกับผู้ใช้แบบกราฟิกหรือการศึกษา (cf. Scratch)
  2. โปรแกรมที่เขียนบางส่วนไม่สามารถดำเนินการได้

    • อย่างน้อยที่สุดข้อผิดพลาดรันไทม์เกิดขึ้นเมื่อการดำเนินการไปยังส่วนที่ขาดหายไป
    • จะมีอะไรดีในการรันโปรแกรมที่ยังไม่เสร็จ?
  3. โปรแกรมเกี่ยวกับการให้คำแนะนำกับคอมพิวเตอร์

    • การออกแบบภาษาการเขียนโปรแกรมไม่มีอะไรจะพูดเกี่ยวกับวิธีการเขียนและจัดระเบียบกฎหมาย โฮ apliances
    • แบคทีเรียไม่ได้เขียนโปรแกรม
  4. การเขียนโปรแกรมเป็นเหมือน enginnering และไม่สามารถทำได้โดยคนธรรมดา

    • คนธรรมดาไม่รู้จักไวยากรณ์แนวคิดเครื่องมือดังนั้นพวกเขาจึงไม่สามารถเขียนโปรแกรมได้
    • แม้ว่าเราจะพยายามทำให้คนทั่วไปสามารถเขียนโปรแกรมได้ แต่พวกเขาก็สามารถเขียนสิ่งที่ไม่สำคัญได้

ฉันคิดว่าฉันสามารถไปต่อ


2
เจมส์: เยี่ยมมากฉันจะแจ้งป้าของฉัน มาร์ติน: นี่เป็นสิ่งที่ฉันกำลังพูดถึงอย่างแน่นอน - การเขียนโปรแกรมที่ไม่ใช่ข้อความยังไม่ได้รับการยอมรับเพราะชุมชน PL ไม่ได้ใส่ใจอย่างจริงจังเพราะมันไม่ได้เป็นที่ยอมรับ แต่ดูเหมือนว่าฉันค่อนข้างชัดเจนว่ามนุษย์ไม่ได้ทำเพื่อพิมพ์คำบนหน้าจอ เราเก่งเรื่องการขว้างปาและเลือกบลูเบอร์รี่
Andrej Bauer

1
@ AndrejBauer ในฐานะที่เป็นข้อโต้แย้งทางวิทยาศาสตร์ "มันค่อนข้างชัดเจนสำหรับฉัน" ไม่เกินการปรับปรุง หากคุณดูที่ประวัติของระบบการเขียนซึ่งภาษาการเขียนโปรแกรมเป็นเพียงตัวอย่างล่าสุดเส้นทางการเคลื่อนที่ในอดีตของพวกเขานั้นไม่ได้อยู่ในการเขียนแบบลอจิคัล บางทีความสามารถของเราในการวิเคราะห์สตริงมีความเกี่ยวข้องมากกว่าบลูเบอร์รี่ การเขียนตามตัวอักษรมีการพัฒนามากกว่าพันปีดังนั้นจึงไม่น่าเป็นไปได้ว่ามันจะมีข้อบกพร่องขนาดใหญ่และสามารถแก้ไขได้อย่างง่ายดาย ที่กล่าวว่าฉันมีความสุขที่เชื่อว่าเราสามารถทำได้ดีกว่าสตริงเชิงเส้นตาม ASCII ฉันคิดว่ามันจะเป็นสักครู่ก่อนที่เราจะทำ
Martin Berger

1
ประเด็นของคำตอบคือ "คิดนอกกรอบ" เพื่อตรวจสอบสมมติฐานที่ซ่อนอยู่ในการวิจัย PL และดูว่าพวกเขา จำกัด การวิจัย PL ที่มีศักยภาพได้อย่างไร
Andrej Bauer

4
@ AndrejBauer ฉันคิดว่าการ จำกัด ขอบเขตให้ POPL นั้นเป็นความผิดพลาด - งานประเภทนี้มากมายที่ OOPSLA หรือที่ ICSE หรือที่ CHI POPL ไม่สนใจนอกเสียจากว่าจะมีวิธีการที่แปลกใหม่ แต่ POPL ไม่ใช่ชุมชน PL ทั้งหมด
Sam Tobin-Hochstadt

2
@DominicMulligan: แน่นอนว่ามันเป็นแนวคิดที่ยินดีต้อนรับ ด้วยความคิดเห็นของฉันฉันกำลังพยายามเปลี่ยนการรับรู้ของการเขียนโปรแกรมคืออะไร ดังนั้นหากความคิดเชิงทฤษฎีสามารถนำไปใช้ประโยชน์ในทางปฏิบัติได้ดี (ซึ่งฉันหมายถึงว่าโปรแกรมเมอร์ "ธรรมดา" จะใช้มันในชีวิตประจำวัน) ดังนั้นเราจึงชนะ
Andrej Bauer

0

มีปัญหาหนึ่งที่ฉันสงสัยเกี่ยวกับ ฉันไม่รู้ว่ามันเป็นคุณสมบัติที่ท้าทายหรือไม่

ความรู้ทางคณิตศาสตร์เพิ่มขึ้นอย่างต่อเนื่องตามกาลเวลา รากฐานทางทฤษฎีแนวคิดสัญลักษณ์และบทพิสูจน์ได้วิวัฒนาการมาหลายศตวรรษ นักคณิตศาสตร์ได้จัดการรวมตัวกันโดยไม่จำเป็นต้องตรวจสอบความสอดคล้องระดับโลกในวิธีที่เป็นระบบและเป็นทางการ ณ จุดใดเวลาหนึ่ง (แม้ว่าจะมีความพยายามที่จะทำ)

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

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


ความสอดคล้องเกินความเป็นจริง
Andrej Bauer

1
ฉันเห็นได้ว่ามีข้อตกลงไม่มากนักเกี่ยวกับเรื่องนี้ ถึงอย่างนั้นก็อาจจะมีประโยชน์มากกว่าอย่างน้อยสำหรับฉันที่จะมีคำอธิบายเล็ก ๆ น้อย ๆ เกี่ยวกับสาเหตุ ในกรณีที่ฉันไม่ชัดเจนฉันไม่เคยตั้งใจจะพูดว่าคณิตศาสตร์อาจไม่สอดคล้องกันเพียงว่ามันไม่ได้ (จำเป็น) รวมกับวิธีการที่สอดคล้องกัน (นักประวัติศาสตร์จะบอกได้ดีกว่า) จากมุมมองของ CS ฉันอาจผิดเกี่ยวกับความยากลำบากในการรวม (ฉันไม่เคยทำงานด้านเทคนิคใด ๆ ในเรื่องนี้) แต่ฉันเกี่ยวข้องกับประสบการณ์ของผู้ใช้และมุมมองที่ได้ยินกันทั่วไปเป็นอันตรายต่อภาษาที่ผลิตโดย TCS
Babou

1
คำพูดของฉันส่วนใหญ่เกี่ยวกับความจริงที่ว่าความสอดคล้องเป็นความคิดที่ไม่มีประโยชน์ใด ๆ ในขณะที่ในความเป็นจริงซอฟต์แวร์ส่วนใหญ่จะ "สอดคล้องกันเป็นส่วนใหญ่" และเราก็ใช้มันและพบว่ามีประโยชน์ ทำไมนักทฤษฎีจึงหมกมุ่นอยู่กับสิ่งที่ดูเหมือนจะเป็นแนวคิดที่ไม่สามารถบรรลุได้จริงและอุดมการณ์เกินไป? ดูเหมือนจะดีกว่าที่จะสามารถหาปริมาณความสอดคล้องในทางที่ไม่สำคัญ
Andrej Bauer

@AndrejBauer - ขอบคุณสำหรับการตอบกลับ ฉันรู้สึกประหลาดใจเล็กน้อยที่ข้อความของคุณถูกนำไปใช้กับสิ่งที่ฉันเขียน ไม่มีสิ่งใดรองรับรูปแบบของความสอดคล้องแบบสัมบูรณ์ แต่มีเพียงความปรารถนาสำหรับวิธีการที่ใช้งานได้บางอย่างที่จะทำให้การรวมเป็นไปได้และมีความหมายในบริบทที่พัฒนาขึ้น ส่วนใหญ่สอดคล้องตามที่คุณพูดอาจทำ การค้นหาสิ่งที่สอดคล้องกันควรมีความหมายสำหรับจุดประสงค์นั้นเป็นส่วนหนึ่งของความคิดและฉันไม่ได้แนะนำคำตอบเล็กน้อยหรืออื่น ฉันไม่เคยเป็นนักทฤษฎีที่หมกมุ่นและฉันไม่เห็นจากคำตอบของคุณที่เราสามารถเป็นไปได้
babou

1
ฉันคิดว่าฉันแค่พูดคุยเกี่ยวกับ "นักทฤษฎีบริสุทธิ์" นั่นคือทั้งหมดที่ โปรดละเว้นฉัน
Andrej Bauer

0

มีนวัตกรรมและการระเบิดอย่างมากในภาษาการเขียนโปรแกรมจากการใช้งานและด้านทฤษฎีในช่วงศตวรรษที่ผ่านมา แต่ในบางกรณีอาจจะทำให้เป็นเหตุการณ์เอกพจน์ / ครั้งเดียวในประวัติศาสตร์ของการคำนวณเช่นเดียวกับ "วิวัฒนาการการระเบิด" (โปรดดู"ทำไมจึงมีภาษาโปรแกรมมากมาย?"ใน cs.se) และดังนั้นอนาคตจะไม่เหมือนในอดีตในแง่นี้ อย่างไรก็ตามมีแนวโน้มในระยะยาวที่สามารถระบุได้บางอย่างในการเล่น / ภายใต้การพัฒนา

  • ความซับซ้อนของการเขียนโปรแกรม / ซอฟต์แวร์และวิธีการจัดการ / ลด / ลด / ลดความมันเป็นหัวข้อที่มีอิทธิพลต่อการออกแบบภาษาอยู่เสมอและอาจมีความสำคัญมากขึ้นในยุคปัจจุบันด้วยระบบซอฟต์แวร์ที่ซับซ้อน / ซับซ้อน มันเป็นลักษณะสำคัญของเหตุผลการออกแบบ OOPแต่ตอนนี้เรามีระบบ OOP ที่ซับซ้อนมาก! เน้นการไตร่ตรองของมันได้นำไปสู่คลาสสิกในสาขาเช่นตำนานคนเดือนโดยบรูกส์ซึ่งในหลายวิธียังคงมุมมองที่ถูกต้องมากอาจมีความเกี่ยวข้องมากขึ้นกว่าเมื่อมันถูกเขียน

  • ความเท่าเทียม มีการเปลี่ยนแปลงฮาร์ดแวร์ไปสู่ความขนานมากขึ้น (เช่นมัลติคอร์ ฯลฯ ) และการเพิ่มความเร็วของนาฬิกานั้นไม่เพียงพอที่จะเพิ่มประสิทธิภาพ การเปลี่ยนแปลงนี้เกิดขึ้นในช่วงกลางยุค 2000 และมีอิทธิพลอย่างมากต่อการวิจัย / ออกแบบภาษา การขนานกันเป็นหัวข้ออยู่เสมอ แต่มันมีความโดดเด่นใหม่ ๆ / เร่งด่วนและมีความคิดที่เป็นที่ยอมรับ / ฉันทามติอย่างกว้างขวางว่าการขนานกันนั้นซับซ้อนและยากเกินไปในการเขียนโปรแกรมและวิธีการทางทฤษฎีที่แตกต่างกัน อ้างอิงที่ดีเกี่ยวกับเรื่องนี้: ทิวทัศน์ของการวิจัยการคำนวณแบบขนาน: มุมมองจาก Berkeley

  • datamining / ข้อมูลขนาดใหญ่ สิ่งเหล่านี้มีอิทธิพลต่อการออกแบบภาษาโปรแกรม ทิศทางใหม่ในสถาปัตยกรรมฐานข้อมูลคือ rippling / impacting ภาษาโปรแกรม

  • คอมพิวติ้งที่มีผลกระทบอย่างมีนัยสำคัญในการออกแบบภาษาและยังคาบเกี่ยวกับความเท่าเทียมและ datamining / ข้อมูลขนาดใหญ่เช่นกับภาษาใหม่ ๆ เช่นMapReduce

  • ภาพ / การเขียนโปรแกรม dataflow มีการเพิ่มขึ้นของ "ภาษา" ประเภทนี้ (ในแง่ของการเขียนโปรแกรมด้วยสายตานั้นมีหลายวิธีที่จะแยกการเขียนโปรแกรมจาก "ภาษา") การผสมเกสรข้ามที่แข็งแกร่งยังมีความเท่าเทียม

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

การอ้างอิงที่อาจมีแนวคิดที่เป็นประโยชน์ตามแนว "อนาคตของภาษาการเขียนโปรแกรม", Beyond Javaโดย Tate เขาใคร่ครวญ (แม้ว่าจะมีข้อโต้แย้ง) ว่าบางทีชวา (หนึ่งในภาษาโปรแกรมที่ซับซ้อน / ครอบคลุมที่สุดในการดำรงอยู่) ก็เริ่มแสดงอายุของมันและมีสัญญาณเริ่มต้นของภาษาใหม่ / แนวทางใหม่ที่จะเติมเต็มในระยะยาว

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