artigo final - comparação entre linguagens de programação
TRANSCRIPT
UNIVERSIDADE FEDERAL DO PARANÁ
CURSO DE ENGENHARIA ELÉTRICA
ARTIGO CIENTÍFICO
Orientando:Daniel Lauer
Orientador:Waldemiro Pedroso Sobrinho
CURITIBA
2008
DANIEL LAUER
COMPARAÇÃO ENTRE LINGUAGENS DE PROGRAMAÇÃO
Artigo Científico escrito por Daniel Lauer, no dia 4 de novembro de 2008, elaborado como avaliação da Disciplina de Relatórios Técnicos, do Curso de Engenharia Elétrica, do Setor de Tecnologia da UFPR.
Orientador: Waldemiro Pedroso Sobrinho
CURITIBA
2008
SUMÁRIO
1 INTRODUÇÃO.......................................................................................................................12 LINGUAGENS DE PROGRAMAÇÃO.................................................................................1
2.1 Tipos.................................................................................................................................12.1.1 Estrutura.....................................................................................................................12.1.2 Nível...........................................................................................................................22.1.3 Geração......................................................................................................................2
2.2 Algumas linguagens..........................................................................................................32.2.1 Assembly...............................................................................................................32.2.2 C++.......................................................................................................................32.2.3 Basic......................................................................................................................42.2.4 Java.......................................................................................................................42.2.5 PHP.......................................................................................................................4
3 PRINCIPAIS LINGUAGENS.................................................................................................44 CONCLUSÕES.......................................................................................................................65 REFERÊNCIAS BIBLIOGRÁFICAS.....................................................................................76 PERGUNTAS DURANTE A PALESTRA.............................................................................8
1 INTRODUÇÃO
O artigo em questão tem o intuito de apresentar as linguagens de programação, mostrando
as vantagens e desvantagens em diferentes aplicações. Serão apresentadas e classificadas
quanto ao nível de evolução, por geração.
Uma linguagem de programação é um método padronizado para expressar instruções
para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um
programa de computador. Uma linguagem permite que um programador especifique
precisamente sobre quais dados um computador vai atuar, como estes dados serão
armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.
A necessidade em fazer comparações entre linguagens de programação tem o intuito
indicar a linguagem de programação melhor para a aplicação a ser desenvolvida, baixando o
tempo de programação e custos de desenvolvimento.
2 LINGUAGENS DE PROGRAMAÇÃO
2.1 TiposAs linguagens podem ser classificadas por tipo de estrutura, nível de programação e
pela geração.
2.1.1 Estrutura
Dentro da classificação de estrutura, pode-se definir como linguagens estruturadas e
não estruturadas.
As linguagens estruturadas
São aquelas que possuem estruturas de controle do fluxo do programa, como desvios
condicionais, laços de repetição, procedimentos e funções. A maioria das linguagens
utilizadas é estruturada, como o Pascal e o C.
1
Linguagens não estruturadas
O fluxo é controlado em boa parte por desvios diretos para uma parte do código
definida. A linguagem mais conhecida não estruturada é o assembly.
2.1.2 Nível
Na classificação de nível de programação, existem controvérsias entre diferentes
autores, alguns classificam apenas de baixo e alto nível e a maioria classifica entre baixo,
médio e alto nível, o que será adotado.
Linguagens de baixo nível
São linguagens totalmente dependentes da máquina, ou seja, que o programa que se
realiza com este tipo de linguagem não pode ser migrado ou utilizado em outras máquinas.
Ao estar praticamente desenhado a medida do hardware, aproveitam ao máximo as
características do mesmo.
Linguagens de alto nível
São aquelas que se encontram mais próximas à linguagem natural que à linguagem
máquina.
Trata-se de linguagens independentes da arquitetura do computador. Sendo assim, à
princípio, um programa escrito em uma linguagem de alto nível, pode ser migrado de uma
máquina a outra sem nenhum tipo de problema.
Linguagens de Médio nível
Trata-se de um termo não aceito por todos, porém certamente vocês já devem ter
escutado. Estas linguagens se encontram em um ponto médio entre as duas anteriores. Dentro
destas linguagens poderia se situar C já que pode acessar aos registros do sistema, trabalhar
com endereços de memória, todas elas características de linguagens de baixo nível e ao
mesmo tempo realizar operações de alto nível.
2.1.3 Geração
A evolução das linguagens de programação pode ser dividida em 5 etapas ou gerações.
2
Primeira geração: linguagem máquina, programação binária.
Segunda geração: criaram-se as primeiras linguagens assembly.
Terceira geração: criam-se as primeiras linguagens de médio e alto nível.
Quarta geração: são linguagens capazes de gerar código por si só, com o qual
se pode realizar aplicações sem ser um conhecedor da linguagem.
Quinta geração: Aqui se encontram as linguagens orientadas à inteligência
artificial.
2.2 Algumas linguagens
Para uma maior eficiência no desenvolvimento de um programa, pode se relacionar as
linguagens de programação, podendo assim definir a linguagem indicada para o
desenvolvimento da aplicação.
Abaixo será citado algumas linguagens importantes, com suas características.
2.2.1 Assembly
Nível Baixo - Não estruturada - 2ª geração
Destinado geralmente a programação de microcontroladores e microprocessadores. Os
comandos possíveis são as mesmas as instruções do componente. Possui baixa velocidade de
programação, por possuir poucas instruções, o que eleva o custo da programação. Podem ser
utilizadas outras linguagens na maioria dos casos, com o C.
2.2.2 C++
Nível Médio – Estruturada - 3ª geração - Orientada a objetos, procedural, orientada pelo fluxo
Indicada em grande parte das aplicações, por ser uma linguagem muito versátil. Pode
ser utilizada para programação de microcontroladores (caso possua a biblioteca do
componente), na criação de softwares para PC como bancos de dados, comunicação via portas
paralelas e seriais, até mesmo sistemas operacionais foram criados na linguagem C. Possui
alto desempenho na compilação, tornando os softwares gerados em C++ mais rápidos.
3
2.2.3 Basic
Nível Alto - Não Estruturada - 3ª geração
Linguagem de fácil aprendizado, porém de pouca versatilidade. Versões melhores
como o Visual Basic dão mais recursos tornando a linguagem mais interessante. Utilizado
para programação de alguns microcontroladores, criação de softwares para o Windows, no
caso do Visual Basic.
2.2.4 Java
Nível Alto – Estruturada - 3ª geração - Orientada a objetos - Independência de plataforma
O Java é uma linguagem revolucionaria. Pode ser executada em qualquer sistema
operacional que possua a máquina virtual Java (Java Virtual Machine - JVM), podendo a
mesma aplicação ser executada em PCs, Palmtops, telefones celulares e outros dispositivos.
2.2.5 PHP
Nível Alto – Estruturada - 3ª geração - Orientada a objetos - Independência de plataforma
Linguagem direcionada a automatização de paginas de Internet. Indicada para
trabalhar também com bancos de dados, sendo que possui infinitas possibilidades, por
trabalhar com módulos. Nesta área é a linguagem mais versátil existente. Possui como o Java
independência a plataforma.
3 PRINCIPAIS LINGUAGENS
Pode-se observar com a figura 1 que as linguagens utilizadas na Internet e as
influenciadas pelo C estão sempre em alta, como o Java, o próprio C e seus derivados, Visual
Basic, PHP e Python são as linguagens mais utilizadas globalmente.
Na tabela 1, pode-se comparar as principais linguagens, suas influências, característica
principal e modo de execução.
4
Uso Modo de execução
Influências Característica principal
Java20,3% Interpretação
e CompilaçãoC# Orientada a objetos
C15,3%
CompilaçãoAlgol, BCPL
Estruturada, Procedural, Orientada por fluxo
C++10,4%
CompilaçãoC, Simula, Algol 68
Principalmente orientada a objetos
Visual Basic 9,3% Compilação Basic Orientada a objetos e ProcedualPHP 8,9% Interpretação C e Perl Orientada a objetos
Python 5,1% Interpretação ABC, Perl Orientada a objetos
C#4,0%
CompilaçãoC,
Smalltalk
Principalmente orientada a objetos, Refletiva, Passagem de
mensagensDelphi 4,0% Compilação Pascal Orientada a objetos e Procedural
Perl3,9%
InterpretaçãoC, Shell, awk, sed,
Lisp
Funcional, Orientada a objetos e Procedural
Java Script 2,9% Interpretação Java Orientada a objetos e ProceduralTabela 1: Características das principais linguagens [8]
Figura 1: Utilização das Linguagens [8]
5
4 CONCLUSÕES
Ao se analisar as linguagens existentes no mercado, assim como suas características,
pode-se escolher a linguagem mais indicada a aplicação pretendida, pode se economizar
tempo de programação e conseqüentemente custos no desenvolvimento.
Para microcontroladores, é indicada a utilização de linguagem C, poupa tempo e linhas
de programação, pois possui inúmeros comandos e é procedural. Porem há casos que há a
necessidade do uso do Assembly, nem todos os microcontroladores possuem a biblioteca em
C.
Para aplicações executáveis é aconselhável utilizar o C ou o Java, são por bons
motivos que são as linguagens mais utilizadas. Como o C, o Java é procedural e orientada a
objetos, deixando o software mais confiável e versátil.
6
5 REFERÊNCIAS BIBLIOGRÁFICAS
[1] Linguagem de montagem - Wikipédia, a enciclopédia livre - pt.wikipedia.org/wiki/Assembly
[2] Assembly NumaBoa - www.numaboa.com.br/informatica/assembly/
[3] C (linguagem de programação) - Wikipédia, a enciclopédia livre - pt.wikipedia.org/wiki/C_(linguagem_de_programação)
[4] BASIC - Wikipédia, a enciclopédia livre - pt.wikipedia.org/wiki/BASIC
[5] PHP – Wikipédia - http://pt.wikipedia.org/wiki/PHP
[6] Java (linguagem de programação) - Wikipédia, a enciclopédia livre - pt.wikipedia.org/wiki/Java_(linguagem_de_programação)
[7] Comparação entre linguagens de programação - Wikipédia, a enciclopédia livre - http://pt.wikipedia.org/wiki/Compara%C3%A7%C3%A3o_entre_linguagens_de_programa%C3%A7%C3%A3o
[8] Tiobe Software - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
The Economics of Programming Language - http://www.welton.it/articles/programming_language_economics.html
[9] Programming Language Usage Graph - http://www.cs.berkeley.edu/~flab/languages.html
[10] Visual Basic – Wikipédia, a enciclopédia livre - http://pt.wikipedia.org/wiki/Visual_Basic
7
6 PERGUNTAS DURANTE A PALESTRA
1- Existe compilador de todas as linguagens ou mais de uma?
Não. As linguagens possuem compiladores próprios, podendo haver mais de um
compilador para a mesma linguagem, no caso de diferentes fabricantes.
2- Existe algum software que faça a conversão de uma linguagem em outra?
Sim. Há softwares específicos que convertem uma linguagem em outra. São softwares
bem restritos e pouco disseminados entre o meio dos programadores.
3- Qual a linguagem de programação mais importante para a engenharia elétrica?
Acredito que seja a linguagem C, pois por ser uma linguagem bastante versátil, pode-
se fazer programas para microcontroladores e microcomputadores. Pode-se também
com facilidade manipular o hardware do computador, utilizando portas seriais e
paralelas, controle de acesso a memória.
4- Como fazer a comunicação entre o C e o Java? Qual o melhor para fazer?
Há bibliotecas nas duas linguagens que facilitam a troca de dados, podendo se os
dados serem criptografados e colocados em protocolos específicos conforme a
aplicação. Com a biblioteca COM-DRV da linguagem C e a RXTX da Java, há
comandos de fácil utilização para a troca de dados entre as linguagens por um meio
físico.
8