2009-03-29 9 views
12

Mi chiedo se MATLAB sia Turing complete (= computazionalmente universale, ad esempio "se può essere utilizzato per simulare qualsiasi macchina di Turing a nastro singolo")?Mi chiedo se MATLAB sia completo di Turing (computazionalmente universale)?

+0

Ho riformulato la mia domanda per trasmettere ciò che intendevo veramente. –

+1

Perché non implementare una macchina di Turing in Matlab per provarlo da solo? – nibot

+0

Si noti che una vera macchina di Turing richiede un nastro infinito, quindi penso che, in senso stretto, qualsiasi linguaggio possa essere solo "Turing completo" purché assumiamo una quantità arbitrariamente grande di memoria. – nibot

risposta

38

Essendo Turing completo è davvero una barra piuttosto bassa per le lingue del mondo reale. Secondo Wikipedia (sottolineatura mia):

per dimostrare che qualcosa è Turing completa, è sufficiente a dimostrare che può essere utilizzato per simulare alcuni Turing sistema completo. Ad esempio, un linguaggio imperativo è Turing completo se ha condizionale ramificazione (ad esempio, "se" e le dichiarazioni "Vai a", o un "ramo se zero" istruzioni. Vedere OISC) e la capacità a cambia memoria arbitraria posizioni (ad esempio, la possibilità di mantenere un numero arbitrario di variabili ). Poiché questo è quasi sempre il caso, la maggior parte se non tutte le lingue imperative sono completate da Turing se ignoriamo eventuali limitazioni di memoria finita.

Oltre a ciò, MATLAB ha molte delle caratteristiche che ci si aspetta da un relativamente moderna 3GL/4GL. È completo di VM, I/O, costrutti di interfaccia utente, operatori matematici (ovviamente), tipi di dati, funzioni definite dall'utente, ecc. È persino possibile fornire programmi Matlab al di fuori dell'ambiente Matlab.

Nota che la lingua è una domanda completamente diversa, sia che si tratti o meno di .

+0

E puoi anche usare liblab matlab fuori da Matlab – Rodrigo

+0

ma sarebbe anche possibile scrivere un "compilatore" matlab interamente in matlab, o riscrivere matlab stesso in matlab rispettivamente? – karsten

+0

@karsten, naturalmente. Non riesco a immaginare che una cosa del genere sia molto pratica, ma non vedo alcuna ragione per cui non sarebbe possibile. –

3

Suppongo che si distingua tra linguaggi di programmazione e linguaggi di script e, a causa della natura di MATLAB, sembra un linguaggio di scripting? Se questo è il caso, la tua opinione potrebbe dipendere da ciò che consideri un linguaggio di programmazione.

Credo che MATLAB sia completo di Turing e abbia una sintassi ragionevolmente rigorosa e utilizzabile, quindi lo definirei un linguaggio di programmazione. Allo stesso tempo, csh è probabilmente completo da turing, ma è così drammaticamente strano da programmare in quanto lo definirei un linguaggio di scripting.

+0

L'argomento "programmazione contro script" potrebbe essere ancora più complicato per MATLAB poiché traccia distinzioni tra "script" e "m-file" (cioè "funzioni"). – gnovice

+1

csh = c shell, uno dei linguaggi di scripting della shell in genere trovato su linux, unix, bsd, ecc. –

+1

lol, che dire di ksh? k sharp ...:) –

Problemi correlati