Eu estava lendo o artigo aqui: http://www.paulgraham.com/avg.html e a parte sobre o "paradoxo blub" foi particularmente interessante. Como alguém que codifica principalmente em c ++, mas tem exposição a outras linguagens (principalmente Haskell), estou ciente de algumas coisas úteis nessas linguagens que são difíceis de replicar em c ++. A questão é principalmente para pessoas que são proficientes em c ++ e em alguma outra linguagem. Existe algum recurso ou idioma poderoso que você utiliza em uma linguagem que seria difícil de conceituar ou implementar se você estivesse escrevendo apenas em c ++?
Em particular, esta citação chamou minha atenção:
Por indução, os únicos programadores em posição de ver todas as diferenças de poder entre as várias linguagens são aqueles que entendem a mais poderosa. (Provavelmente, é isso que Eric Raymond quis dizer sobre Lisp fazer de você um programador melhor.) Você não pode confiar nas opiniões dos outros, por causa do paradoxo Blub: eles estão satisfeitos com o idioma que usam, porque dita o a maneira como eles pensam sobre os programas.
Se eu sou equivalente ao programador "Blub" em virtude do uso de c ++, isso levanta a seguinte pergunta: Existem conceitos ou técnicas úteis que você encontrou em outros idiomas que você teria achado difícil conceituar se você esteve escrevendo ou "pensando" em c ++?
Por exemplo, o paradigma de programação lógica visto em linguagens como Prolog e Mercury pode ser implementado em c ++ usando a biblioteca de castor, mas finalmente acho que conceitualmente estou pensando em termos de código Prolog e traduzindo para o equivalente em c ++ ao usá-lo. Como forma de ampliar meu conhecimento de programação, estou tentando descobrir se há outros exemplos semelhantes de expressões úteis / poderosas que são expressas com mais eficiência em outras linguagens que talvez eu não conheça como desenvolvedor de c ++. Outro exemplo que vem à mente é o sistema macro no lisp, gerar o código do programa a partir do programa parece ter muitos benefícios para alguns problemas. Parece ser difícil de implementar e pensar a partir do c ++.
Esta questão não pretende ser um debate "c ++ vs lisp" ou qualquer tipo de debate do tipo guerra de idiomas. Fazer uma pergunta como essa é a única maneira que eu posso ver possível para descobrir coisas que eu não sei e que não sei.
there are things that other languages can do that Lisp can't
- Improvável, já que Lisp é Turing-complete. Talvez você quisesse dizer que há algumas coisas que não são práticas para fazer no Lisp? Eu poderia dizer o mesmo sobre qualquer linguagem de programação.