C oder C++ - Lohnt es sich noch C zu lernen?
-
wenn du das so pingelig siehst, wird nichtmal Deplhi (nehmen wie delphi mal als sprache an) aussterben, denn delphi wird noch in schulen gelehrt und es spricht nichts dagegen, das in der nächsten generation nicht auch noch zu tun.
-
volkard schrieb:
wenn du das so pingelig siehst, wird nichtmal Deplhi (nehmen wie delphi mal als sprache an) aussterben, denn delphi wird noch in schulen gelehrt und es spricht nichts dagegen, das in der nächsten generation nicht auch noch zu tun.
Der Unterschied dazu ist aber, dass man Lehrpläne an Schulen schnell und kostenlos ändern kann, ich kenn das nur zu gut.

-
Hallo
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.Grüße
-
Hobbyprogrammierer schrieb:
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.c++ ist für systemprogrammierung besser geeignet.
-
volkard schrieb:
Hobbyprogrammierer schrieb:
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.c++ ist für systemprogrammierung besser geeignet.
LOLLLLL!!!!!!!
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)C rulet!
-
llllllllllol schrieb:
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)
hat historische gründe.
-
volkard schrieb:
llllllllllol schrieb:
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)
hat historische gründe.
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> C
-
lllllllllllllol schrieb:
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> Cdu machst gerade den fehler, systemprogrammierung als das zu definieren, was man in c macht.
-
volkard schrieb:
lllllllllllllol schrieb:
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> Cdu machst gerade den fehler, systemprogrammierung als das zu definieren, was man in c macht.
Du wirst nicht leugnen können, dass sich C++ zu einer höheren Sprache entwickelt hat als C. OOP ist ein provileg einer höheren sprache, wogegen C eher lowlevelmäßig ist. Und die STL tut den rest: Highlevel und bequem!
Ich definiere Systemnprogrammierung mit lowlevel.
Da ich C++ zu highlevel halte, würde ich C für systemprogrammierung vorziehen.
-
llllllllllllllllol schrieb:
Du wirst nicht leugnen können, dass sich C++ zu einer höheren Sprache entwickelt hat als C. OOP ist ein provileg einer höheren sprache, wogegen C eher lowlevelmäßig ist. Und die STL tut den rest: Highlevel und bequem!
du wirst nicht leugnen können, daß man mit c++ grundlegende datenstrukturen der systemprogrammierung sehr fein in klassen packen kann und dabei null zusatzkosten zur laufzeit hat. und das ist was gutes, das programmieren fällt leichter, geht schneller, ist fehlerärmer. als systemprogrammierer wird man natürlich nicht mit std::string oder RTTI um sich hauen.
-
volkard schrieb:
llllllllllllllllol schrieb:
Du wirst nicht leugnen können, dass sich C++ zu einer höheren Sprache entwickelt hat als C. OOP ist ein provileg einer höheren sprache, wogegen C eher lowlevelmäßig ist. Und die STL tut den rest: Highlevel und bequem!
du wirst nicht leugnen können, daß man mit c++ grundlegende datenstrukturen der systemprogrammierung sehr fein in klassen packen kann und dabei null zusatzkosten zur laufzeit hat. und das ist was gutes, das programmieren fällt leichter, geht schneller, ist fehlerärmer. als systemprogrammierer wird man natürlich nicht mit std::string oder RTTI um sich hauen.
Okay, aber wie gesagt: STL ist ja ein fester bestandteil von C++.
Dauernd wird geprädigt, man solle die finger von char* lassen und stattdessen string nehmen.Möglich ist es natürlich in C++ Sytemnah zu programmieren. Fragt sich nur wie es in der Praxis aussieht.
Meine Skepsis kommt wohl daher, dass ich bisher nur in C systemnah programmiert habe. Alles andere wird bei mir in C++ geschrieben.
-
llllllllllllllllllllllol schrieb:
Dauernd wird geprädigt, man solle die finger von char* lassen und stattdessen string nehmen.
jo, schlimm.
Möglich ist es natürlich in C++ Sytemnah zu programmieren. Fragt sich nur wie es in der Praxis aussieht.
es wird zum beispiel bei embedded systems nicht gemacht, weil die entscheidungsträger die gleichen vorurteile haben wie du.
-
volkard schrieb:
llllllllllllllllllllllol schrieb:
Dauernd wird geprädigt, man solle die finger von char* lassen und stattdessen string nehmen.
jo, schlimm.
Möglich ist es natürlich in C++ Sytemnah zu programmieren. Fragt sich nur wie es in der Praxis aussieht.
es wird zum beispiel bei embedded systems nicht gemacht, weil die entscheidungsträger die gleichen vorurteile haben wie du.
Das sind keine Vorurteile.
Normalerweise nutz ich auch eher C++ da es bequemer und teils leistungsstärker ist.
Aber icg finde: C passt sich dem problemgebiet der systemprogrammierung eher besser an als C++ welches sich für highlevel prjekte eignet.
-
lllllllllllllol schrieb:
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> CSchau dir mal den Linuxkernel genau an, der is groesstenteils OO, aber in C, weil Linus kein C++ mag

-
farben noch netzwerk, sound, maus
@volkard
Kann es sein, dass du in deiner Programmierer-Laufbahn nicht über den PC-Tellerrand geblickt hast ?
-
Marcin schrieb:
@volkard
Kann es sein, dass du in deiner Programmierer-Laufbahn nicht den PC-Tellerrand geblickt hast ?Dieser Hinweis wurde vom C++ Forumbot eingefügt.
Dieses Posting wurde automatisch erzeugt.
-
lllllllllllol schrieb:
volkard schrieb:
llllllllllllllllllllllol schrieb:
Dauernd wird geprädigt, man solle die finger von char* lassen und stattdessen string nehmen.
jo, schlimm.
Möglich ist es natürlich in C++ Sytemnah zu programmieren. Fragt sich nur wie es in der Praxis aussieht.
es wird zum beispiel bei embedded systems nicht gemacht, weil die entscheidungsträger die gleichen vorurteile haben wie du.
Das sind keine Vorurteile.
Normalerweise nutz ich auch eher C++ da es bequemer und teils leistungsstärker ist.
Aber icg finde: C passt sich dem problemgebiet der systemprogrammierung eher besser an als C++ welches sich für highlevel prjekte eignet.
OOP bezeichnest du als eine höhere Ebene an? OOP gabs doch schon immer.
Auch in C kapselt man die Funktionen zusammen, die ein bestimmes Problem bearbeiten. Zum Beispiel in druckertreiber.c hast du auch nur Funktionen die sich mit dem Drucker beschäftigen.
In C++ hast du dann die Klasse Druckertreiber, die eben nicht nur die Funktionen zusammen hällt, sondern auch die Daten mit denen intern gearbeitet wird. Ausserdem werden die Funktionen verborgen, die nur intern benutzt werden.Nachteile C:
- man kann die Sichtbarkeit der Funktionen nicht beeinflussen
- man hat globale VariablenC++:
Alles was C bietet plus die Vorteile:
- man kann interne Funktionen verbergen
- man kann Daten verbergen
- man hat eine eindeutige SchnittstelleAnsosnten kann man doch C++ wie C benutzen. Niemand zwingt einen Vererbungshirarchien und dynamische Objekte zu benutzen.
Ich frag mich grade wieso C überhaupt noch eingesetzt wird. Wohl wirklich nur weil es noch sehr viel C-Code gibt und vielleicht weil ein C-Compiler kleiner ist als ein C++-Compiler.
Für Highlevel-Projekte eignen sich eher Sprachen wie C# oder Java.
-
DEvent schrieb:
lllllllllllol schrieb:
volkard schrieb:
llllllllllllllllllllllol schrieb:
Dauernd wird geprädigt, man solle die finger von char* lassen und stattdessen string nehmen.
jo, schlimm.
Möglich ist es natürlich in C++ Sytemnah zu programmieren. Fragt sich nur wie es in der Praxis aussieht.
es wird zum beispiel bei embedded systems nicht gemacht, weil die entscheidungsträger die gleichen vorurteile haben wie du.
Das sind keine Vorurteile.
Normalerweise nutz ich auch eher C++ da es bequemer und teils leistungsstärker ist.
Aber icg finde: C passt sich dem problemgebiet der systemprogrammierung eher besser an als C++ welches sich für highlevel prjekte eignet.
OOP bezeichnest du als eine höhere Ebene an? OOP gabs doch schon immer.
Auch in C kapselt man die Funktionen zusammen, die ein bestimmes Problem bearbeiten. Zum Beispiel in druckertreiber.c hast du auch nur Funktionen die sich mit dem Drucker beschäftigen.
In C++ hast du dann die Klasse Druckertreiber, die eben nicht nur die Funktionen zusammen hällt, sondern auch die Daten mit denen intern gearbeitet wird. Ausserdem werden die Funktionen verborgen, die nur intern benutzt werden.Nachteile C:
- man kann die Sichtbarkeit der Funktionen nicht beeinflussen
- man hat globale VariablenC++:
Alles was C bietet plus die Vorteile:
- man kann interne Funktionen verbergen
- man kann Daten verbergen
- man hat eine eindeutige SchnittstelleAnsosnten kann man doch C++ wie C benutzen. Niemand zwingt einen Vererbungshirarchien und dynamische Objekte zu benutzen.
Ich frag mich grade wieso C überhaupt noch eingesetzt wird. Wohl wirklich nur weil es noch sehr viel C-Code gibt und vielleicht weil ein C-Compiler kleiner ist als ein C++-Compiler.
Für Highlevel-Projekte eignen sich eher Sprachen wie C# oder Java.
Warum C verwendet wird? Weil die wichtigsten Betriebsysteme zum großen Teil (bsp : Windows) oder ganz (bsp: Linux) geschrieben sind. Dann käme noch das Thema Microcontroller, bei dem außer Assembler noch C in Frage kommt. Es gibt nunmal für so ziemlich alles einen C compiler. C hat sich halt etabliert.
Und ja: Ich empfinde C++ als high level(also höher als C).
Gründe: Wenn ich zB std:string statt char* nutze, dann kommt dieser Highlevelgedanke schon gut rüber. Und std:string is ja ein fester Bestandteil der Sprache C++. Außerdem ist (meiner Meinung nach) OOP eine höhere Abstraktionsebene. Jaja, mir is klar, dass man auch in C objekt orientiert programmieren kann, nur hat man in C keine Klassen, sondern vllt einen objektorientierten Hintergedanken.
-
llllllllllllol schrieb:
Und ja: Ich empfinde C++ als high level(also höher als C).
Gründe: Wenn ich zB std:string statt char* nutze, dann kommt dieser Highlevelgedanke schon gut rüber. Und std:string is ja ein fester Bestandteil der Sprache C++. Außerdem ist (meiner Meinung nach) OOP eine höhere Abstraktionsebene. Jaja, mir is klar, dass man auch in C objekt orientiert programmieren kann, nur hat man in C keine Klassen, sondern vllt einen objektorientierten Hintergedanken.Alles richtig.
An so manch anderen hier: man kanns auch übertreiben mit dem Paradigmen-Klugscheissen

-
man kann auch sagen: weil es jemanden gibt, der in c ein programm geschrieben hat, das als root ausgeführt es erlaubte, daß fremde leute seinen ganzen server kontrollierten, ist c eine unsichere und gefährliche sprache, eigentlich nur für selbstmörder und masochisten geeignet.
wichtiger: c-programmierer sind durchschnittlich älter als c++-programmierer, also macht c-programmieren einen alt.
aber man sagt es eher selten, weil es unfug ist. hat aber wesentlich mehr berechtigung als diese argumentattion "weil man std::string benutzen kann, taugsts für low level nicht".