คำตอบของฉันเป็นเพียงรายละเอียดของ Gilles 'ที่ฉันไม่ได้อ่านก่อนที่ฉันจะเขียนของฉัน บางทีมันอาจจะมีประโยชน์
ให้ฉันเริ่มต้นความพยายามในการตอบคำถามของคุณด้วยความแตกต่างระหว่างสองมิติของภาษาการเขียนโปรแกรมที่เกี่ยวข้องกับทฤษฎีภาษาโปรแกรมโดยทั่วไปและแคลคูลัสกระบวนการโดยเฉพาะ
โดยทั่วไปแล้วจะเกิดขึ้นในอุตสาหกรรมโดยมีวัตถุประสงค์เพื่อให้ภาษาการเขียนโปรแกรมเป็นผลิตภัณฑ์ ทีมพัฒนา Java ที่ Oracle และ C # ที่ Microsoft เป็นตัวอย่าง ในทางตรงกันข้ามการวิจัยที่บริสุทธิ์ไม่ได้เชื่อมโยงกับผลิตภัณฑ์ โดยมีวัตถุประสงค์คือเพื่อทำความเข้าใจภาษาการเขียนโปรแกรมเป็นวัตถุที่น่าสนใจและสำรวจโครงสร้างทางคณิตศาสตร์ที่รองรับภาษาการเขียนโปรแกรมทั้งหมด
เนื่องจากเป้าหมายที่แตกต่างกันแง่มุมต่าง ๆ ของทฤษฎีภาษาโปรแกรมนั้นมีความเกี่ยวข้องในการวิจัยที่บริสุทธิ์และในการวิจัยและพัฒนาผลิตภัณฑ์ R&D ภาพด้านล่างอาจแสดงสิ่งที่สำคัญ
อาจมีคนถาม ณ จุดนี้ว่าทำไมทั้งสองมิติจึงดูแตกต่างกันและเกี่ยวข้องกันอย่างไร
ความเข้าใจที่สำคัญคือการวิจัยและพัฒนาภาษาการเขียนโปรแกรมมีหลายมิติ: เทคนิคสังคมและเศรษฐกิจ เกือบตามคำนิยามอุตสาหกรรมมีความสนใจในผลตอบแทนทางเศรษฐกิจของภาษาโปรแกรม Microsoft และอัลไม่ได้พัฒนาภาษาจากความดีในใจของพวกเขา แต่เพราะพวกเขาเชื่อว่าภาษาการเขียนโปรแกรมให้พวกเขาได้เปรียบทางเศรษฐกิจ และพวกเขาได้ทำการตรวจสอบอย่างลึกซึ้งว่าเหตุใดภาษาการเขียนโปรแกรมบางภาษาจึงประสบความสำเร็จและคนอื่น ๆ ดูเหมือนกันหรือมีคุณสมบัติขั้นสูงมากกว่า และพวกเขาพบว่าไม่มีเหตุผลเดียว ภาษาการเขียนโปรแกรมและสภาพแวดล้อมของภาษานั้นซับซ้อนและเป็นสาเหตุของการใช้หรือละเว้นภาษาเฉพาะใด ๆ แต่ปัจจัยที่สำคัญที่สุดเพียงประการเดียวสำหรับความสำเร็จของภาษาโปรแกรมคือสิ่งที่แนบมาพิเศษของโปรแกรมเมอร์กับภาษาที่มีการใช้กันอย่างแพร่หลาย: ยิ่งมีคนใช้ภาษา, ห้องสมุด, เครื่องมือ, สื่อการสอนมากขึ้นและมีโปรแกรมเมอร์มากขึ้น สามารถใช้ภาษานั้นได้ สิ่งนี้เรียกว่าเอฟเฟกต์เครือข่าย อีกเหตุผลหนึ่งคือภาษาที่สลับค่าใช้จ่ายสูงสำหรับบุคคลและองค์กร: ภาษาที่เชี่ยวชาญโดยเฉพาะกับโปรแกรมเมอร์ที่ไม่ค่อยมีประสบการณ์และเมื่อระยะทางความหมายของภาษาที่คุ้นเคยนั้นมีขนาดใหญ่นั้นเป็นเรื่องที่ใช้เวลานานและจริงจัง จากข้อเท็จจริงเหล่านี้เราอาจถามว่าทำไมภาษาใหม่ถึงได้รับแรงฉุดเลย? ทำไม บริษัท ถึงต้องพัฒนาภาษาใหม่ ๆ ? ทำไมเราไม่อยู่กับ Java หรือ Cobol ฉันคิดว่ามีเหตุผลสำคัญหลายประการสำหรับเวย์ที่ภาษาประสบความสำเร็จ
โดเมนใหม่ของการเขียนโปรแกรมเปิดขึ้นซึ่งไม่มีหน้าที่ในการไล่ ตัวอย่างหลักคือเว็บที่มีจาวาสคริปต์เพิ่มขึ้น
ความหนืดของภาษา จากนี้ฉันหมายถึงราคาที่สูงของการเปลี่ยนภาษา แต่บางครั้งโปรแกรมเมอร์ก็ย้ายไปยังสาขาต่าง ๆ การใช้ภาษาการเขียนโปรแกรมกับพวกเขาและประสบความสำเร็จกับภาษาเก่าในสาขาใหม่
ภาษาถูกผลักดันโดย บริษัท ขนาดใหญ่ที่มีอาวุธทางการเงินที่ร้ายแรง การสำรองข้อมูลนี้ช่วยลดความเสี่ยงของการยอมรับเนื่องจากผู้ใช้ในช่วงต้นสามารถมั่นใจได้ว่าภาษาจะยังคงได้รับการสนับสนุนในอีกไม่กี่ปี ตัวอย่างที่ดีของสิ่งนี้คือ C #
ภาษาอาจมาพร้อมกับเครื่องมือที่น่าสนใจและระบบนิเวศ ที่นี่ด้วย C # และเป็น. Net และ Visual Studio eco-system อาจถูกกล่าวถึงเป็นตัวอย่าง
ภาษาเก่ารับคุณสมบัติใหม่ Java อยู่ในใจซึ่งในแต่ละการวนซ้ำหยิบความคิดที่ดีขึ้นจากประเพณีการเขียนโปรแกรมการทำงาน
ในที่สุดภาษาใหม่อาจมีข้อได้เปรียบทางเทคนิคที่แท้จริงเช่นมีความชัดเจนมากขึ้นมีไวยากรณ์ที่ดีกว่าระบบการพิมพ์ที่จับข้อผิดพลาดได้มากขึ้นเป็นต้น
ด้วยพื้นฐานนี้จึงไม่น่าแปลกใจเลยที่จะมีการตัดการเชื่อมต่อระหว่างการวิจัยภาษาโปรแกรมบริสุทธิ์และการพัฒนาภาษาโปรแกรมเชิงพาณิชย์ ในขณะที่ทั้งคู่ตั้งเป้าที่จะสร้างซอฟต์แวร์และวิวัฒนาการให้มีประสิทธิภาพมากขึ้นโดยเฉพาะอย่างยิ่งซอฟต์แวร์ขนาดใหญ่งานด้านการเขียนโปรแกรมเชิงอุตสาหกรรมจะต้องให้ความสนใจในการอำนวยความสะดวกในการนำไปใช้อย่างรวดเร็วเพื่อเข้าถึงกลุ่มที่สำคัญ สิ่งนี้นำไปสู่การมุ่งเน้นการวิจัยเกี่ยวกับสิ่งต่าง ๆ ที่โปรแกรมเมอร์ทำงานดูแล และนั่นก็มักจะเป็นสิ่งที่ต้องการเช่นความพร้อมใช้งานของไลบรารีความเร็วของคอมไพเลอร์คุณภาพของโค้ดที่คอมไพล์ความสามารถในการพกพาและอื่น ๆ แคลคูลัสของกระบวนการที่เราฝึกฝนในวันนี้มีประโยชน์น้อยต่อโปรแกรมเมอร์ที่ทำงานในโครงการหลัก (แม้ว่าฉันเชื่อว่ามันจะเปลี่ยนไปในอนาคต)
การวิจัยภาษาการเขียนโปรแกรมบริสุทธิ์นั้นแตกต่างกันมาก มันทำงานร่วมกับรูปแบบการเขียนโปรแกรมภาษาที่ง่ายขึ้น: -calculus เป็นฟังก์ชั่นการเขียนโปรแกรมที่ง่ายมาก ในทำนองเดียวกัน -calculus เป็นการลดความซับซ้อนอย่างมากของการเขียนโปรแกรมพร้อมกัน การทำให้เข้าใจง่ายขนาดใหญ่เหล่านี้เป็นกุญแจสู่การวิจัยที่ประสบความสำเร็จ มันช่วยให้เราสามารถมุ่งเน้นไปที่กลไกการคำนวณหลัก (เช่นเธบีตาλπβ- การลดสำหรับการเขียนโปรแกรมการทำงานการแก้ปัญหา / การรวมสำหรับการเขียนโปรแกรมตรรกะการส่งชื่อสำหรับการคำนวณพร้อมกัน) เพื่อให้เข้าใจว่าภาษาอย่างสกาล่าสามารถใช้การอนุมานแบบเต็มรูปแบบได้หรือไม่เราไม่ต้องกังวลเกี่ยวกับ JVM การคิดเกี่ยวกับ JVM จริงจะทำให้เสียความเข้าใจที่ดีขึ้นของการอนุมานประเภท นั่นเป็นสาเหตุที่ทำให้นามธรรมของการคำนวณเป็นนิวคอร์เล็ก ๆ นั้นมีความสำคัญและทรงพลัง
ดังนั้นคุณสามารถคิดว่าการวิจัยภาษาโปรแกรมเป็นแซนด์บ็อกซ์ขนาดใหญ่ที่ผู้คนเล่นกับของเล่นและหากพวกเขาพบสิ่งที่น่าสนใจเมื่อเล่นกับของเล่นที่เฉพาะเจาะจงและได้ตรวจสอบของเล่นอย่างละเอียดแล้วของเล่นที่น่าสนใจจะเริ่มเดินขบวน . ฉันพูดว่าเดินขบวนนาน ๆ เพราะคุณสมบัติทางภาษาที่คิดค้นโดยนักวิจัยด้านการเขียนโปรแกรมภาษามักจะใช้เวลาหลายทศวรรษกว่าจะได้รับการยอมรับ ยกตัวอย่างเช่นการเก็บขยะได้เกิดขึ้นในช่วงทศวรรษที่ 1950 และแพร่หลายใน Java ในปี 1990 การจับคู่รูปแบบ harks กลับไปปี 1970 และมีการใช้กันอย่างแพร่หลายตั้งแต่ Scala
แคลคูลัสกระบวนการเป็นของเล่นที่น่าสนใจเป็นพิเศษ แต่มันใหม่เกินไปที่จะตรวจสอบอย่างละเอียด นั่นจะใช้เวลาอีกทศวรรษของการวิจัยที่บริสุทธิ์ สิ่งที่กำลังเกิดขึ้นในการวิจัยทฤษฎีกระบวนการคือการนำเรื่องราวความสำเร็จที่ยิ่งใหญ่ที่สุดเพียงอย่างเดียวของการวิจัยภาษาโปรแกรม, ทฤษฎีของประเภท (เรียงตามลำดับ) และพัฒนาทฤษฎีของประเภทสำหรับการส่งข้อความพร้อมกัน ระบบการพิมพ์ที่มีความหมายปานกลางสำหรับการเขียนโปรแกรมซีเควนเชียลกล่าวว่า Hindley-Milner ปัจจุบันมีความเข้าใจแพร่หลายและได้รับการยอมรับจากโปรแกรมเมอร์ที่ทำงาน เราต้องการที่จะแสดงประเภทปานกลางสำหรับการเขียนโปรแกรมพร้อมกัน งานวิจัยนี้เริ่มต้นขึ้นในปี 1980 โดยผู้บุกเบิกอย่าง Milner, Sangiorgi, Turner, Kobayashi, Honda, และคนอื่น ๆ ซึ่งมีพื้นฐานมาจากแนวคิดเชิงเส้นตรงซึ่งมาจากตรรกะเชิงเส้น ไม่กี่ปีที่ผ่านมาได้เห็นการเพิ่มขึ้นอย่างมากในกิจกรรมและฉันคาดว่าเส้นทางนี้ขึ้นเพื่อดำเนินการต่อไปในอนาคตอันใกล้ ฉันยังคาดหวังว่างานนี้จะเริ่มรั่วเข้าไปในผลิตภัณฑ์ที่เน้นการวิจัยและพัฒนาในส่วนของเหตุผลที่นักวิจัยรุ่นใหม่ที่ได้รับการฝึกอบรมในแคลคูลัสในกระบวนการจะไปทำงานในห้องปฏิบัติการวิจัยและพัฒนาอุตสาหกรรม แต่เพราะวิวัฒนาการของ CPU และสถาปัตยกรรมคอมพิวเตอร์ จากรูปแบบการคำนวณตามลำดับ
โดยสรุปแล้วฉันจะไม่กังวลว่าคุณจะไม่พบทฤษฎีภาษาการเขียนโปรแกรมที่ทันสมัยเช่นแคลคูลัสของกระบวนการที่มีประโยชน์ในการสร้างภาษาของคุณเอง นั่นเป็นเพียงเพราะทฤษฎีที่ทันสมัยไม่ได้อยู่ที่ความกังวลของภาษาการเขียนโปรแกรมปัจจุบัน มันเกี่ยวกับภาษาในอนาคต มันจะใช้เวลาสักครู่สำหรับ 'โลกแห่งความจริง' ที่จะตามหา ความรู้ที่คุณใช้ในการสร้างภาษาสำหรับวันนี้คือทฤษฎีภาษาโปรแกรมของอดีต ฉันขอแนะนำให้คุณเรียนรู้เพิ่มเติมเกี่ยวกับแคลคูลัสของกระบวนการเพราะมันเป็นหนึ่งในสาขาวิชาที่น่าสนใจที่สุดของวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี