COMPARATIVO DE LINGUAGENS DE PROGRAMAÇÃO(1) Nathália P. Martins(2), Ezequiel L. Vidal(3), Nadja T. S. Christo(4), Aline V. Mello(5) (1) Trabalho executado no âmbito da disciplina Projeto de Linguagens de Programação, Universidade Federal do Pampa, Alegrete; (2) Graduanda do curso de Ciência da Computação, Universidade Federal do Pampa, Alegrete, Rio Grande do Sul; [email protected]; (3) Graduando do curso de Ciência da Computação, Universidade Federal do Pampa, Alegrete, Rio Grande do Sul; [email protected]; (4) Graduanda do curso de Ciência da Computação, Universidade Federal do Pampa, Alegrete, Rio Grande do Sul; [email protected]; (5) Professora Orientadora, Universidade Federal do Pampa, Alegrete, Rio Grande do Sul; [email protected]; Palavras-Chave: linguagens de programação, C, Python, Java. INTRODUÇÃO Um computador é capaz de processar um conjunto de instruções conhecido como código de máquina, representado por uma sequência de bits formada por 0 e 1. Normalmente essas instruções são sequências muito simples de operações, como somar dois valores, sendo elas executadas pelo processador. Uma das linguagens mais conhecidas nesse aspecto é o Assembly, ou linguagem de montagem, uma notação legível para humanos que uma arquitetura de computador pode utilizar. Com o passar dos anos, entretanto, programadores concluíram que perdiam muito tempo utilizando linguagens de montagem e passaram a pensar nos conceitos de linguagem de alto nível, visando facilitar a resolução de problemas por meio de algoritmos (CARVALHO, 2012). Essas linguagens comunicam instruções para o computador, sendo definidas como um conjunto de regras sintáticas e semânticas usadas para a construção de um software. Diversas características as tornam diferentes, fazendo com que programadores começassem a pesquisar antes de escolhê-las. Nesse sentido, este artigo tem como objetivo comparar três linguagens de programação: C, Java e Python, por meio de algoritmos simples usando como critérios de comparação a legibilidade, a facilidade de escrita e o tempo de execução. METODOLOGIA As linguagens de programação escolhidas para realizar esse estudo foram Python, Java e C, linguagens que figuram na maioria das pesquisas sobre linguagens mais populares da atualidade (ZAPALOWSKI, 2011). Dois algoritmos foram usados para comparar as linguagens de programação: o somatório de 1 até N; e a quantidade de números pares de 1 até N. Em ambos, o N recebeu os seguintes valores: 1000 (mil), 10000 (dez mil) e 100000 (cem mil). Os algoritmos foram programados de forma mais simples e rápida em cada uma das linguagens de programação. As ferramentas Notepad++, Netbeans e Codeblocks foram utilizadas para escrever e executar os algoritmos. A comparação entre as linguagens usou três critérios: legibilidade, facilidade de escrita e tempo de execução. A legibilidade é um critério complexo de ser avaliado, pois depende muito do conhecimento de quem lê o código. Para avaliar a legibilidade, os códigos foram mostrados para pessoas com conhecimento básico em programação que receberam orientação apenas sobre o significado dos comandos. A facilidade escrita foi medida através do número de linhas de códigos necessárias para expressar os algoritmos. Por volta de 1960, a quantidade de linhas de um código era utilizada para medir a produtividade do programador (JONES, 2009). Com a evolução das linguagens, essa métrica acabou perdendo seu objetivo inicial, mas ainda é útil para determinar o quão complexa uma linguagem é. O tempo de execução foi medido em microssegundos e obtido subtraindo o tempo inicial de execução do algoritmo do seu tempo final. RESULTADOS E DISCUSSÃO A maioria das pessoas que avaliaram o critério legibilidade consideraram Python a linguagem com melhor legibilidade. Apesar disso, algumas pessoas indicaram que Python era simples demais, a ponto de atrapalhar o entendimento do código. A legibilidade de C foi considerada média. Java foi a linguagem considerada mais complexa, apesar de parecer mais didática, pois precisa de muitos comandos para fazer Anais do 8º Salão Internacional de Ensino, Pesquisa e Extensão – Universidade Federal do Pampa o que as outras duas linguagens fazem de forma mais simples. A Tabela 1 apresenta o número de linhas de código de cada algoritmo em cada uma das linguagens avaliadas. É possível ver um dos grandes diferenciais de Python: a facilidade de escrita. Essa linguagem é fortemente baseada em uma linguagem chamada ABC que visa o aprendizado em programação, pois não há necessidade de declaração de variáveis, além de ser obrigatória a identação para que o algoritmo funcione de forma adequada (TELLES, 2008). Essa diferença seria ainda maior se não fossem contadas as quebras de linha para identação. C e Java apresentam um resultado similar nesse aspecto, tendo ambas comandos mais complexos. Java é uma linguagem mais didática se comparada às outras, mas parece mais complexa e desnecessariamente extensa nos dois algoritmos. Tabela 1 - Número de Linhas dos Algoritmos Linguagem Números Pares Somatório C 24 21 Java 28 24 Python 14 13 Fonte: Elaborado pelos autores. A Tabela 2 apresenta o tempo de execução para cada algoritmo e os diferentes valores de N. Pode-se observar a diferença notável entre uma linguagem compilada, como o C, e linguagens interpretadas, como o Java e o Python. A compilação é um processo que reúne o código fonte e o transforma em linguagem de máquina, a qual o computador compreende (SEBESTA, 2003). Algumas linguagens mais modernas, como Java e Python, são interpretadas pela máquina virtual da linguagem enquanto o programa é executado. Isso requer mais tempo e é por isso que a linguagem C possui o menor tempo de execução para todos os testes. Tabela 2 - Tempo de Execução dos algoritmos (μs) Algoritmo C Java Números Pares (1000) 10 76 Números Pares (10000) 68 518 Números Pares (100000) 682 4009 Somatório (1000) 7 38 Somatório (10000) 64 572 Somatório (100000) 737 3679 Python 48 472 2824 29 286 1840 Fonte: Elaborado pelos autores. CONCLUSÕES As três linguagens possuem estruturas de controle similares, mudando apenas a forma de escrita, mas mantendo seus objetivos. Esse fato facilita o aprendizado de novas linguagens de programação, assim como a leitura das mesmas. Considerando as análises realizadas, pode-se concluir que Python é, como diz sua filosofia, uma linguagem simples e eficaz, provando ser a melhor linguagem em dois dos três critérios avaliados: legibilidade e facilidade de escrita. A linguagem C foi a que se mostrou ser a mais rápida porque é compilada enquanto as demais são interpretadas. O Java não obteve nenhum destaque muito devido aos algoritmos e aos critérios utilizados na comparação. O Java é uma linguagem de programação orientada a objetos que possui características como encapsulamento e ocultamento de informação, as quais privilegiam a manutenção e o reuso de código, critérios não explorados nesse estudo. Como trabalho futuro cita-se ampliar o número de linguagens de programação comparadas, o número de algoritmos testados e os critérios usados. REFERÊNCIAS JONES, C. Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies. 2. Ed. McGraw-Hill, 2009. SEBESTA, R. Conceitos de Linguagens de Programação. 5. Ed. Bookman, 2003 TELLES, M. Python Power!: the comprehensive guide. 1. Ed. Thomson Course Technology, 2008. CARVALHO, E. Linguagens de Programação. Disponível em: < https://goo.gl/nU3bdu >. Acesso em 12 jul. 2016. ZAPALOWSKI, V. Análise quantitativa e comparativa de linguagens de programação. Disponível em: < http://www.lume.ufrgs.br/bitstream/handle/10183/31036/000782127.pdf >. Acesso em 5 jul. 2016. Anais do 8º Salão Internacional de Ensino, Pesquisa e Extensão – Universidade Federal do Pampa