Je lisais l'article ici: http://www.paulgraham.com/avg.html et la partie sur le "paradoxe du blub" était particulièrement intéressante. En tant que personne qui code principalement en c ++ mais qui est exposée à d’autres langages (principalement Haskell), je connais quelques points utiles dans ces langages qui sont difficiles à répliquer en c ++. La question s'adresse principalement aux personnes qui maîtrisent à la fois le c ++ et un autre langage. Existe-t-il une fonctionnalité ou un langage puissant que vous utilisez dans un langage qui serait difficile à conceptualiser ou à mettre en œuvre si vous écriviez uniquement en c ++?
En particulier, cette citation a attiré mon attention:
Par induction, les seuls programmeurs capables de voir toutes les différences de pouvoir entre les différents langages sont ceux qui comprennent le plus puissant. (C’est probablement ce que Eric Raymond voulait dire: Lisp ferait de vous un meilleur programmeur.) Vous ne pouvez pas vous fier aux opinions des autres, à cause du paradoxe Blub: ils sont satisfaits de la langue qu’ils utilisent, car elle dicte la façon dont ils pensent aux programmes.
S'il s'avère que je suis l'équivalent du programmeur "Blub" en vertu de l'utilisation de c ++, la question suivante se pose: Existe-t-il des concepts ou techniques utiles que vous auriez rencontrés dans d'autres langues et qu'il vous aurait été difficile de conceptualiser si écrit ou "pense" en c ++?
Par exemple, le paradigme de programmation logique utilisé dans des langages tels que Prolog et Mercury peut être implémenté en c ++ à l'aide de la bibliothèque castor, mais je trouve finalement que je pense conceptuellement en termes de code Prolog et que je traduis en équivalent c ++ lorsque je l'utilise. Afin d’élargir mes connaissances en programmation, je cherche à savoir s’il existe d’autres exemples similaires d’idiomes utiles / puissants qui sont exprimés plus efficacement dans d’autres langages que je ne connais peut-être pas en tant que développeur c ++. Un autre exemple qui me vient à l’esprit est le système de macros dans lisp. Générer le code du programme à partir de celui-ci semble présenter de nombreux avantages pour certains problèmes. Cela semble difficile à implémenter et à penser à partir de c ++.
Cette question n'est pas destinée à être un débat "c ++ vs lisp" ou un débat de type guerres de langage. Poser une question comme celle-ci est le seul moyen, à mon avis, de découvrir des choses que je ne connais pas et que je ne connais pas.
there are things that other languages can do that Lisp can't
- Peu probable, puisque Lisp est complet. Peut-être avez-vous voulu dire qu'il y a des choses qui ne sont pas pratiques à faire à Lisp? Je pourrais dire la même chose de n'importe quel langage de programmation.