Executando verificação de segurança...
2

Já que o assunto é fundamentos, vamos aos fundamentos. Primeiro seria o que é programação imperativa.

Como nas referências do teu artigo tem um link Lógica de programação, por onde começar? , resolvi dar uma olhada. Ok, 13 minutos dá para deixar rolando. Tem muita coisa no vídeo que está citado no teu artigo. Mas, basicamente é o que eu escrevi: Lógica de programação para linguagens imperativas.

A primeira dica é: Nunca diga qualquer linguagem. A menos é claro, que você realmente conheça todas as linguagens e saiba do que está falando.

O primeiro exemplo de "pseudo linguagem" é um C traduzido. O segundo é um Pascal traduzido (não sei o motivo de terem trocado := por <- ; poderiam deixar apenas =). Depois mostra um código em Java. E depois Swift. Todas são imperativas, confere? É, mas Java e Swift são OO. Ok, nenhum impedimento. A receita de bolo também é um exemplo imperativo. Tem os ingredientes (ovos, farinha, etc.), os procedimentos seguindo uma ordem (misturar, bater, cozer) e servir. Troca os ingredientes por variáveis e constantes, os procedimentos pela transformação das variáveis inicias e o resultado por um relatório que é a mesma coisa. Então, um programa é apenas uma receita de bolo bem detalhada.

Depois são apresentados alguns outros conceitos (constantes, variáveis, for, while, etc.) e diz que precisa dominar estes conceitos para qualquer linguagem de programação.

Lembras do que eu escrevi ali em cima? Nunca diga isso. Existem diversas linguagens/paradigmas que o que foi ensinado não é aplicável. É possível citar APL, Prolog entre outras. Não vou colocar exemplos aqui para não sujar o tópico. Mas podes ver um exemplo neste link.

Espero ter auxiliado em alguma coisa.

Carregando publicação patrocinada...
1

Olá @guaracy, agora entendi! Realmente a maioria dos exemplos e a forma das explicações que trouxe aqui se referem ao paradigma imperativo e você tem razão em apontar isso, muito obrigado. Você tem sugestões de fundamentos para outros paradigmas de programação? Em Prolog por exemplo utiliza variável também? Em Lisp tem o conceito de classes também?

Acredito que essa colaboração não sujará a publicação, mas será uma das melhores contribuições para este tema, tenho certeza disso. Muito obrigado mais uma vez pelo apontamento tão importante!!!

2

De uma forma geral, as linguagens podem associar nomes a valores. Chamando de variável, associa-se ao conceito de mutabilidade.

tot = 0
for valor in lista
  tot = tot + valor

No caso acima, tot é uma variável. Em Prolog, depois de atribuir um valor para tot ele não poderá mais ser alterado dentro do escopo. Teria um comportamento parecido com o de uma constante. Já em linguagens funcionais, uma expressão do tipo a = a + 1 nem faz muito sentido. É como uma função recursiva.

Lisp é uma linguagem que pode ter quase tudo. Em Lisp tem o CLOS (implementado no SBCL). De qualquer forma, a definição de linguagem orientada a objetos pode ser meio polêmica. Se não me engano, Clojure não implementa OO. Como tem gente que não gosta de OO mesmo