Actualmente para o estudante de engenharia é muito
importante saber alguma linguagem de programação. E por este motivo que nesta
secção abordaremos um pouco sobre esta grande ferramenta para o desenvolvimento
da sociedade, na área tecnológica.
Defini-se linguagem de programação cmo sendo um método
padronizado para comunicar instruções para um computador. É
um conjunto de regras sintáticas e semânticas usadas para definir
um programa de computador. Permite que um programador especifique ao
computador o que ele quer que ele faça com os dados introduzidos.
O conjunto de palavras (lexemas classificados
em tokens), compostos de acordo com essas regras, constituem o código
fonte de um software. Esse código fonte é depois traduzido
para código de máquina, que é executado pelo processador.
Uma das principais metas das linguagens de programação é
permitir que programadores tenham uma maior produtividade, permitindo expressar
suas intenções mais facilmente do que quando comparado com a linguagem que um
computador entende nativamente. Assim, linguagens de programação são
projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais
facilmente entendida por programadores humanos. Linguagens de programação são
ferramentas importantes para que programadores e engenheiros de
software possam escrever programas mais organizados e com maior rapidez.
História da linguagem
de programação
O primeiro trabalho de linguagem de programação foi criado
para um computador que existia, criado por Ada Lovelace A linguagem
de programação ADA foi batizada em homenagem a esta primeira
programadora.
Uma das primeiras linguagens de programação para
computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha
Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de
programação.
O primeiro compilador foi escrito por Grace Hopper, em
1952, para a linguagem de programação A-0. A primeira linguagem de
programação de alto nível amplamente usada foi Fortran, criada em
1954. Em 1957 foi criada B-0, sucessora da A-0, que daria origem
a Flow-Matic (1958), antecessor imediato de COBOL, de
1959. O COBOL foi uma linguagem de ampla aceitação para uso
comercial. A linguagem ALGOL foi criada em 1958-1960, ALGOL-60
teve grande influência no projeto de muitas linguagens posteriores.
A linguagem Lisp foi criada em 1958 e se
tornou amplamente utilizada na pesquisa na área de ciência da computação mais
proeminentemente na área de Inteligência Artificial.
A orientação a objetos é outro marco importante na
história das linguagens de programação. A linguagem Simula 67 introduz
o conceito de classes. A linguagem Smalltalk expande o conceito de
classes e se torna a primeira linguagem de programação que oferecia suporte
completo à programação orientada a objetos. A linguagem C++ (originalmente
conhecida como C com classes) populariza a orientação a objetos.
Diversas linguagens de programação surgiram desde então,
grande parte orientadas a objetos. Entre estas incluem-se C, VB.NET, Java, Object
Pascal, Objective-C, Python, SuperCollider eRuby.
Interpretação e
compilação
A interpretação e compilação é assim feita:
O processo da
compilação
Uma linguagem de programação pode ser convertida, ou
traduzida, em código de máquina por compilação ou interpretada por um
processo denominado interpretação. Em ambas ocorre a tradução do
código fonte para código de máquina.
Se o método utilizado traduz todo o código, para só depois
executar o programa, então diz-se que o programa foi compilado e que o
mecanismo utilizado para a tradução é um compilador (que por sua vez nada mais
é do que um programa).
Se o texto do
programa é traduzido à medida que vai sendo executado, como em JavaScript, BASIC, Python ou Perl,
num processo de tradução de trechos seguidos de sua execução imediata, então
diz-se que o programa foi interpretado e que o mecanismo utilizado para a
tradução é um interpretador. Programas interpretados são geralmente mais lentos
do que os compilados, mas são também geralmente mais flexíveis, já que podem
interagir com o ambiente mais facilmente. A tradução é tipicamente feita em
várias fases, sendo as mais comuns a análise léxica, a análise
sintática (ou parsing), a geração de código e a otimização. Em
compiladores também é comum a geração de código intermediário.
Conceitos
- Programação estruturada
Programação estruturada é uma forma de programação de
computadores que preconiza que todos os programas possíveis podem ser reduzidos
a apenas três estruturas: sequência,
decisão e repetição. A Programação estruturada orienta os
programadores para a criação de estruturas simples em seus programas, usando as
sub-rotinas e as funções. Foi a forma dominante na criação de software entre a
programação linear e a programação orientada por objetos. Apesar de ter
sido sucedida pela programação orientada por objetos, pode-se dizer que a
programação estruturada ainda é marcantemente influente, uma vez que grande parte
das pessoas ainda aprendem programação através dela.
- Programação modular
Programação modular é uma forma de programação no qual o
desenvolvimento das rotinas de programação é feito através de módulos, que são
interligados entre si através de uma interface comum.Foi apresentado
originalmente pela Information & Systems Institute, Inc. no National
Symposium on Modular Programming em 1968, com a liderança de Larry Constantine.
- Programação orientada a objectos
Programação Orientada a Objectos (POO) ou ainda em
inglês Object-Oriented Programming (OOP) é um paradigma de análise,
projeto e programação de sistemas de software baseado na composição e interação
entre diversas unidades de software chamadas de objetos. O extensivo uso de
objetos, particularmente em conjunção com o mecanismo de herança, caracteriza o
estilo de programação orientada a objetos. Em alguns contextos, prefere-se
usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma
"orientação a objetos" tem bases conceituais e origem no campo de
estudo da cognição, que influenciou a área de inteligencia artificial e da
lingüística no campo da abstração de conceitos do mundo real. Na qualidade de
método de modelagem, é tida como a melhor estratégia, e mais natural, para se
eliminar o "gap semântico", dificuldade recorrente no processo de
modelar o mundo real, no domínio do problema, em um conjunto de componentes de
software que seja o mais fiel na sua representação deste domínio. Facilitaria a
comunicação do profissional modelador e do usuário da área alvo, na medida em
que a correlação da simbologia e conceitos abstratos do mundo real e da
ferramenta de modelagem (conceitos, terminologia, símbolos, grafismo e
estratégias) fosse a mais óbvia, natural e exata possível. A análise e projeto
orientados a objetos tem como meta identificar o melhor conjunto de objetos
para descrever um sistema de software. O funcionamento deste sistema se dá
através do relacionamento e troca de mensagens entre estes objetos. Na
programação orientada a objetos, implementa-se um conjunto de classes que
definem os objetos presentes no sistema de software. Cada classe determina o
comportamento (definido nos métodos) e estados possíveis (atributos) de seus
objetos, assim como o relacionamento com outros objectos.
- Programação linear
Em matemática, problemas de Programação Linear são problemas
de otimização nos quais a função objetivo e as restrições são todas
lineares. Programação Linear é uma importante área da otimização por
várias razões. Muitos problemas práticos em pesquisa operacional podem ser
expressos como problemas de programação linear. Certos casos especiais de
programação linear, tais como problemas de network flow e problemas de multicommodity
flow são considerados importantes o suficiente para que se tenha gerado
muita pesquisa em algoritmos especializados para suas soluções. Vários
algoritmos para outros tipos de problemas de otimização funcionam resolvendo
problemas de PL como sub-problemas. Historicamente, idéias da programação
linear inspiraram muitos dos conceitos centrais de teoria da otimização, tais
como dualidade, decomposição, e a importância da convexidade e suas
generalizações.
Classificação
As linguagens de programação podem ser classificadas de
várias formas, dentro das quais temos:
- Classificação quanto ao grau de abstracção
- Classificação quanto a estrutura de tipos
- Classificação quanto ao paradigma
Classificação quanto
ao paradigma
Diferentes linguagens de programação podem ser agrupadas
segundo o paradigma que seguem para abordar a sua sintaxe e semântica. Os
paradigmas se dividem em dois grandes grupos: imperativo e declarativo.
- Paradigmas Imperativos
Os paradigmas imperativos são aqueles que facilitam a
computação por meio de mudanças de estado. Se dividem em:
- Paradigma procedural, neste paradigma, os programas são executados através de chamadas sucessivas a procedimentos separados. Exemplos de linguagens deste paradigma são o Fortran e o BASIC.
- Paradigma de estruturas de blocos, a característica marcante deste paradigma são os escopos aninhados. Exemplos de linguagens deste paradigma são o Algol 60, Pascal e C.
- Paradigma de orientação a objectos, este paradigma descreve linguagens que suportam a interação entre objectos. Exemplos de linguagens deste paradigma são C++, Java, Python e Ruby.
- Paradigma da computação distribuída, este paradigma suporta que mais de uma rotina possa executar independentemente. Um exemplos de linguagem deste paradigma é a linguagem Ada.
2. Paradigmas
Declarativos
Os paradigmas declarativos são aqueles nos quais um programa
especifica uma relação ou função. Se dividem em:
- Paradigma funcional, as linguagens deste paradigma não incluem qualquer provisão para atribuição ou dados mutáveis Na programação funcional, o mapeamento entre os valores de entrada e saída são alcançados mais directamente. Um programa é uma função (ou grupo de funções), tipicamente constituída de outras funções mais simples. Exemplos de linguagens deste paradigma são as linguagens Lisp, Scheme e Haskell.
- Paradigma da programação lógica, este paradigma se baseia na noção de que um programa implementa uma relação ao invés de um mapeamento. Exemplos de linguagens deste paradigma são o Prolog e a linguagem Gödel.
Classificação quanto
a estrutura de tipos
- Fracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação.
- Fortemente tipada, como Java e Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória.
- Dinamicamente tipada, como SNOBOL, APL, Awk, Perl, Python e Ruby, onde o tipo da variável é definido em tempo de execução.
- Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação.
Classificação quanto
ao grau de abstracção
- Linguagem de programação de baixo nível, cujos símbolos são uma representação direta do código de máquina que será gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como Assembly.
- Linguagem de programação de médio nível, que possui símbolos que podem ser convertidos directamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador. Exemplo: C, C++
- Linguagem de programação de alto nível, composta de símbolos mais complexos, inteligível pelo ser humano e não-executável directamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran, ALGOL e SQL.
Algumas linguagens de programação
Existem várias linguagens de programação, dentre as
várias temosJava
- C
- C++
- Objective-C
- PHP
- Visual Basic
- Perl
- JavaScript
- Delphi / Object Pascal
OBS: Este é apenas uma breve introdução para este assunto. Para quem tiver interessado em saber mais fique atento que em momento oportuno, publicarei mais sobre cada linguagem de programação.
Ver também:
Sem comentários:
Enviar um comentário