Thread C/C++ vs Clojure vs Perl (20 answers)
Opened by tonewheel at 2014-05-26 21:49

Raubtier
 2014-05-26 23:28
#175754 #175754
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
2014-05-26T19:49:14 tonewheel
Hallo zusammen,

momentan führe ich ein vor etlichen Jahren begonnenes C++ Studium weiter/bzw. frische auf. Excellente Bücher (Sutter, Koenig/Moo, Meyers) helfen dabei. Dabei stellt sich mir langsam aber sicher die Frage von Sinn und Nutzen. Im Augenblick sehe ich das so, dass es einfacher ist, ungekapselten C-Code mit Zeigern, structs, malloc und Konsorten zu benutzen, als sich in unendliche Definitionen von Konstruktoren, Templates und Operatorüberladungen zu stürzen, nur um Themen wie Kapselung und reusability gerecht zu werden. Was man an Komfort gewinnt, wird durch Umstand zunichte gemacht.


Das hier sehe ich doch deutlich anders. Zunächst einmal: wieviel von dem Code reusable ist, ist sowieso immer fraglich... Außerdem zwingt dich ja auch niemand, in C++ eigene Templates zu nutzen oder dich gar mit Variadic Templates auseinanderzusetzen. Man kommt mit der STL schon reichlich weit (gut, das sind ja auch Templates, aber um die zu benutzen, ist ja kein besonderes Wissen nötig). Was ich als besonders angenehm empfinde, ist gerade, dass ich mich in C++ eben nicht mit Zeigern rumschlagen muss. Und wenn doch, dann erzeuge ich mir einen smart pointer, dann muss ich nicht einmal Speicher wieder freigeben, da das im Zweifel schon die } tut. Ein vector ist doch wesentlich einfacher zu handhaben als irgendein Pointer. Ich denke z.B. an die Übergabe an eine Funktion. Ohne vector muss man noch händlisch die Länge übergeben usw. usf. Gut, ich gebe zu, dass man ganz ohne Wissen über Pointer doch irgendwann in Probleme läuft, aber in C brauchst du das ja auch.

Und zuletzt: wenn du gerade dein C++ auffrischst, solltest du unbedingt aktuelle Literatur nutzen, da C++11 recht neu ist und sich doch viel geändert hat.

Quote
Noch besser als C wünscht man sich dann eher Perl, das viele(alle?) dieser Probleme außen vor lässt. Wären da nicht auch Sprachen wie z.B. Clojure. Hier hat man concourrency, immutability, funktionales Programmieren, und der Code ist sehr kompakt. Da stellt sich dann die Frage, ob Perl hier punkten kann, bzw. überlegen ist, gerade, was die letztgenannten Eigenschaften betrifft, die m.M. in Perl alle fehlen (außer Kompaktheit).


Hm, C und Clojure sind aber schon recht unterschiedlich... Richtig, ich mag immutability auch, aber manchmal sind auch inplace-Algorithmen besser/effizienter - je nach Anwendung eben. Concurrency: hier hätte ich zwei Anmerkungen. Eine zu C++: da gibt es jetzt auch std::async und Konsorten aus <future>, dem du einfach ein Lambda übergeben kannst und schon läuft dein Code parallel. Die andere Bemerkung betrifft die Sprache Go. In Go ist Nebenläufigkeit auch überall vorhanden und einfach einzusetzen.

View full thread C/C++ vs Clojure vs Perl