Linguagem de Programação - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Linguagem de Programação

A Linguagem de programação é o meio que utilizamos para dar instruções ao computador através de regras sintáticas.

Esse conjunto de palavras compostos por essas regras é chamado de código fonte.

O código fonte precisa ser convertido em código de máquina, por meio de interpretação ou compilação, para ser executado pelo computador.

Dessa forma o programador pode definir sobre quais dados o computador vai atuar, como esses dados vão ser armazenados e transmitidos.

As linguagem de programação são feitas para adotar uma linguagem mais próxima da linguagem humana, o que é chamado de linguagem de alto nível.

Isso facilita a execução das tarefas pelo programador e aumenta sua produtividade.

Interpretação e compilação

Como mencionado o código fonte precisa ser traduzido em linguagem de máquina, na compilação o código é todo traduzido para só depois ser executado, é dito então que o programa foi compilado, é armazenado e pode ser executado quantas vezes for necessário sem que haja necessidade de nova compilação.

A interpretação ocorre quando o código é executado à medida que vai sendo traduzido, como em JavaScript, BASIC, Python ou Perl, ocorre uma execução imediata dos trechos do código.

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.

Um dos primeiros a preconizar a programação estruturada foi Haskell B. Curry Tendo, na prática, sido transformada na Programação modular, 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.
Porém, a orientação a objetos superou o uso das linguagens estruturadas no mercado.

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.
Exemplos de linguagens que orientaram seu projeto para este aspecto estão as linguagens Modula-2, desenvolvida por Niklaus Wirth e a Modula-3.

Programação orientada a objetos

Orientação a objetos, também conhecida como Programação Orientada a Objetos (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 (UML), 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 inteligência 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 objetos.

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, ideias 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

A Association for Computing Machinery (lit. Associação para Maquinaria da Computação) ou ACM mantém um sistema de classificação com os seguintes

  • Linguagens aplicativas, ou de aplicação
  • Linguagens concorrentes, distribuídas e paralelas
  • Linguagens de fluxo de dados
  • Linguagens de projeto
  • Linguagens extensíveis
  • Linguagens de montagem e de macro
  • Linguagens de microprogramação
  • Linguagens não determinísticas
  • Linguagens não procedurais
  • Linguagens orientadas a objeto
  • Linguagens de aplicação especializada
  • Linguagens de altíssimo nível

Quanto ao paradigma

As linguagens de programação podem ser reunidas segundo o padrão que seguem em sua sintaxe.
Esses padrões podem ser divididos em dois grupos: imperativo e declarativo.

  • Imperativos - São aqueles que facilitam a computação por meio de mudanças de estados, são eles:
    Procedural, de estruturas de blocos, de orientação a objetos e da computação distribuída.
  • Declarativos - são aqueles nos quais um programa especifica uma relação ou função, são divididos em: Funcional e da programação lógica.

Quanto a estrutura de tipos

Essa estrutura está ligada diretamente ao tipo das variáveis e suas atribuições, são elas:

  • Fracamente tipada - onde o tipo de variável muda dinamicamente dependendo da situação, como PHP e Smalltalk.
  • Fortemente tipada - onde o tipo da variável se mantem o mesmo até ser excluída da memória, como JAva e Ruby.
  • Dinamicamente tipada - onde o tipo da variável é definida em tempo de execução, ou seja, enquanto o programa estiver executando, como SNOBOL, APL, Awk, Perl, Python e Ruby.
  • Estaticamente tipada - onde o tipo de variável é definido em tempo de compilação, que se refere ao momento em que o programa é compilado, como Java e C.

Quanto ao grau de abstração

Esse padrão se refere ao quão inteligível é a linguagem de programação para o ser humano, divide-se em:
linguagem de baixo, médio e de alto nível.

  • Linguagem de programação de baixo nível trata-se de uma linguagem de programação que segue as características da arquitetura do computador.
    Assim, utiliza somente instruções que serão executadas pelo processador, em contrapartida as linguagens de alto nível que utilizam de instruções abstratas.
    Nesse sentido, as linguagens de baixo nível estão diretamente relacionadas com a arquitetura do computador.
    Como exemplos, temos Binário e Assembly
  • As linguagens de baixo nível são divididas em duas categorias: primeira geração e segunda geração:

    1. A linguagem de primeira geração, ou 1GL, é o código de máquina.
      É a única linguagem que um microprocessador pode executar nativamente.
      O código de máquina pode ser escrito diretamente por um editor hexadecimal.
      Atualmente é raro que um programador trabalhe com o código de máquina diretamente, preferindo o uso da linguagem Assembly.

    2. A linguagem de segunda geração, ou 2GL, é a linguagem Assembly.
      É considerada de baixo nível pois embora não seja uma linguagem nativa do microprocessador, ainda assim utiliza apenas de instruções reais do processador.
      Desta forma a linguagem Assembly não contém nenhum tipo de instrução abstrata, onde cada instrução é convertida diretamente para a instrução equivalente em código de máquina pelo montador.
  • Linguagem de programação de médio nível, que possui símbolos que podem ser convertidos diretamente 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, é uma linguagem com um nível de abstração relativamente elevado, longe do código de máquina e mais próximo à linguagem humana.
    Desse modo, as linguagens de alto nível não estão diretamente relacionadas à arquitetura do computador.
    O programador de uma linguagem de alto nível não precisa conhecer características do processador, como instruções e registradores.
    Essas características são abstraídas na linguagem de alto nível.

Quanto a geração

A classificação das linguagens de programação em gerações é uma questão que apresenta divergências de autor para autor.
Segundo Maclennan, as linguagens se dividem em cinco gerações com as seguintes características:

  • Primeira geração
    São linguagens onde suas estruturas de controle são aparentemente orientadas a máquina.
    As instruções condicionais não são aninhadas e dependem fortemente de instruções de desvio incondicional como o GOTO.
    Uma linguagem típica desta geração é a linguagem Fortran.

  • Segunda geração
    São linguagens onde as estruturas de controle são estruturadas de forma a minimizar ou dispensar o uso de instruções GOTO.
    A segunda geração elaborou melhor e generalizou diversas estruturas de controle das linguagens de primeira geração.
    Uma das grandes contribuições desta geração foi suas estruturas de nomes, que eram hierarquicamente aninhadas.
    Isto permitiu melhor controle de espaços de nomes e uma eficiente alocação dinâmica de memória. Uma linguagem típica desta geração é o Algol 60.

  • Terceira geração
    São linguagens que dão ênfase a simplicidade e eficiência.
    Uma linguagem típica desta geração é a linguagem Pascal.
    As estruturas de dados desta geração mostram um deslocamento da máquina para a aplicação.
    As estruturas de controle são mais simples e eficientes.

  • Quarta geração
    Esta geração é essencialmente o sinônimo para linguagens com abstração de dados.
    A maioria das linguagens desta geração focam na modularização e no encapsulamento.
    Uma linguagem típica desta geração é a linguagem Ada.

  • Quinta geração
    Nesta geração, Maclennan agrupa diversos paradigmas como a orientação a objeto e o paradigma funcional, paradigma lógico.
  • Primeira geração - linguagem de máquina.
  • Segunda geração - linguagens de montagem (assembly).
  • Terceira geração - Linguagens procedurais.
  • Quarta geração - Linguagens aplicativas.
  • Quinta geração - Linguagens voltadas a Inteligência artificial como as linguagens lógicas (Prolog) e as linguagens funcionais (Lisp).
  • Sexta geração - Redes neurais.

© Copyright T.I. Fácil