Study Notes

Programação

É o processo de fornecer instruções a um computador para que ele execute uma tarefa específica. Como nós humanos comunicamos com as máquinas.

Programa

É um conjunto de instruções, organizadas de forma lógica, que o computador pode executar para realizar uma tarefa.

Linguagens de Programação


As LP seriam uma linguagem (conjunto de palavras) que tem como objetivo expressar algorítimos (sequencia de passos) e estrutura de dados. São formas de programar.

Requisitos

As LP devem atender as seguintes propriedades para serem estritamente consideradas linguagens de programação. Toda LP é:

  • Universal:
  • Natural:
  • Implementável:
  • Eficiente:

Paradigmas de Programação


Um paradigma (do grego parádeigma = “modelo, padrão, exemplo”) é um modelo de organizar as idéias. Ele nunca nasce do zero. Ou seja, é construído em cima de um conceito anterior/ uma ótica sobre como resolver problemas. Ou seja, historicamente primeiro veio o pensamento e depois ele foi organizado/categorizado.

Pode-se separar paradigmas de programação em dois eixos: formas de pensar sobre controle de fluxo e como comunica-se com o computador.

Controle de Fluxo


Paradigma sobre como as instruções são organizadas internamente no programa.

Não-Estruturada

Pensamento: "Fazer funcionar" Ano: 1950-1960 Linguagens: COBOL e FORTRAN (pelo menos as versões iniciais dessas linguagens)

É a forma como se programava no início da computação

Estruturada

Pensamento: programa deve ter fluxo lógico claro e previsível Ano: 1960-1970 Linguagens: C,Pascal Programação sequencial, composta por 3 estruturas de controle:

  • SEQUÊNCIA. (uma instrução em sequencia de outra)
  • SELEÇÃO. (if, else, switch,)
  • REPETIÇÃO.(for, while, do-while,) Esse tipo de programação eliminou o GOTO (que fazia os programas ficarem muito confusos e spaghetti code). Isso trouxe uma maior legibilidade e manutenibilidade.

Paralela Estruturada

Pensamento: "Abstrair e estruturar a complexidade da execução paralela" Ano: 1990 Linguagens: Cilk, OpenMP (lib).

Com a ascensão dos processadores multi-core, a programação puramente sequencial tornou-se um gargalo de desempenho.

Aplicação dos princípios da programação estruturada no mundo paralelo.

Substituir a implementação de execuções paralelas de "baixo nível" para a utilização de patterns de programação paralela que torna o código paralelo mais seguro, escalável e portátil entre diferentes arquiteturas.

Filosofia de Programação


Estes são os paradigmas clássicos de programação. Diz a respeito sobre como nós comunicamos com o computador, instruímos as máquinas. Ou seja, são formas de pensar sobre como programar que determinados grupos de LP implementam.

Imperativo


Pensamento: COMO fazer. Passo a passo, alterando estados.

Assim como o verbo imperativo é usado para expressar o que fazer: "compre leite no supermercado", "Não esqueça de levar o guarda-chuva", "adiciona testes unitários para validação de pagamento", "add user authentication system",...

Orientada a Objetos

Declarativo


O QUE fazer. E a parte do como é abstraída mais ainda pela LP.

Funcional

On this page