Apakah ada bahasa lengkap untuk tujuan umum non-Turing umum yang tersedia saat ini?


11

Bahasa lengkap Non-Turing menawarkan keuntungan besar daripada bahasa lengkap Turing karena lebih mudah dianalisis dan, karenanya, menawarkan kemungkinan pengoptimalan yang lebih luas. Namun mereka hampir tidak digunakan dan kelengkapan Turing sebenarnya dijual sebagai fitur yang baik.

Apakah ada bahasa umum non-Turing lengkap yang tersedia saat ini yang dibuat untuk pemrograman tujuan umum?


8
Saya pikir dua hal yang Anda cari saling tidak kompatibel. Jika non-turing selesai, maka tidak dapat diubah ke penggunaan sewenang-wenang.
Bobson

@Dokkat Saya telah membuka kembali pertanyaan dan menghapus diskusi Meta dari komentar. Harap dicatat bahwa jika Anda tidak setuju dengan salah satu pedoman situs, cara yang tepat untuk mengikuti kontes adalah memposting diskusi Meta; tidak hanya mengabaikannya. Selanjutnya, untuk pertanyaan subyektif, kunci keberhasilan adalah penelitian sebelumnya dan definisi yang ketat. Semakin banyak Anda meneliti, semakin spesifik (dan dapat dijawab) pertanyaan Anda, dan semakin jauh Anda dapatkan dari ruang yang terkenal "tidak konstruktif".
yannis

Juga, mengapa Anda menganggap "kemungkinan pengoptimalan yang lebih luas" sebagai "keuntungan besar"? Ini bukan untuk mengatakan bahwa pengoptimalan tidak bermanfaat, tetapi saya tentu tidak akan menyebut pengoptimalan yang melekat pada bahasa sebagai "keuntungan besar" mengingat kekuatan komputer modern.
Bobson

2
Coq dapat dianggap sebagai "arus utama" dalam domainnya, dengan pesaing (HOL, Agda, ACL dan lainnya) menjadi kurang terlihat.
SK-logic

Mungkin saya tidak benar-benar mengerti apa itu turing-kelengkapan, tapi bagaimana bahasa bisa menjadi tujuan umum dan non-Turing lengkap? Saya pikir makna menjadi non-Turing lengkap, tidak bisa melakukan tugas komputasi, sehingga ditujukan untuk tujuan tertentu ..?
Aviv Cohn

Jawaban:


24

Tidak ada bahasa utama multi-tujuan Turing multi-tujuan umum saat ini. Namun, ada beberapa bahasa spesifik domain lengkap non Turing. ANSI SQL, ekspresi reguler, bahasa data (HTML, CSS, JSON, dll), dan ekspresi-s adalah beberapa contoh penting.

Sebenarnya tidak ada manfaat untuk bahasa lengkap multi-tujuan selain Turing. Aspek "jauh lebih mudah dianalisis", yang saya asumsikan adalah anggukan pada teorema Rice, memang berlaku tetapi tidak masuk akal untuk bahasa yang menargetkan beberapa domain aplikasi yang berbeda, persyaratan lain diutamakan. Fleksibilitas kelengkapan Turing jauh lebih penting daripada kompleksitasnya. Bahasa pemrograman, seperti setiap bagian dari perangkat lunak lainnya, semuanya berkaitan dengan pertukaran.

Untuk bahasa spesifik domain, di sisi lain, mungkin saja sebaliknya. Jika Anda tidak membangun "satu bahasa untuk mengatur semuanya", Anda bebas menerapkan hanya fitur yang masuk akal untuk tujuan khusus bahasa Anda. Dan lebih sering daripada tidak, kelengkapan Turing bukan salah satunya.


CSS3 adalah Turing-lengkap.
SK-logic

5
@ SK-logic CSS memang masuk akal tanpa HTML, itu dapat diterapkan ke segala jenis XML dan tidak ada yang menghentikan Anda dari menerapkannya untuk format lain dengan bentuk yang hampir kompatibel (pohon dengan node bernama, urutan saudara, dll). Saya pribadi menulis aturan CSS untuk file SVG. Ini jauh lebih umum untuk HTML karena HTML jauh lebih umum daripada format lainnya.

2
@ Mike, itu analogi yang rusak. Semantik CSS3 terkait erat dengan semantik bahasa presentasi.
SK-logic

2
Perhatikan bahwa SQL dengan Windowing dan CTE (yaitu SQL: 2003) juga Turing-complete.
Jörg W Mittag

1
"Tidak ada bahasa utama multi-tujuan Turing utama selain Turing hari ini." - C tanpa penyimpanan eksternal bukan Turing-complete, namun sangat umum dan mainstream. (Yah, saya pribadi akan berpendapat bahwa itu adalah Bahasa Khusus Domain untuk menulis kernel Unix, dan bahkan tidak terlalu bagus dalam hal itu, tetapi dunia tidak setuju.)
Jörg W Mittag

-3

Alasan Turing bahasa tidak lengkap tidak mainstream adalah karena mudah untuk menerapkan sendiri kapan pun Anda membutuhkannya dan bagaimanapun Anda membutuhkannya. Contoh yang menarik adalah skrip bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
Betulkah? Pikiran menerapkan Coq dari awal, sendiri, jika itu mudah?
SK-logic

Apakah ini hanya pendapat Anda atau Anda dapat mendukungnya?
nyamuk

Contohnya adalah semua bahasa khusus-domain yang tidak membutuhkan rekursi, iterasi tanpa batas, atau tarpit Turing lainnya. Juga, saya yakin sebagian besar dari kita telah menerapkan semacam kalkulator sederhana yang memproses aritmatika dasar.
MauganRa

1
Saya setuju bahwa tidak sepele untuk menjaga bahasa Turing-tidak lengkap. Bahkan tanpa turing Turing yang jelas, itu selalu bisa mengandung bug penyusun yang memungkinkan untuk menggunakan salah satu platform yang mendasarinya.
MauganRa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.