Pergunta

Parece que existe um forte movimento para a convergência de linguagens de matemática e programação de computadores, isso é notavelmente evidenciado pela influência do cálculo lambda nas línguas modernas. Na maioria das vezes, não penso com a matemática, acho que com a lógica. Parece -me que muitos dos fenômenos que podem ser modelados matematicamente também podem ser modelados logicamente.

Acho que nunca veremos uma linguagem puramente lógica ou uma linguagem puramente matemática ganhar força para a programação de fins gerais, mas eu gostaria de fazer um inventário dos benefícios de cada paradigma. Eu gostaria de saber:

  • Quais são os benefícios de modelar linguagens de programação ou recursos de linguagem em matemática?
  • Quais são os benefícios de modelar um idioma nos princípios da lógica formal?
  • Uma linguagem de uso geral pode renunciar à lógica ou à matemática?
  • Quais são alguns dos idiomas que realmente mostram os benefícios de qualquer abordagem?
  • Quais recursos de hardware tornam uma abordagem mais atraente que a outra?
Foi útil?

Solução

Primeiro de tudo, não vejo muita distinção entre lógica e matemática; Este último é apenas o primeiro aplicado sistematicamente a construções específicas.

Além disso, não estou convencido de que a beleza teórica das linguagens de programação fundamentadas em matemática/lógica realmente valha muito quando se trata de fazer as coisas escrevendo código eficiente e sustentável.

Quanto às perguntas específicas.

Quais são os benefícios de modelar linguagens de programação ou recursos de linguagem em matemática? Quais são os benefícios de modelar um idioma nos princípios da lógica formal?

As provas de correção se tornam muito mais fáceis - embora seja questionável se chegaremos ao ponto em que elas se tornam práticas para os sistemas da vida real.

Uma linguagem de uso geral pode renunciar à lógica ou à matemática?

Depende do que você quer dizer com "Opgo". Você pode ter um idioma sem operações matemáticas (embora você precise ficar bastante esbronista; as máquinas de Turing são as únicas que eu consigo pensar que nem sequer tem incremento ou decréscimo), e você certamente pode ter um que não se importa com os formalismos ( Assembler, c). Mas não acho que seja possível ter uma linguagem de programação sem lógica (embora possa ser uma lógica pervertida, cf. Malbolgão)

Quais são alguns dos idiomas que realmente mostram os benefícios de qualquer abordagem?

Bem, se você considera o Lambda Calculus uma forma de lógica, o LISP está mostrando seus benefícios muito bem por ser desde 1958 o idioma cujo poder expressivo outro idioma aspire (mas não consegue) alcançar.

Depois, há o Prolog, a única outra linguagem "séria" que eu sei que tenta ser explicitamente fundamentada na lógica formal. E - Quelle Surprise - é bom em coisas lógicas e pouco mais.

Quais recursos de hardware tornam uma abordagem mais atraente que a outra?

Nenhum. O fracasso de Máquinas Lisp Prove a IMO de maneira bastante conclusiva que os compiladores+hardware geral são mais poderosos que o hardware especializado. No entanto, pode -se dizer que o poder bruto do Simpe do sistema de hoje está criando idiomas que ignoram completamente as restrições de hardware práticas onde não estavam anteriormente.

Outras dicas

Como a ciência da computação é uma filial especial de matemática - não há convergência em matemática e linguagem de programação. Uma linguagem de programação é aplicada matemática. É uma ferramenta criada por pessoas com profundo conhecimento de matemática para serem usadas por outras pessoas (na maioria das vezes com conhecimento menos profundo). Você pode compará -lo com um interruptor de luz - você pode usá -lo sem ter estudado física, mas ainda assim é aplicada física. Às vezes (especialmente se você tiver um problema), é necessário ter o "conhecimento". Então você precisa do fundo especial.

Bem, para ser sincero, muitas dessas chamadas "linguagens de programação modernas" estão apenas imlpeting coisas que estão em várias linguagens de programação há mais de 50 anos.

Quais são os benefícios de modelar linguagens de programação ou recursos de linguagem em matemática? Quais são os benefícios de modelar um idioma nos princípios da lógica formal?

São a mesma coisa: a lógica formal é apenas um ramo da matemática. Dois grandes benefícios do uso da matemática formal são otimização e segurança. Quando um algoritmo não possui efeitos colaterais (ou seja, referencialmente transparente) e é expresso apenas usando compiladores de matemática puros podem reestruturar o algoritmo de acordo com as regras de matemática. Isso facilita para os compiladores otimizar o código e explorar arquiteturas paralelas. Outro benefício importante é a capacidade de provar certas propriedades do código.

Uma linguagem de uso geral pode renunciar à lógica ou à matemática?

Não. Como você faria operações booleanas ou aritmética sem lógica ou matemática. Você pode significar algo aqui que eu não entendo.

Quais são alguns dos idiomas que realmente mostram os benefícios de qualquer abordagem?

Haskell, ML, Ocaml, Miranda, Alice, Oz, Erlang, Twelf, Coq, Prolog, todos demonstram aplicações mais rigorosas da matemática à programação.

Quais recursos de hardware tornam uma abordagem mais atraente que a outra?

Não acredito que o hardware mude muito as coisas em termos dos benefícios de rigorosas abordagens matemáticas para a programação. Os benefícios do código referencialmente transparente estão principalmente no nível do compilador.

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