Ich habe den Artikel hier gelesen: http://www.paulgraham.com/avg.html und der Teil über das "Blub-Paradoxon" war besonders interessant. Als jemand, der hauptsächlich in c ++ codiert, aber mit anderen Sprachen in Berührung kommt (hauptsächlich Haskell), sind mir einige nützliche Dinge in diesen Sprachen bekannt, die in c ++ schwer zu replizieren sind. Die Frage richtet sich hauptsächlich an Leute, die sowohl mit C ++ als auch mit einer anderen Sprache vertraut sind. Gibt es ein mächtiges Sprachmerkmal oder eine Sprache, die Sie in einer Sprache verwenden, die schwer zu konzipieren oder zu implementieren wäre, wenn Sie nur in C ++ schreiben würden?
Insbesondere dieses Zitat erregte meine Aufmerksamkeit:
Die einzigen Programmierer, die in der Lage sind, alle Machtunterschiede zwischen den verschiedenen Sprachen zu erkennen, sind diejenigen, die die mächtigsten verstehen. (Dies ist wahrscheinlich, was Eric Raymond damit gemeint hat, dass Lisp Sie zu einem besseren Programmierer gemacht hat.) Sie können den Meinungen der anderen aufgrund des Blub-Paradoxons nicht vertrauen: Sie sind mit der Sprache, die sie gerade verwenden, zufrieden, weil sie die Sprache diktiert wie sie über Programme denken.
Wenn sich herausstellt, dass ich aufgrund der Verwendung von c ++ das Äquivalent zum "Blub" -Programmierer bin, wirft dies die folgende Frage auf: Gibt es nützliche Konzepte oder Techniken, die Sie in anderen Sprachen angetroffen haben, die Sie ohne Sie nur schwer zu konzipieren gefunden hätten? in c ++ geschrieben oder "nachgedacht"?
Zum Beispiel kann das Logikprogrammierparadigma, das in Sprachen wie Prolog und Mercury zu finden ist, mit der Castor-Bibliothek in c ++ implementiert werden, aber letztendlich stelle ich fest, dass ich konzeptionell in Prolog-Code denke und in das c ++ -Äquivalent übersetze, wenn ich diesen verwende. Um meine Programmierkenntnisse zu erweitern, versuche ich herauszufinden, ob es ähnliche Beispiele für nützliche / leistungsfähige Redewendungen gibt, die effizienter in anderen Sprachen ausgedrückt werden, die ich als C ++ - Entwickler möglicherweise nicht kenne. Ein weiteres Beispiel, das mir einfällt, ist das Makrosystem in lisp. Das Generieren des Programmcodes aus dem Programm heraus scheint für einige Probleme viele Vorteile zu haben. Dies scheint schwer zu implementieren und aus c ++ heraus zu überlegen.
Diese Frage ist nicht dazu gedacht, eine "c ++ vs lisp" -Debatte oder eine Art von Debatte über Sprachkriege zu sein. Wenn ich so eine Frage stelle, kann ich nur so Dinge herausfinden, von denen ich nichts weiß und von denen ich nichts weiß.
there are things that other languages can do that Lisp can't
- Unwahrscheinlich, da Lisp vollständig ist. Vielleicht wollten Sie damit sagen, dass es einige Dinge gibt , die in Lisp nicht praktikabel sind ? Ich könnte das Gleiche über jede Programmiersprache sagen .