Systemprogrammierung in C++
-
Ich bin seit einigerzeit begeisterter Unix Benutzer. In den letzten Wochen habe ich mich viel mit der Systemprogrammierung unter Unix auseinandergesetzt. Anfangs aus Bequemlichkeit in C, später dann auch in C++.
Zur Zeit lese/überfliege ich sehr viel fremden Source in der Hoffnung etwas zu lernen. Dabei ist mir allerdings eine Sache aufgefallen - und zwar die enorme Verbreitung von reinem C. Das dies bei älteren Projekten der Fall ist, halte ich für normal. Aber selbst relativ junge Projekte wie der MPlayer sind alle in C geschrieben. Ich bin sogar der Auffassung, dass Perl stärker verbreitet ist als C++. Ich konnte kaum Projekte ausserhalb der GUIs(Qt/KDE) finden, welche in C++ geschrieben sind.
Gibt es dafür unter Unix einen bestimmten Grund, oder anders gefragt, sollte man C gegenüber C++ vorziehen, wenn es sich um reine CLI Anwendungen handelt? Welche Sprache bevorzugen Firmen die ihr Geld mit Unix/Linux Programmierung verdienen?
-
Um es mit Worten meines Professors zu sagen:
"Viele Sachen sind in C implementiert weil C einfach schneller ist"
Ob das nun der Grund dafuer ist, dass wie du sagst die meisten Programme in C geschrieben sind, kann ich nicht sagen. Ist wahrscheinlich Projektabhaengig.
Ich weiss nur dass der Linux-Kernel in C geschrieben ist, weil es zum Zeitpunkt seiner Entstehung noch kein C++ gab! (Schaetze aber dass sie trotzdem C verwendet haetten, der Kernel ist einfach zu wichtig, als dass man dort beliebig Ressourcen verschwenden kann)
-
moe szyslak schrieb:
"...weil C einfach schneller ist"
Genau das hab ich HIER im Forum mal geschrieben. Kurz darauf wurde ich öffentlich "hingerichtet".
-
Die Aussage das C schneller als C++ sei ist einfach quatsch. Genauso könntest du sagen, dass chinesisch schneller als mongolisch sei. uc?
C++ gab es schon lange, als Linux entwickelt wurde. Zu dem Thema schaut einfach mal in die kernel.org-FAQ.
Der Grund warum C unter UNIX so populär ist, wurde schon oft genug diskutiert.
UNIX wurde mit C entwickelt, weil C sehr low level (Macroassembler) aber dennoch portabel ist. Daher war bei jedem UNIX und jedem UNIX-Derivat bereits ein C Compiler bei. Außerdem ist die System API (POSIX) in C definiert (Eigentlich ist C sogar bestandteil von POSIX). Daher war es am einfachsten für einen Entwickler ein Programm in C zu schreiben, da Compiler, andere Werkzeuge und die API in C definiert waren. Das wurde dann zum selbstläufer.
-
Danke - also hat das alles nur mit Vorlieben der Entwickler zu tun. Ich werde wohl aus Gewohnheit bei C++ bleiben.
Gibt es schöne C++ Bibliotheken für posix?
Zum Thema C ist schneller C++: Ich würde aber auch sagen, dass C _minimal_ schnellere Binaries erzeugen kann. Den Grund sehe ich aber weniger bei der Sprache, als vielmehr bei den Möglichkeiten den eine Sprache einem bietet. C++ verleitet zu sauberen und bloatigem Code. Dieser resultiert in größeren Binaries, welche wiederum langsamer sein werden/können.
-
Gibt es schöne C++ Bibliotheken für posix?
Hier kommen wir zum größten Manko von C++, es gibt noch keine umfangreiche und sauber designte Library, die alles umfasst, was man im Altag benötigt.
Boost enthält zwar schon recht viel, aber Dinge wie sockets fehlen leider noch.
-
Schade - aber es ist ja nicht die WinAPI mit der ich roh arbeiten muss.
BTW: Danke für den Tipp mit C++ und dem Linux Kernel. Sehr interessant - falls es noch jemanden interessiert: http://www.csh.lkams.kernel.org/pub/linux/docs/lkml/#s15-3
-
alex89ru schrieb:
moe szyslak schrieb:
"...weil C einfach schneller ist"
Genau das hab ich HIER im Forum mal geschrieben. Kurz darauf wurde ich öffentlich "hingerichtet".
Naja, ich behaupte das ja auch nicht. Mein Professor ist nur vollkommener C-Fan.
Ich persoenlich kann einen Nennenswerten Geschwindigkeitsvorteil nicht festellen.
Das liegt aber auch wahrscheinlich daran, dass ich noch nie ein Programm 2mal geschrieben habe ( C und C++ ).
Vor allem weil wir auf der Uni Java lernen, was mir nicht unbedingt zusagt, aber was solls. Die 4 Semester sind e um, jetzt brauch ich es sowieso fast nie auf der Uni, und privat schon gar nicht...
aber ich will ja nicht abschweifen ...
-
kingruedi schrieb:
Gibt es schöne C++ Bibliotheken für posix?
Hier kommen wir zum größten Manko von C++, es gibt noch keine umfangreiche und sauber designte Library, die alles umfasst, was man im Altag benötigt.
Boost enthält zwar schon recht viel, aber Dinge wie sockets fehlen leider noch.
Nicht jeder unterstreicht, dass Qt sauber designed ist. Aber für mich gilt das und auch die anderen Anforderungen erfüllt Qt.
-
Unix wurde zuerst in Assembler geschrieben, und erst darauf in C neu implementiert.
C ist einfach lesbarer als Assembler.
Soviel dazu.
-