Alcuni problemi di programmazione non richiedono la piena potenza di una macchina di Turing da risolvere. Possono essere risolti con molta meno energia. Sto cercando un linguaggio di programmazione con minore potenza.Esiste un linguaggio di programmazione che ha solo il potere di un automa push-down deterministico, e non di più?
Does esiste un linguaggio di programmazione di alto livello che è costretto a sostenere solo queste funzionalità:
Una pila con le operazioni per spingere i valori sui valori dello stack e pop dallo stack.
Una macchina a stati finiti (FSM) per immettere valori, passare da stato a stato, interagire con lo stack e generare risultati.
mi rendo conto che avrei potuto usare Java o C o Python (etc.) e vincolare la lingua, scrivendo un programma che utilizza solo una pila e un FSM. Tuttavia, sto cercando un linguaggio di programmazione che abbia solo queste capacità e non di più.
In altre parole, non voglio usare un linguaggio di programmazione completo di Turing per risolvere problemi che richiedono solo la potenza di un automa push-down deterministico. Voglio usare un linguaggio di programmazione che abbia solo il potere di un automa push-down deterministico.
Forse il richiedente non era alla ricerca di efficienza, ma piuttosto delle buone proprietà che derivano dall'uso di un modello computazionale con meno potenza di una macchina di Turing? Forse stava cercando di essere in grado di ragionare sulle proprietà del suo programma che sarebbero indecidibili con una Turing Machine, ma che è decidibile per un modello computazionale meno potente. – Guildenstern
Buon punto, grazie! Penso che la risposta probabilmente ritorni ancora a "probabilmente non lo chiameresti un linguaggio di programmazione se avesse quel piccolo potere". Sospetto che tu possa trovare questo tipo in una sorta di linguaggi "colla" o forse in semplici motori di scripting, anche se non riesco a trovare un buon esempio. Le espressioni regolari (nella loro forma semplice) sono tuttavia canonicamente uguali a una macchina a stati finiti. Questa domanda http://stackoverflow.com/questions/315340/practical-non-turing-complete-languages ha alcune risposte interessanti. – akroy