Existem idiomas completos de uso geral não-Turing para uso geral disponíveis hoje?


11

Os idiomas completos que não são de Turing oferecem uma grande vantagem sobre os idiomas completos de Turing, pois são muito mais analisáveis ​​e, portanto, oferecem possibilidades de otimização muito mais amplas. No entanto, eles são pouco utilizados e a integridade de Turing é realmente vendida como um bom recurso.

Existem linguagens mainstream não completas de Turing disponíveis hoje para a programação de uso geral?


8
Eu acho que as duas coisas que você procura são mutuamente incompatíveis. Se não estiver completo, não poderá ser utilizado de forma arbitrária.
Bobson

@Dokkat Reabri a pergunta e removi a discussão Meta dos comentários. Observe que, se você não concordar com uma das diretrizes do site, a maneira correta de contestá-la é postar uma discussão sobre Meta; não apenas ignore. Além disso, para questões subjetivas, a chave do sucesso é a pesquisa prévia e a definição rigorosa. Quanto mais você pesquisa, mais específica (e responde) sua pergunta se torna, e mais longe você fica do notório espaço "não construtivo".
yannis

Além disso, por que você considera "possibilidades mais amplas de otimização" uma "grande vantagem"? Isso não quer dizer que a otimização não valha a pena, mas eu certamente não consideraria a otimização inerente de uma linguagem uma "grande vantagem", dado o poder dos computadores modernos.
Bobson

2
A Coq pode ser considerada bastante "mainstream" em seu domínio, com concorrentes (HOL, Agda, ACL e outros) sendo muito menos visíveis.
SK-logic,

Talvez eu realmente não entenda o que é a completude turing, mas como uma linguagem pode ser de propósito geral e não-Turing completa? Eu pensei que o significado de não ser Turing completo, não é capaz de executar nenhuma tarefa computacional, sendo assim direcionado a um propósito específico ...?
Aviv Cohn #

Respostas:


24

Atualmente, não existem idiomas completos de uso geral não-Turing para diversos fins. Existem, no entanto, vários idiomas específicos não específicos do domínio de Turing. ANSI SQL, expressões regulares, linguagens de dados (HTML, CSS, JSON, etc) e expressões s são alguns exemplos notáveis.

Não há realmente nenhum benefício para idiomas completos multiuso não-Turing. O aspecto "muito mais analisável", que suponho ser um aceno ao teorema de Rice, se aplica, mas não faz muito sentido para linguagens que visam vários domínios de aplicativos diferentes, outros requisitos têm precedência. A flexibilidade da integridade de Turing é muito mais importante que sua complexidade. Linguagens de programação, como qualquer outra peça de software, têm tudo a ver com trade-offs.

Para idiomas específicos de domínio, por outro lado, pode ser apenas o contrário. Se você não está construindo "um idioma para governar todos eles", pode implementar apenas os recursos que fazem sentido para o objetivo específico do seu idioma. E, na maioria das vezes, a integridade de Turing não é uma delas.


CSS3 é Turing-completo.
SK-logic,

5
@ O CSS SK-logic faz sentido sem HTML, pode ser aplicado a qualquer tipo de XML e nada impede você de implementá-lo para qualquer outro formato com formato mais ou menos compatível (árvores com nós nomeados, ordem de irmãos, etc.). Eu pessoalmente escrevi regras CSS para um arquivo SVG. É muito mais comum para HTML porque o HTML é muito mais comum que os outros formatos.

2
@ Mike, essa é uma analogia quebrada. A semântica do CSS3 está intimamente ligada à semântica da linguagem de apresentação.
SK-logic,

2
Observe que o SQL com janelas e CTEs (ou seja, SQL: 2003) também está completo com Turing.
Jörg W Mittag

1
"Atualmente não existem idiomas completos de uso geral não-Turing para diversos fins". - C sem armazenamento externo não é completo para Turing, mas é de uso geral e convencional. (Bem, eu, pessoalmente, diria que é uma linguagem específica de domínio para escrever kernels Unix, e nem sequer é particularmente bom nisso, mas os discorda mundo.)
Jörg W Mittag

-3

A razão pela qual os idiomas incompletos de Turing não são comuns é que é fácil implementar seus próprios sempre que você precisar e como quiser. Um exemplo interessante é o script bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
Realmente? Importa-se de implementar Coq do zero, por conta própria, se é assim tão fácil?
SK-logic #

esta é apenas a sua opinião ou você pode apoiá-la de alguma forma?
mosquito

Exemplos são todos os idiomas específicos do domínio que não precisam de recursão, iteração ilimitada ou outros tarpits de Turing. Além disso, tenho certeza de que a maioria de nós implementou algum tipo de calculadora simples que processa aritmética básica.
MauganRa

1
Concordo, porém, que não é trivial manter o idioma Turing incompleto. Mesmo sem tarpits óbvios de Turing, ele sempre pode conter um bug do compilador que possibilita o uso de uma das plataformas subjacentes.
MauganRa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.