TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Design de linguagens imperativas

Resenha: Design de linguagens imperativas. Pesquise 861.000+ trabalhos acadêmicos

Por:   •  9/7/2014  •  Resenha  •  766 Palavras (4 Páginas)  •  237 Visualizações

Página 1 de 4

O projeto das linguagens imperativas é baseado diretamente na arquitetura de computadores von Neumann. Eficiência é a principal preocupação, em vez da adequação da linguagem para desenvolvimento de software. O projeto das linguagens funcionais é baseado em funções matemáticas. Uma sólida base teórica, também próxima do usuário, mas relativamente despreocupada com a arquitetura das máquinas em que os programas serão executados.

Tratando a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa.

As funções podem ser manipuladas em uma grande variedade de formas em uma linguagem de programação funcional. As funções são tratadas como valores de primeira importância, o que é o mesmo que dizer que funções podem ser parâmetros ou valores de entrada para outras funções e podem ser os valores de retorno ou saída de uma função. Então podemos entender paradigma funcional como um mapeamento dos valores de entrada nos valores de retorno, através de funções. Isso permite que funções comomapcar em LISP e map em Haskell que tomam ambos uma função e uma lista como entrada e aplicam a função de entrada a cada elemento da lista. Funções podem ser nomeadas, como em outras linguagens, ou definidas anonimamente (algumas vezes durante a execução do programa) usando uma abstração lambda e usadas como valores em outras funções. Linguagens funcionais também permitem que funções sejam do tipo curry. Currying é uma técnica para reescrita de funções com múltiplos parâmetros como a composição de funções de um parâmetro. A função do tipo curry pode ser aplicada apenas a um subconjunto de seus parâmetros. O resultado é uma função onde os parâmetros neste subconjunto são agora fixados como constantes, e os valores do resto dos parâmetros ainda não são especificados. Esta nova função pode ser aplicada aos parâmetros restantes para obter o valor da função final. Por exemplo, uma função adiciona(x,y) = x + y pode ser do tipo curry de forma que o valor de retornoadiciona(2) — note que não há um parâmetro y — será uma função anônima, o que é equivalente à função adiciona2(y) = 2 + y. Esta nova função tem apenas um parâmetro e corresponde a adicionar 2 a um número. Novamente, isso é apenas possível porque as funções são tratadas como valores de primeira importância.

O cálculo lambda pode ser considerado a primeira linguagem de programação funcional, embora nunca tenha sido projetada para ser realmente executada em um computador. É um modelo de computação projetado por Alonzo Church nos anos 1930 que oferece um modo muito formal de descrever um cálculo de uma função. A primeira linguagem de programação funcional criada para computadores foi LISP, desenvolvida por John McCarthy no Instituto de Tecnologia de Massachusetts (MIT) no fim dos anos 1950. Mesmo não sendo uma linguagem de programação puramente funcional, LISP introduziu a maioria das características hoje encontradas nas modernas linguagens de programação funcional. Scheme foi uma tentativa posterior de simplificar e melhorar LISP. Nos anos 1970 a linguagem ML foi criada pela Universidade de Edimburgo, e David Turner desenvolveu a linguagem Miranda na Universidade de Kent. A linguagem Haskell foi lançada

...

Baixar como (para membros premium)  txt (4.9 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com