Чи доступні сьогодні загальні нетуркінські цілі мови загального призначення на сьогодні?


12

Повні мови, які не є Тюрінгом, пропонують велику перевагу перед мовами, повними Тюрінгом, оскільки вони набагато проаналізованіші і, таким чином, пропонують набагато більш широкі можливості оптимізації. Однак вони ледве використовуються, і повнота Тьюрінга насправді продається як хороша особливість.

Чи є на сьогодні доступні основні мови, які не є Тьюрінгом, які призначені для програмування загального призначення?


8
Я думаю, що дві речі, які ви шукаєте, взаємно несумісні. Якщо воно не завершено, це не може бути використане для будь-якого довільного використання.
Бобсон

@Dokkat Я знову відкрив питання та видалив обговорення Meta з коментарів. Зверніть увагу, що якщо ви не погоджуєтесь з одним із вказівок сайту, правильним способом оскаржити це є розміщення мета-дискусії; не просто ігнорувати це. Крім того, для суб'єктивних питань запорукою успіху є попереднє дослідження та чітке визначення. Чим більше ви досліджуєте, тим більш конкретним (і відповідальним) стає ваше питання, і чим далі ви потрапляєте до горезвісного «неконструктивного» простору.
янніс

Крім того, чому ви вважаєте "широкі можливості оптимізації" "великою перевагою"? Це не означає, що оптимізація не варта, але я, безумовно, не назвав би притаманну оптимізованість мови "великою перевагою", враховуючи потужність сучасних комп'ютерів.
Бобсон

2
Coq можна вважати досить «мейнстрімом» у своїй галузі, причому конкуренти (HOL, Agda, ACL та подібні) значно менше помітні.
SK-логіка

Можливо, я насправді не розумію, що таке тюрінг-повнота, але як мова може бути загальною та нетургінською повною? Я думав, що сенс бути не Тьюрінгом повним, не в змозі виконати жодних обчислювальних завдань, таким чином спрямований на конкретну мету ..?
Авів Кон

Відповіді:


24

Сьогодні не існує основних багатоцільових нетургінських повноцінних мов. Однак існує декілька мов, що не поширюють Тюрінга, на повний домен. ANSI SQL, регулярні вирази, мови даних (HTML, CSS, JSON тощо) та s-вирази - деякі помітні приклади.

Немає користі для багатоцільових нетургійних повних мов. "Більш проаналізований" аспект, який я припускаю, є кивком теоремі Райса, застосовується, але це не має особливого сенсу для мов, націлених на кілька різних областей додатків, інші вимоги мають перевагу. Гнучкість повноти Тьюрінга набагато важливіша, ніж її складність. Мови програмування, як і всі інші програми, стосуються компромісів.

З іншого боку, для доменних мов це може бути навпаки. Якщо ви не будуєте "однієї мови, щоб керувати ними всіма", ви можете реалізувати лише ті функції, які мають сенс для дуже конкретного призначення вашої мови. І частіше за все, повнота Тюрінга не одна з них.


CSS3 є Тьюрінгом.
SK-логіка

5
@ SK-логічний CSS має сенс без HTML, він може бути застосований до будь-якого типу XML і ніщо не заважає вам реалізувати його для будь-якого іншого формату з приблизно сумісною формою (дерева з названими вузлами, порядок виведення братів тощо). Я особисто написав правила CSS для файлу SVG. Це набагато частіше для HTML, оскільки HTML набагато частіше, ніж інші формати.

2
@Mike, це зламана аналогія. CSS3 семантика тісно пов'язана з семантикою мови презентації.
SK-логіка

2
Зауважте, що SQL з вікнами та CTE (тобто SQL: 2003) також є повним Turing.
Йорг W Міттаг

1
"На сьогоднішній день не існує основних багатоцільових нетургінських повноцінних мов." - C без зовнішнього сховища не є повним Тьюрінгом, але він дуже загальний і основний. (Ну, я особисто стверджую, що мова для запису ядер Unix є специфічною для домену, і навіть не дуже хороша в цьому, але світ не погоджується.)
Jörg W

-3

Причина, що Тюрінг неповних мов не є мейнстрімом, полягає в тому, що легко реалізувати свої власні, коли вам це потрібно, і як би вам це не було потрібно. Цікавим прикладом є біткойн-скрипт: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
Дійсно? Розумієте реалізовувати Coq з нуля, самостійно, якщо це так просто?
SK-логіка

це лише ваша думка чи ви можете якось це підкріпити?
гнат

Прикладами є всі мови, що стосуються домену, які не потребують рекурсії, необмеженої ітерації чи інших тирінгів Тьюрінга. Крім того, я впевнений, що більшість із нас застосували якісь прості калькулятори, які обробляють основні арифметичні.
MauganRa

1
Я погоджуюся, хоча тримати мову Тьюрінга неповним не суттєво. Навіть без очевидних таріптів Тьюрінга він завжди може містити помилку компілятора, що дає можливість використовувати одну з базових платформ.
MauganRa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.