Paradigma de programação

Os paradigmas de programação são uma forma de agrupar as linguagens de programação pelo que fazem. As linguagens podem estar em mais do que um paradigma.

Alguns paradigmas olham para a forma como o código é executado, tais como permitir efeitos secundários, ou ter de fazer as coisas numa determinada ordem. Outros paradigmas olham para a forma como o código é agrupado, tais como colocar o código em uma ou duas peças (ou, em vez disso, muitas peças pequenas). Alguns outros paradigmas olham para a ordem e peças que fazem o programa da forma como está.

Existem dois grupos principais de paradigmas, imperativo e declarativo. Uma língua pode ser ambas ao mesmo tempo.

Conteúdos

·         1 Programação imperativa

·         2 Programação declarativa

·         3 Outros paradigmas

·         4 Visão geral

·         5 Problemas com paradigmas

·         6 História

o    6.1 Código da máquina

o    6.2 Línguas processuais

o    6.3 Programação orientada a objectos

o    6.4 Paradigmas declarativos

·         7 páginas relacionadas

·         8 Referências

·         9 Outros sítios Web

Programação imperativa

Em programas imperativos, os programadores dão ao computador um conjunto de passos ordenados que precisam de ser feitos para fazer algo. Se alguém quisesse que o computador desenhasse uma cara de gato, poderia dar indicações como "Desenha um círculo aqui, desenha dois círculos mais pequenos ali, desenha dois triângulos em cima" e assim por diante. Programas imperativos têm por vezes muitos efeitos secundários.

Existem dois grandes paradigmas imperativos, e muito do tempo que uma língua terá ambos:

  • Estruturado - O computador recebe instruções que estão sempre numa determinada ordem. Passos como "voltar ao passo 3" (conhecidos como declarações goto) não são permitidos.
    • Procedural - O programa permite ao programador dar um nome a uma lista de ordens, o que transforma essas ordens num "procedimento" que podem utilizar mais tarde. A maioria das línguas estruturadas são também processuais.
  • Orientado para objectos - As ideias são explicadas ao computador utilizando objectos, peças de código que têm um conjunto de ordens que podem ser dadas e alguma informação sobre elas.

Programação declarativa

Nos paradigmas declarativos, o programador diz ao computador o que fazer em vez de como o fazer. Se quisessem que o computador desenhasse um rosto de gato, poderiam dar indicações como "Desenha um rosto, desenha dois olhos, dois ouvidos e uma boca".

Os paradigmas declarativos mais conhecidos são:

  • Funcional - A maior parte do trabalho é feita por funções sem efeitos secundários.
  • Lógica - Um conjunto de factos é declarado, e depois são feitas uma ou mais "perguntas".
  • Movido por eventos - Pedaços de código são definidos para funcionar quando certas coisas acontecem (como o computador a ser ligado).

Outros paradigmas

Alguns paradigmas podem ser encontrados tanto em línguas imperativas como declarativas. Estes paradigmas são normalmente encontrados com um dos paradigmas acima mencionados, em vez de se seguirem por si próprios.

Visão geral

As linguagens de programação são agrupadas por paradigmas da mesma forma que as máquinas podem ser agrupadas por aquilo para que são utilizadas.

Algumas línguas encaixam apenas num paradigma principal, como por exemplo:

  • Smalltalk (orientado para objectos)
  • Montagem (imperativa, mas não estruturada ou orientada para objectos)
  • Haskell (funcional)
  • Prolog (lógica)

A maioria das línguas, no entanto, estão em mais do que um paradigma. Algumas das que se destacam por terem mais do que apenas uma são:

  • Scala (orientado para objectos, funcional, paralelo)
  • Visual Basic (orientado para eventos, orientado para objectos)
  • Lisp comum (processual, funcional, orientado para objectos, meta)
  • Esquema (funcional, processual, meta)
  • Perl (funcional, processual, meta, orientado para objectos, orientado para eventos)
  • Python (funcional, orientado para objectos, processual)
  • Rubi (funcional, orientado para objectos, processual)
  • Wolfram Language (funcional, processual, geralmente declarativo)
  • Oz (lógico, funcional, imperativo, orientado para objectos)
  • F# (funcional, imperativo, orientado para objectos, meta)

Ter mais paradigmas nem sempre é bom. Uma vez que ter menos paradigmas pode ser uma coisa boa é quando existe uma linguagem que só é funcional. Uma função numa destas línguas, por vezes funciona menos (como só passar por cima das partes de um grupo de coisas de que realmente precisa) do que se a língua também fosse processual.

Muitos paradigmas de programação são tão bem conhecidos pelas coisas que não deixam as pessoas fazer como por aquelas que deixam as pessoas fazer. Uma vez onde isto é verdade são as linguagens funcionais. Quando uma linguagem funcional é apenas ou principalmente funcional, normalmente não permite efeitos secundários. Outra vez em que isto é verdade é programação estruturada: é diferente das linguagens imperativas normais porque não permite que os programadores usem "declarações goto" (declarações que dizem ao programa para ir para um passo anterior). Devido a esta e outras razões, as pessoas por vezes pensam que os novos paradigmas não permitem coisas suficientes. No entanto, por vezes não faz mal que o computador não permita que as pessoas façam coisas: pode ajudar as pessoas a evitar problemas com o seu código, e deixar que o computador faça suposições para que possa executar o código mais rapidamente, ou mesmo verificar o código em busca de problemas antes de o código ser executado!

Visão geral dos vários paradigmas de programação de acordo com Peter Van RoyZoom
Visão geral dos vários paradigmas de programação de acordo com Peter Van Roy

Problemas com paradigmas

Algumas pessoas que estudam linguagens de programação não gostam que paradigmas sejam usados para agrupar linguagens de programação, tais como Harper e Krishnamurthi. Essas pessoas dizem que muitas linguagens de programação não podem ser agrupadas apenas em paradigmas porque as linguagens emprestam coisas e ideias de muitos paradigmas.

História

Novos paradigmas foram criados ao longo do tempo, e as pessoas indicaram-nos na altura, ou ao olhar para trás. Um dos primeiros paradigmas que foi reconhecido como uma nova forma de programação foi a programação estruturada a partir dos anos 60. A ideia de um "paradigma de programação" é de 1978, se não mais cedo, quando Robert W. Floyd a utilizou enquanto ensinava. A palavra "paradigma" na forma como Robert a quis dizer foi usada pela primeira vez por Thomas Kuhn no seu livro, The Structure of Scientific Revolutions (1962).

Código da máquina

O nível mais baixo (mais próximo de como o computador gosta de compreender as coisas) e o paradigma de programação mais antigo é o código da máquina, um paradigma imperativo. As instruções em código de máquina são apenas um conjunto de números numa determinada ordem. A linguagem de montagem é um pouco menos de baixo nível (e um pouco menos antiga). Na linguagem de montagem, as direcções do computador recebem mnemónica (nomes mais fáceis de lembrar), e os endereços de memória (direcções para encontrar uma peça de informação no computador) podem receber nomes. Estes são por vezes denominados línguas de primeira e segunda geração.

Nos anos 60, as linguagens de montagem foram melhoradas através da adição de novas coisas como a biblioteca COPY, macros (bits de código "especial" que foram transformados em código normal antes do programa começar a correr), procedimentos de execução (conjuntos de instruções dados um nome e guardados para mais tarde), e variáveis (itens dados nomes e guardados para mais tarde) de fora do programa. Isto permite que as pessoas utilizem algum código em mais do que um projecto, e não tenham de se preocupar com problemas específicos de hardware (problemas que só acontecem num tipo de computador) graças a comandos (nomes para direcções) como READ/WRITE/GET/PUT.

A montagem foi, e por vezes ainda é, utilizada em sistemas onde é importante que o código seja rápido, e também é muito utilizada em sistemas incorporados porque permite ao utilizador ter o controlo exacto do que a máquina faz.

Línguas processuais

No final da década de 1960, as pessoas começaram a inventar línguas processuais. Estas línguas de terceira geração (as primeiras das que agora chamamos línguas de alto nível) tinham palavras relacionadas com o que estavam a tentar resolver. Por exemplo,

  • COmmon Business Oriented Language (COBOL) - utiliza palavras como ficheiro, mover e copiar.
  • FORMula TRANslation (FORTRAN) - utiliza palavras e símbolos matemáticos (formas utilizadas na escrita e na dactilografia). Foi desenvolvido principalmente para a ciência e engenharia.
  • Linguagem ALGOritmica (ALGOL) - feita para escrever algoritmos (conjuntos de passos a dizer ao computador o que fazer). Utiliza palavras e símbolos matemáticos, tal como o FORTRAN.
  • Linguagem de Programação Um (PL/I) - era suposto ser útil para todos.
  • Beginners All purpose Symbolic Instruction Code (BASIC) - feito para ajudar os principiantes a programar.
  • C - uma linguagem de programação destinada a fazer muitas coisas. Dennis Ritchie trabalhou nela de 1969 a 1973 na AT&T Bell Labs.

Programação orientada a objectos

Depois de muitas pessoas terem começado a utilizar linguagens de procedimento, inventaram linguagens de programação orientadas para objectos. Nessas linguagens, os dados e os seus "métodos" (formas de manipulação dos dados) são colocados num "objecto". Alguns programadores, como Richard Stallman, não concordam que as linguagens orientadas para objectos são melhores para explicar ideias a um computador do que as linguagens de procedimentos.

Porque a programação orientada a objectos é um paradigma, não uma linguagem, as pessoas fizeram linguagens de montagem orientadas a objectos como a HLA (High Level Assembly).

Paradigmas declarativos

Ao mesmo tempo, algumas pessoas estavam a fazer linguagens de programação declarativas. Uma linguagem bem conhecida por ser declarativa é a SQL (uma linguagem para adicionar e remover coisas das tabelas).

Páginas relacionadas

  • Mindset
  • Sistema de tipo
  • Completude de tingimento

Perguntas e Respostas

P: O que é um paradigma de programação?


R: Um paradigma de programação é uma forma de agrupar linguagens de programação baseadas na forma como elas funcionam.

P: Quais são os dois principais grupos de paradigmas?


R: Os dois principais grupos de paradigmas são imperativos e declarativos.

P: Como é que os paradigmas imperativos e declarativos diferem?


R: Os paradigmas imperativos olham para a forma como o código é executado, tal como permitir efeitos secundários ou ter de fazer as coisas numa determinada ordem, enquanto os paradigmas declarativos olham para a forma como o código é agrupado, tal como colocar o código em uma ou duas peças (ou, em vez disso, muitas peças pequenas).

P: Pode uma linguagem ser ao mesmo tempo um paradigma imperativo e declarativo?


R: Sim, uma língua pode ser tanto um paradigma imperativo como declarativo ao mesmo tempo.

P: Como é que uma linguagem de grupo de paradigmas de programação?


R: Programação de linguagens de grupo de paradigmas pelo que eles fazem. Eles observam como o código é executado, como é agrupado, e que ordem e peças compõem o programa.

P: Existem outros tipos de paradigmas de programação para além dos imperativos e declarativos?


R: Sim, existem outros tipos de paradigmas de programação para além do imperativo e declarativo. Por exemplo, alguns olham para a forma como o código é executado (tal como permitir efeitos secundários), enquanto outros olham para a forma como o código é agrupado (tal como colocar o código em uma ou duas peças).

P: Será que cada linguagem pertence apenas a um tipo de paradigma de programação?


R: Não, nem todas as linguagens pertencem a apenas um tipo de paradigma de programação; algumas linguagens podem estar em mais do que um tipo de paradigma.

AlegsaOnline.com - 2020 / 2023 - License CC3