Stavo leggendo l'articolo qui: http://www.paulgraham.com/avg.html e la parte relativa al "blub paradosso" è stata particolarmente interessante. Come qualcuno che principalmente codifica in c ++ ma è esposto ad altre lingue (principalmente Haskell) sono consapevole di alcune cose utili in queste lingue che sono difficili da replicare in c ++. La domanda è principalmente per le persone che sono competenti sia in c ++ che in qualche altra lingua, c'è qualche potente funzione linguistica o linguaggio che usi in un linguaggio che sarebbe difficile concettualizzare o implementare se scrivessi solo in c ++?
In particolare questa citazione ha attirato la mia attenzione:
Per induzione, gli unici programmatori in grado di vedere tutte le differenze di potere tra le varie lingue sono quelli che comprendono il più potente. (Questo è probabilmente ciò che Eric Raymond intendeva sul fatto che Lisp ti rendesse un programmatore migliore.) Non puoi fidarti delle opinioni degli altri, a causa del paradosso di Blub: sono soddisfatti di qualunque linguaggio si capisca, perché detta il come pensano ai programmi.
Se risulta che io sono l'equivalente del programmatore "Blub" in virtù dell'utilizzo di c ++, ciò solleva la seguente domanda: ci sono concetti o tecniche utili che hai incontrato in altre lingue che avresti trovato difficile concettualizzare se avessi stai scrivendo o "pensando" in c ++?
Ad esempio il paradigma di programmazione logica visto in linguaggi come Prolog e Mercury può essere implementato in c ++ usando la libreria di ricino ma alla fine trovo che concettualmente sto pensando in termini di codice Prolog e traducendo l'equivalente in c ++ quando lo uso. Come mezzo per ampliare le mie conoscenze di programmazione sto cercando di scoprire se ci sono altri esempi simili di modi di dire utili / potenti che sono espressi in modo più efficiente in altri linguaggi di cui potrei non essere a conoscenza come sviluppatore di c ++. Un altro esempio che viene in mente è il sistema macro in lisp, la generazione del codice del programma all'interno del programma sembra avere molti vantaggi per alcuni problemi. Questo sembra essere difficile da implementare e pensare all'interno di c ++.
Questa domanda non intende essere un dibattito "c ++ vs lisp" o qualsiasi tipo di dibattito di tipo guerre linguistiche. Fare una domanda come questa è l'unico modo in cui riesco a vedere possibile scoprire cose che non so di cui non so.
there are things that other languages can do that Lisp can't
- Improbabile, dal momento che Lisp è Turing completo. Forse intendevi dire che ci sono alcune cose che non sono pratiche da fare in Lisp? Potrei dire la stessa cosa di qualsiasi linguaggio di programmazione.