Ouvi várias vezes que todo programador deve aprender um de cada tipo de linguagem. Agora, isso não é necessariamente verdade, mas acredito que é uma boa ideia.
Eu aprendi uma linguagem processual (Perl), mas quais são os outros tipos?
Quais são as diferenças entre eles e quais são alguns exemplos de cada um?
programming-languages
paradigms
Dinâmico
fonte
fonte
Respostas:
Embora a terminologia esteja longe de ser padronizada, uma maneira comum de categorizar os principais paradigmas de programação em
Parece que você já sabe como é a programação procedural.
Em linguagens funcionais , as funções são tratadas como objetos de primeira classe. Em outras palavras, você pode passar uma função como argumento para outra função ou uma função pode retornar outra função. O paradigma funcional é baseado no cálculo lambda, e exemplos de linguagens funcionais são LISP, Scheme e Haskel. Curiosamente, o JavaScript também suporta programação funcional.
Na programação lógica , você define predicados que descrevem relacionamentos entre entidades, como
president(Obama, USA)
oupresident(Medvedev, Russia)
. Esses predicados podem ficar muito complicados e envolver variáveis, não apenas valores literais. Depois de especificar todos os seus predicados, você pode fazer perguntas ao seu sistema e obter respostas logicamente consistentes.A grande idéia na programação lógica é que, em vez de dizer ao computador como calcular as coisas, você diz o que são. Exemplo: PROLOG.
O paradigma orientado a objetos é, de certa forma, uma extensão da programação procedural. Na programação procedural, você tem seus dados, que podem ser tipos primitivos, como números inteiros e flutuantes, tipos compostos, como matrizes ou listas e tipos definidos pelo usuário, como estruturas. Você também tem seus procedimentos, que operam nos dados. Por outro lado, no OO, você tem objetos, que incluem dados e procedimentos. Isso permite que você tenha coisas legais como encapsulamento, herança e polimorfismo. Exemplos: Smalltalk, C ++, Java, C #.
A programação genérica foi introduzida pela primeira vez em Ada em 1983 e tornou-se difundida após a introdução de modelos em C ++. Essa é a idéia de que você pode escrever código sem especificar os tipos de dados reais nos quais ele opera e fazer com que o compilador descubra. Por exemplo, em vez de escrever
você escreveria
uma vez e faça com que o compilador gere um código específico para o
T
que quer que seja, quandoswap()
é realmente usado no código.A programação genérica é suportada em vários graus por C ++, Java e C #.
É importante observar que muitas linguagens, como C ++, suportam múltiplos paradigmas. Também é verdade que, mesmo quando se diz que uma linguagem suporta um paradigma específico, ela pode não suportar todos os recursos do paradigma. Sem mencionar que há muita discordância sobre quais recursos são necessários para um paradigma específico.
fonte
As linguagens de programação possuem vários recursos principalmente ortogonais; o mais proeminente reside no paradigma ou paradigmas que eles apóiam. O artigo da Wikipedia cobre paradigmas exaustivamente; os paradigmas mais importantes são provavelmente os seguintes:
Mas os idiomas também diferem de outras maneiras:
fonte
Atualmente, existem vários paradigmas de programação em voga:
fonte
Prolog é uma linguagem de programação lógica e é relativamente fácil de começar. Requer um pensamento completamente diferente da programação procedural, portanto, é bom explorar quando você está tentando esticar seu cérebro.
Se você for para a faculdade, faça um curso sobre Linguagens de Programação, uma vez que é voltado para a introdução dos diferentes tipos de linguagens de programação e para o que elas são melhor utilizadas.
fonte
A maioria das linguagens convencionais mescla aspectos da programação imperativa, funcional e declarativa. As linguagens de nicho tendem a ser mais exóticas ou a introduzir novas idéias interessantes que, por um motivo ou outro, não são adequadas para programação de uso geral. Alguns, de maneira alguma exaustivos, exemplos:
(+/ % #)&.:*:
calcula o RMS de uma matriz. Famoso por ser conciso, notório por ser ilegível.fonte