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 oGOTO(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.