Esistono oggi lingue complete tradizionali non turing per uso generico?


11

Le lingue complete senza Turing offrono un grande vantaggio rispetto alle lingue complete di Turing in quanto sono molto più analizzabili e, quindi, offrono possibilità di ottimizzazione molto più ampie. Tuttavia sono usati a malapena e la completezza di Turing è in realtà venduta come una buona caratteristica.

Esistono oggi lingue tradizionali non complete di Turing create per la programmazione generale?


8
Penso che le due cose che stai cercando siano reciprocamente incompatibili. Se non è completo, non può essere utilizzato in modo arbitrario.
Bobson,

@Dokkat Ho riaperto la domanda e rimosso la discussione Meta dai commenti. Si noti che se non si è d'accordo con una delle linee guida del sito, il modo corretto di contestare è pubblicare una discussione Meta; non semplicemente ignorarlo. Inoltre, per questioni soggettive, la chiave del successo è la ricerca preliminare e la definizione rigorosa. Più ricerche, più specifica (e rispondente) diventa la tua domanda, e più ti allontani dal famigerato spazio "non costruttivo".
yannis,

Inoltre, perché consideri le "più ampie possibilità di ottimizzazione" un "grande vantaggio"? Questo non vuol dire che l'ottimizzazione non sia utile, ma certamente non definirei l'ottimizzabilità intrinseca di una lingua un "grande vantaggio" dato il potere dei computer moderni.
Bobson,

2
Coq può essere considerato piuttosto "mainstream" nel suo dominio, con i concorrenti (HOL, Agda, ACL e simili) molto meno visibili.
SK-logic,

Forse in realtà non capisco cosa sia la completezza turing, ma come può una lingua essere generale e non completa Turing? Ho pensato che il significato di non-Turing fosse completo, non essere in grado di svolgere alcun compito computazionale, mirando quindi a uno scopo specifico ...?
Aviv Cohn,

Risposte:


24

Oggi non ci sono lingue complete tradizionali e non Turing. Esistono, tuttavia, diverse lingue specifiche del dominio completo non Turing. SQL ANSI, espressioni regolari, linguaggi di dati (HTML, CSS, JSON, ecc.) Ed espressioni s sono alcuni esempi notevoli.

Non ci sono davvero vantaggi per le lingue complete non Turing multiuso. L'aspetto "molto più analizzabile", che presumo sia un cenno al teorema di Rice, si applica ma non ha molto senso per le lingue che hanno come target diversi domini applicativi diversi, altri requisiti hanno la precedenza. La flessibilità della completezza di Turing è molto più importante della sua complessità. I linguaggi di programmazione, come ogni altro software, riguardano tutti i compromessi.

Per le lingue specifiche del dominio, d'altra parte, potrebbe essere il contrario. Se non stai costruendo "una lingua per dominarle tutte", sei libero di implementare solo le funzionalità che hanno senso per lo scopo molto specifico della tua lingua. E il più delle volte, la completezza di Turing non è una di queste.


CSS3 è Turing completo.
SK-logic,

5
@ SK-logic Il CSS ha senso senza HTML, può essere applicato a qualsiasi tipo di XML e nulla ti impedisce di implementarlo per qualsiasi altro formato con forma approssimativamente compatibile (alberi con nodi denominati, ordine di fratelli, ecc.). Ho scritto personalmente regole CSS per un file SVG. È solo molto più comune per HTML perché HTML è molto più comune rispetto agli altri formati.

2
@ Mike, questa è un'analogia rotta. La semantica CSS3 è strettamente legata alla semantica del linguaggio di presentazione.
SK-logic,

2
Si noti che anche SQL con Windowing e CTE (ovvero SQL: 2003) è completo di Turing.
Jörg W Mittag,

1
"Oggi non ci sono lingue complete tradizionali non turing per tutti gli usi." - C senza memoria esterna non è completo di Turing, ma è per lo più generico e mainstream. (Beh, personalmente direi che è un linguaggio specifico del dominio per scrivere kernel Unix, e non è nemmeno particolarmente bravo in questo, ma il mondo non è d'accordo.)
Jörg W Mittag

-3

Il motivo per cui le lingue incomplete di Turing non sono mainstream è che è facile implementare le tue quando ne hai bisogno e comunque ne hai bisogno. Un esempio interessante è lo script bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
Veramente? Ti dispiace implementare Coq da zero, da solo, se è così facile?
SK-logic

è solo questa la tua opinione o puoi sostenerla in qualche modo?
moscerino del

Esempi sono tutte le lingue specifiche del dominio che non richiedono ricorsione, iterazione illimitata o altri tarp di Turing. Inoltre, sono sicuro che molti di noi hanno implementato una sorta di semplici calcolatori che elaborano l'aritmetica di base.
MauganRa,

1
Sono d'accordo però che non è banale mantenere la lingua di Turing incompleta. Anche senza evidenti tarp di Turing, potrebbe sempre contenere un bug del compilatore che consente di utilizzare una delle piattaforme sottostanti.
MauganRa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.