วันนี้มีภาษาที่สมบูรณ์แบบที่ไม่ใช่วัตถุประสงค์ทัวไปหรือไม่


12

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

วันนี้มีภาษาที่ไม่ครบถ้วนทัวริงที่มีอยู่ในปัจจุบันสำหรับการเขียนโปรแกรมวัตถุประสงค์ทั่วไปหรือไม่?


8
ฉันคิดว่าสองสิ่งที่คุณมองหาไม่สอดคล้องกัน หากไม่ได้ทำให้เสร็จสมบูรณ์ก็จะไม่สามารถใช้งานได้ตามอำเภอใจ
Bobson

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

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

2
Coq ถือได้ว่าเป็น "กระแสหลัก" ที่สวยงามในโดเมนของตนโดยมีคู่แข่ง (HOL, Agda, ACL และอื่น ๆ ) ซึ่งมองเห็นได้น้อยกว่ามาก
SK-logic

บางทีฉันอาจไม่เข้าใจว่าทัวริงสมบูรณ์อะไร แต่ภาษาจะมีจุดประสงค์ทั่วไปและไม่ทัวริงสมบูรณ์ได้อย่างไร ฉันคิดว่าความหมายของการไม่เป็นทัวริงนั้นไม่สามารถทำงานการคำนวณใด ๆ ได้ดังนั้นจึงมุ่งไปที่วัตถุประสงค์เฉพาะ ..
Aviv Cohn

คำตอบ:


24

วันนี้ไม่มีภาษาสมบูรณ์แบบทัวริงที่ไม่มีจุดประสงค์หลัก อย่างไรก็ตามมีภาษาเฉพาะโดเมนที่ไม่ใช่ทัวริงที่สมบูรณ์หลายภาษา ANSI SQL, นิพจน์ทั่วไป, ภาษาข้อมูล (HTML, CSS, JSON, ฯลฯ ) และ s-expressions เป็นตัวอย่างที่น่าสังเกต

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

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


CSS3 คือทัวริงสมบูรณ์
SK-logic

5
@ SK-logic CSS ไม่มีเหตุผลที่ทำให้ HTML สามารถนำไปใช้กับ XML ชนิดใดก็ได้และไม่มีอะไรทำให้คุณไม่สามารถนำไปใช้กับรูปแบบอื่น ๆ ที่มีรูปร่างที่เข้ากันได้ (ต้นไม้ที่มีโหนดที่มีชื่อลำดับพี่น้องเป็นต้น) ฉันได้เขียนกฎ CSS ส่วนตัวสำหรับไฟล์ SVG มันเป็นเรื่องธรรมดาสำหรับ HTML เพราะ HTML นั้นเป็นเรื่องธรรมดามากกว่ารูปแบบอื่น ๆ

2
@ ไมค์นั่นคือการเปรียบเทียบที่ไม่ดี ความหมายของ CSS3 เชื่อมโยงกับความหมายของภาษาการนำเสนออย่างใกล้ชิด
SK-logic

2
โปรดทราบว่า SQL ที่มี Windowing และ CTE (เช่น SQL: 2003) นั้นยังเป็น Turing-complete
Jörg W Mittag

1
วันนี้ไม่มีภาษาสมบูรณ์แบบทัวริงที่ไม่ใช่วัตถุประสงค์หลัก - C ที่ไม่มีที่เก็บข้อมูลภายนอกนั้นไม่ได้มีการทำให้ทัวริงสมบูรณ์ แต่เป็นวัตถุประสงค์ทั่วไปและกระแสหลักมาก (โดยส่วนตัวแล้วฉันจะโต้แย้งว่ามันเป็นภาษาเฉพาะโดเมนสำหรับการเขียนเคอร์เนล Unix และไม่ได้ดีโดยเฉพาะอย่างยิ่งที่ แต่โลกไม่เห็นด้วย)
Jörg W Mittag

-3

เหตุผลที่ภาษาทัวริงที่ไม่สมบูรณ์นั้นไม่สำคัญเพราะมันง่ายต่อการใช้งานของคุณเองทุกครั้งที่คุณต้องการและคุณต้องการมัน ตัวอย่างที่น่าสนใจคือ bitcoin-script: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
จริงๆ? สนใจการใช้ Coq ตั้งแต่เริ่มต้นด้วยตัวคุณเองถ้ามันง่ายขนาดนั้น?
SK-logic

นี่เป็นเพียงความคิดเห็นของคุณหรือคุณสามารถสำรองข้อมูลได้
ริ้น

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

1
ฉันยอมรับว่ามันไม่สำคัญที่จะรักษาภาษาทัวริงที่ไม่สมบูรณ์ แม้ว่าจะไม่มี Turing tarpits อย่างชัดเจน แต่ก็อาจมีข้อผิดพลาดของคอมไพเลอร์ซึ่งทำให้สามารถใช้หนึ่งในแพลตฟอร์มพื้นฐานได้
MauganRa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.