Thread C/C++ vs Clojure vs Perl
(20 answers)
Opened by tonewheel at 2014-05-26 21:49
Jede Sprache hat so ihre Stärken und Schwächen, so dass es sich oft lohnt für einen bestimmten Anwendungsfall die passende auszusuchen.
C und C++ sind aus meiner Sicht eher für Probleme gedacht, die feinkörnige Kontrolle darüber erfordern, was auf der Hardware passiert, entweder weil es auf die Performance ankommt oder weil man so etwas wie einen Gerätetreiber schreibt. Diese feine Kontrolle hat ihren Preis, denn Compiler und Laufzeitumgebung können einem nicht so viel Arbeit abnehmen und man muss wissen, was man tut, sonst schreibt man unsicheren und unperformanten Code. C++ hat gegenüber C den Vorteil, dass es mit Templates ein mächtiges Werkzeug zur Metaprogrammierung bietet und mit der Objektorientierung Möglichkeiten, Code modular zu strukturieren. Gerade diese beiden Gruppen von Features stecken allerdings auch voller seltsamer oder undefinierter, compilerabhängiger Verhaltensweisen. Hochsprachen mit komplexer Laufzeitumgebung wie Perl oder Clojure bieten deutlich mehr Komfort und oft ausgefeiltere Abstraktionen als C++. Als Programmierer opfert man oft ein wenig Geschwindigkeit bei der Ausführung des Codes, gewinnt allerdings meistens eine Menge Entwicklungszeit, in der man sich nicht darüber Gedanken manchen muss, wie zum Beispiel die korrekte Speichermanagementstrategie für die parallele Verarbeitung einer Datenstruktur aussieht. Ich würde einem Anfänger oder Gelegenheitsprogrammierer nicht empfehlen, sich mit C oder C++ für größere Projekte herumzuschlagen. Ich würde eine Hochsprache empfehlen, die gut zum Problem passt — zum Beispiel einen ML-Dialekt oder so etwas wie Scala wenn man sich ein mächtiges Typsystem wünscht, ein Lisp wie Clojure wenn man besonders auf Metaprogrammierung Wert legt, eine Skriptsprache wie Perl, Ruby oder Python, wenn man schnell verschiedene existierende Module und Systemfunktionen zusammenführen möchte, usw. Wenn das Produkt zum Schluss zu langsam ist, kann man im Zweifelsfall eigentlich trotzdem immer den ganzen High-Level-Code in einer High-Level-Sprache belassen und die wirklich performancekritischen Anteile eben nach C auslagern. Das hat auch den Vorteil, dass man das Gesamtsystem hinterher noch versteht, wenn man es liest, im Gegensatz zu einem endlosen C-Programm, das schon 100 Zeilen braucht, um einen einfachen Regex-Match auszuführen ;-) When C++ is your hammer, every problem looks like your thumb.
|