Frage zu C
-
Hi,
eine große Bitte vorerst:
- Bitte bleibt freundlich! Ich stelle hier nur Fragen und äußere meine momentanen Ansichten! Ich würde nicht fragen, wenn ich mich nicht eines besseren belehren lassen würde!Nun gut:
Wieso werden immernoch soviele Projekte in C geschrieben, wenn C++ soviel besser ist?! Beispiel Apache, Gnome und eben die ganzen Unix/Linux Programme. Die sind alle größtenteils in C geschrieben.
Den Linux/Unix Kernel will ich mal nicht hinzuzählen, weil es davor nicht C++ gab.Nun wieso also?
Ist C schneller als C++?
Nein, sagen einige in diesem Thread (Ihr seht ich habe die Suchenfunktion benutzt), andere meinen der Unterschied wäre klein, wenn man C++ gut programmieren kann.
Mich interessiert jetzt mehr die technische Seite. Ich weiss, dass Compiler ebenfalls die Performance bestimmen.Ich möchte einfach nur den Grund wissen, warum immernoch viele C für große Projekte benutzen.
Ich lerne momentan in der Schule Java und lerne auch privat sehr viel weiter, dennoch ist C oder C++ ein MUSS für mich.
Ob ich beide Sprachen lernen werde weiss ich nicht, aber eins ist sicher: Eine von beiden Sprachen werde ich aufjedenfall noch lernen!Wen diesen Thread zur Weißglut treibt, der soll bitte antworten, denn es hilft weder ihm noch mir weiter.
Liebe Grüße
Real
-
Hallo!
C-Code funktioniert auch in C++-Kontext, C++ ist also eine Erweiterung von C. von der Geschwindigkeit her hat C++ geringe Performanceeinbußen, die aber kaum ins Gewicht fallen.
Der große Unterschied liegt in der Natur der beiden Sprachen. C ist eine prozedurale Sprache, d. h. ausgehend von einem Programm-rumpf werden verschiedene Funktionen aufgerufen und so der gesamte Programmablauf gestaltet.
Bei C++ unterteilt man den Code noch weiter. Es werden kleine Programm-Module (Klassen) geschrieben, die je nach dem Server- und Clientaufgaben übernehmen. In einem C++-Programm wirst Du eine menge kleiner in sich abgeschlossener Teil-Progrämmchen finden, die untereinander innerhalb des Programm-kontextes miteinander kommunizieren.
Desweiteren ist der Programmaufbau von eines C++-Programmes objektorientiert, wobei sich völlig neue und besser modularisierte Strukturen designen lassen. Ich will schon fast sagen, der objektorientierte Entwurf ist quasi schon zu einer eigenen Philosophie geworden.
Warum noch immer C-Programme geschrieben werden liegt einfach daran, daß der bestehende Code weiter gepflegt werden muß, eine umstellung auf das moderne C++ keinerlei Nutzen bzgl. des Aufwandes bringen würde.
Jedoch solltest Du Dich auf C++ konzentrieren (da ist nämlich C auch gleich mit dabei - wohl gemerkt nicht die prozedurale Programmiertechnik - die ohnehin schon veraltet ist).
Gruß Christian
-
Das Problem mit C++ ist, dass es erst relativ spät standardisiert wurde und die Compiler den C++ Standard erst seit den letzten Jahren gut unterstützen. Aus dem Grund haben auch ältere C++ Frameworks immer noch eine riesige Menge an Klassen/Funktionen, die mittlerweile fest im C++ Standard integriert sind. GNOME etc. entstanden zu einer Zeit, wo man entweder auf Frameworks wie Qt oder MFC aufsetzen musste oder eben C genommen hat.
Der andere Punkt ist, dass es unter Unix Systemen eh mehr C Programme allein durch die Geschichte gegeben hat (jedes Unix hat eben einen C Compiler und deswegen ist C da recht portabel) und das setzt sich natürlich weiter fort, da Code ja teilweise übernommen wird und die Entwickler einfach C nahmen, weil sie immer C nahmen.
Es gibt aber natürlich auch große C++ Projekte, die auch OpenSource sind. KDE, PovRay, Mozilla, OpenOffice.Org etc. auch wenn diese eben aus den oben genannten Gründen kein besonders schönes C++ benutzen (schau dir zB. mal die Mozilla portabilitäts Guidelines an)
Ich kann mich meinem Vorredner aber nur anschließen. Lern lieber C++ wenn du dich für die Zukunft wapnen willst, da du mit C++ auch schnell C lernst während es andersrum schwieriger ist, da du dich an ganz andere Paradigmen gewöhnen musst.
-
btw. liegen Geschwindigkeitsunterschiede nicht an C++ an sich, sondern an den bestehenden Implementierungen. Aber bei heutigen Rechnern ist das eh egal, da es sich in einem Bereich abspielt der irrelevant ist.
Wenn einem die paar ms so wichtig sind, dann soll er doch bitte seine Programme so wie in der vor OS Zeit schreiben, dann hat man auch keine Angst, dass einem der Scheduler die entscheidenen 10ms klaut, weil er den Prozess schlafen schickt
-
Hi,
danke für die Aufklärung!
Werde mich wohl auf C++ konzentrieren nachdem ich Java gut kann.
Habe übrigens vor (hab noch 1 Jahr Schule) nach der FH-Reife auf einer FH zu studieren wo ebenfalls C++ eingesetzt wird. Da kann es nicht schaden vorher anzufangen.*Ausserdem ist C++ cool*
Liebe Grüße
Real
-
*Ausserdem ist C++ cool*
yes!
-
Also ich würde auch auf jeden Fall c++ nehmen. Allerdings würde ich mir C auch mal hin und wieder angucken(mind. die Grundlagen), da in der Unix-Welt sehr viel nur in C zu finden ist(sei es Code oder auch Literatur).
C ist auch nun nicht gerade schwer, wenn Du c++ halbwegs beherrscht...
IMHO sollte ein guter Programmierer schon prozedural und objektorientiert programmieren können(Am besten auch noch imperativ ;)).
-
Hallo
nur auf c++ zu setzen ist nicht gut
reines c wird noch sehr haeufig verwendet
(Firmware)MfG
Klaus
-
@KlausB
jo, aber ich denke mal, dass es leichter ist für einen C++ Programmierer C zu programmieren, als umgekehrt. (Wobei ich mit C++ mehr meine als die Gemeinsamkeiten von C und C++)
Und gerade bei der Qualität der meisten Bücher/Tutorials im C++ Bereich lernen die meisten "C++-Programmierer" eh eher C programmieren
-
Hallo
stimme dir voll und ganz zu
wollte nur daraufhinweisen, das viele in c++ programmieren
aber es eigentlich in c-Stil tun
Es gibt auch noch sehr viele Compiler/Linker nur fuer c
sogenannte Embedded Systems (meist noch in c / 8 Bit)MfG
Klaus
-
Hi,
kann mir eigentlich nicht vorstellen, dass es so schwer ist C zu lernen, wenn man schon C++ kann, schon allein deswegen weil Objektorientierung flach fällt und es weniger Befehle gibt oder sehe ich das falsch?!Liebe Grüße
Real
-
schon allein deswegen weil Objektorientierung flach fällt und es weniger Befehle gibt oder sehe ich das falsch?!
Objektorientierung kann man auch in C machen (eben nur nicht so komfortabel :)).
Befehle gibt es weniger und auch die Standard Library hat einen deutlich kleineren Umfang.
Aber man kann sogar viele C++ Dinge in C (mehr oder weniger gut) emulieren, sogar Templates. Hab mal mit ShadeOfMine an einer STL Implementierung für C99 gearbeitet.
-
Aber man kann sogar viele C++ Dinge in C (mehr oder weniger gut) emulieren, sogar Templates. Hab mal mit ShadeOfMine an einer STL Implementierung für C99 gearbeitet.
--verbose bitte. Gibt's da auch nen Link?
-
wir hatten mal was auf sf, dass ist aber nicht mehr aktuell. ShadeOfMine hat wohl nochmal was neueres geschrieben dazu, vielleicht kann er das ja hier posten.
-
Moinsen ...
Mh ... wenn ich mir das mal so überlege...
Lern lieber erst nur C und steige dann auf C++ um. Wenn du C von anfang an lernst, hasst du ne gute Grundlage. Und: Du kannst dir deine eigene Meinung bilden, weil du mal beides Gemacht hast.Mfg, flyingCoder
-
Ich hab schon in ner C Newsgroup gesehen, wie C++ Programmierer bzw. OOP gefragt
haben wie man ein Problem prozedural löst, wenn du wirklich nur OOP gelernt hast,
dann bist du die prozedurale Denkweise nicht gewohnt und es fällt dir auch erstmal
verdammt schwer, wobei es natürlich einfacher ist prozedurale Programmierung zu
lernen als OOP
-
flyingCoder schrieb:
Wenn du C von anfang an lernst, hasst du ne gute Grundlage.
Nö, du tendierst eher dazu, dass du später sehr C mäßige C++ Programme schreibst. Lieber andersrum, weil ein C++ mäßiges C Programm ist IMHO deutlich besser als andersrum.