decidi que era hora de comecar a escrever. Ja fazia mais de um mes que eu havia decidido comecar a escrever um blog sobre minhas experiencias usando a linguagem Python, o servidor de aplicacao Zope e CMS Plone. O nome ja estava registrado: python-blog.blogspot.com, e o que mais estava faltando? Iniciativa. ;-)Na primeira postagem estou publicando um artigo que escrevi juntamente com dois colegas na disciplina de Engenharia e Software I (2006.2). Escreve-lo me ajudou enxergar o quao poderosas sao as linguagens funcionais e o quanto Python herda desse paradigma. Alem disso cheguei a conclusao que as linguagens funcionais deveriam ser mais ensinadas nos cursos de Ciencia da Computacao, talvez ate com primeira linguagem! :-o Python, Scheme e ML Uma analise comparativa das linguagens de programacao. Faculdade Ruy Barbosa Ruda Porto Filgueiras, Sergio Pacheco, Adrienne Nogueira Disciplina de Engenharia de Software I 2006.2 Curso de Bacharelado em Ciencia da Computacao Faculdade Ruy Barbosa(FRB) Rua Theodomiro Batista, 422 Rio Vermelho Cep: 41.940-320 Salvador BA rudazz@gmail.com, sergiorpacheco@gmail.com, adrieness_eu@yahoo.com.br 1. Resumo As linguagens de programacao tem uma importancia fundamental na nossa capacidade de expressar ideias e resolver problemas. A analise de diferentes linguagens possibilita o avaliacao das escolhas realizadas em tempo de projeto, utilizando os criterios e conceitos da Engenharia de Software para entender as escolhas dos projetistas e o resultado desas escolhas em cada linguagem. Palavras-chave: Linguagem de Programacao, ML, Lisp, Scheme, Python, Projeto de Linguagem 2. Introducao Esse artigo se propoe a comparar as caracteristicas de tres diferentes linguagens de programacao. Scheme e ML sao linguagens fundamentadas no paradigma funcional, de amplo uso, possuem diversas implementacoes e sao muito utilizadas na area de matematica, logica e inteligencia artificial. A terceira e ultima linguagem e Python, que se diferencia por ser de proposito geral, multiparadigma e influenciada pelas licoes de design de importantes linguagens, tais como: Ada, Scheme, SmalTalk, Modula 3. Para realizar esse comparativo, selecionamos algumas caracteristicas a serem estudadas e comparadas entre as linguagens. Isso nos permitira avaliar as escolhas realizadas em tempo de projeto e seus beneficios e/ou contra-partidas utilizando os criterios da Engenharia de Software como parametro. As caracteristicas abordadas sao: simplicidade global, intrucoes de controle, suporte para abstracao, manipulacao de excecoes e verificacao de tipos. 3. Simplicidade global A simplicidade global de uma linguagem afeta diretamente a sua legibilidade, Sebesta (2005). As linguagens do paradigma funcional se fundamentam na simplicidade do conceito matematico de funcao, elementos e conjuntos. Em especial Scheme, que no seu projeto tem por objetivo ser minimalista, mantendo numero de instrucoes basicas e palavras reservadas restritas ao minimo necessario e ao mesmo tempo compativel com LISP. Python se apoia nas ideias do projeto de Scheme para se manter simples e ao ser comparada com outras linguagens imperativas, em geral, possui menos instrucoes basicas e palavras reservadas, o que contribui para o seu facil aprendizado. Assim como Scheme, Python procura implementar apenas um modo correto de se executar uma determinada operacao, isso fortalece a simplicidade e consequentemente a legibilidade da linguagem. ML nao possui um grau de simplicidade global tao alto quanto Scheme, pois permite a programacao