Pergunta

Muitas linguagens de programação compartilham recursos genéricos e até bastante universais. Por exemplo, se você comparou Java, VB6, .NET, PHP, Python, encontraria funções comuns, como estruturas de controle, manipulação numérica e de cordas, etc.

O que foi feito para definir esses recursos em um nível de meta-linguagem (ou idioma-agnóstico)?

A UML oferece uma referência descritiva do software em todos os aspectos, mas o foco do mundo real parece ser processos de dados. A UML é relevante?

Não estou perguntando "por que não temos um único idioma que substitua a infinidade atual". Precisamos de muitas ferramentas diferentes (pelo menos neste EON).

Não estou pedindo que todos os idiomas se encaixem em um modelo - as linguagens de montagem vs. compiladas são diferentes o suficiente para tornar isso inviável (e algumas pessoas chamam HTML de idioma, embora eu não o fizesse). Qualquer tentativa começaria com um escopo adequadamente estreito. De acordo com isso, eu não esperaria que o modelo cubra uma pequena seleção com validade total.

Eu esperaria, no entanto, que esse modelo pudesse ser usado para transpor de um idioma para outro (com objetivos limitados - pense na tradução JIST).

Foi útil?

Solução

O que você está descrevendo soa como o Semântica formal de linguagens de programação. Há uma variedade de abordagens e cada uma dará uma maneira de especificar formalmente o significado de um programa em alguma linguagem de programação. Em alguns casos, essa especificação é essencialmente uma tradução para outro idioma, como o Lambda Cálculus, ou compilação para uma máquina abstrata formalmente especificada, como o Secd.

Há muito trabalho aqui que é difícil escolher uma referência específica. Mas espero ter lhe dado algumas palavras -chave úteis para continuar sua pesquisa.

Outras dicas

Houve muitas tentativas nisso, mas nenhuma foi muito bem -sucedida. O mais cedo que estou ciente é Descolagem Mais de 50 anos atrás.

Você deu uma lista de idiomas que têm muito em comum porque são bem parecidos - são todos idiomas processuais com raízes comuns e algumas extensões de OO, o que isso não é muito surpreendente. Se você começar a olhar para diferentes idiomas como Lisp, Haskell, Erlang, Prolog ou mesmo SQL, você começa a ver coisas muito diferentes.

O UML é normalmente usado para definir algoritmos/código em termos mais simples antes de passar para o código real.

Para responder o que estou imaginando ser sua pergunta, já existe um conjunto definido de partes necessárias dos idiomas enquanto, para, se, senão ... isso será definido como padrão, ou transformado em uma biblioteca base usada Por todos os idiomas: não, isso ocorre porque os diferentes desenvolvedores de idiomas gostam de fazer isso.

Eu acho que o mais próximo que você pode chegar a isso sem perda de generalidade é uma máquina de Turing, que não é muito útil para fins práticos. Mas se você permitir que os idiomas da máquina de Turing sejam "rotulados" e reutilizados, poderá criar os conceitos necessários, trabalhando de baixo a alto nível.

Eu acho que o MOF é a linguagem universal. Você pode, por exemplo, criar diagramas UML a partir do MOF através de um metamodelo UML. Se você salvar essas informações de metamodelo no XMI, poderá salvar as informações de que precisa e ainda mais do que em qualquer idioma. A semântica XMI é tão rica que não há limite para seu uso. Se você mapear a UML para XMI no topo de um Metamodel Live Syncronize com o MOF, isso é para mim a linguagem universal.

O autor de Cálculo de padrões parece propor um modelo tão universal. Espero que seja tão útil quanto as tentativas anteriores de definir um modelo universal, ou seja, bom em partes, mas não na última palavra.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top