warum gerade C ?
-
Da C++ ja von C abgeleitet ist treffen ja bekanntlich all deine Vorteile auch auf C++ zu. Einziger Vorteil ist dass es vielleicht mehr C Compiler gibt da sie leicher zu bauen und kleiner(?)sind aber heutzutage gibts ja auch massenhaft gute C++ Compiler und Speicherplatz ist auch kein Thema mehr. Ein großes Programm heutzutage prozedural programmieren ist totaler humbug. Aber wer es macht mir solls egal sein.
-
hackbert schrieb:
Warum ich C mag?
1. C ist relativ maschinennahe.
2. In C lassen sich lustige Pointerkonstruktionen bauen (geht z.B. in Java net)
3. C ist relativ performant
4. C ist einfach zu erlernen
5. Es gibt bei den meisten Compilern auch die Möglichkeit Assembler-Direktiven mit in den C-Code einzubauen.
6. C-Compiler gibt es für so gut wie jede Hard- und Softwareplattform
7. C bietet mir einen Präprozessor, der mir in so manchen anderen Sprachen fehlt
.
.
.Ok. Ich bin voreingenommen. Der Hauptgrund ist wohl: Weil ich C mag
1.) Ja
2.) Toller Grund
3.) Ja (Gilt aber genauso, wenn richtig gemacht, für C++)
4.) Einfach verglichen mit z.B. Java.Wohl nicht so richtig.
5.) Ja (Geht mit C++ genauso).
6.) Von embedded mal abgesehen gibt es C++-Compiler wohl auch recht häufig.
7.) Kann man in C++ auch nutzen. Sollte man aber mit Bedacht verwenden. Wobei
der Nachteil der Gleiche ist wie auch in C.
-
Ausserdem hat C-Code eine Ästhetik, die keine andere Programmiersprache
(außer C++) hat - optisch ist komprimierter C-Code
... if((*a->b||!(op--))>=c++[d]) ...
irgendetwas zwischen Ordnung und Chaos und an Knappheit bei gleichzeitiger
Lesbarkeit kaum zu überbieten.Knapp ist Forth-Code auch (sogar knapper), aber eben erheblich schwerer lesbar,
da man sich bei Forth-Code ständig den Stackinhalt vorstellen muß.
Andere Sprachen wie Pascal sind zwar lesbarer, aber mit viel längeren
Schlüsselwörtern begin...end und nicht so knapp wie C.Vermutlich hat diese Ästhetik wesentlich zur Beliebtheit von C/C++ beigetragen -
das ist doch einfach abwechslungsreicher.Alle anderen Gründe (Maschinennähe, Portabilität, Effizienz etc..) wurden ja
schon genannt.
-
C ist keine general-purpose programmiersprache, sondern auf die Manipulation der Register und des Speichers auf von-Neumann Rechnern spezialisiert. Genauso wie wohl die meisten anderen bekannten Hochsprachen.
C ist wirklich sehr einfach gehalten und daher wohl so beliebt, weil man mit wenig Grundstoff relativ viel erreichen kann.auf bald
oenone
-
C ist keine general-purpose programmiersprache, sondern auf die Manipulation der Register und des Speichers auf von-Neumann Rechnern spezialisiert.<<
Nicht-von-Neumann-Rechner spielen ja heute auch eine große Rolle bei der
Anwendungsentwicklung.
C ist nicht *eine* general-Purpose-Sprache, es ist *die* general purpose-Sprache.Noch was: C ist auch deshalb so beliebt, weil es eine ProgrammierERsprache ist,
die von Programmierern für Programmierer entwickelt wurde, um damit zu
programmieren.Andere Sprachen wie BASIC, COBOL oder FORTRAN sind dafür gedacht,
Nicht-Programmierern das Programmieren zu ermöglichen oder sind eher aus
akademischen oder edukativen Gründen (PASCAL) heraus entstanden.
-
Cacheline schrieb:
Ausserdem hat C-Code eine Ästhetik, die keine andere Programmiersprache
(außer C++) hat...doch, apl, aber das benutzt heute keiner mehr
übrigens, ich finde c ist gar nicht so toll lesbar. das meinen wir nur weil wir uns daran gewöhnt haben. die meisten anderen sprachen mit nicht-c ähnlicher syntax sind lesbarer.
-
die meisten anderen sprachen mit nicht-c ähnlicher syntax sind lesbarer.<<
Sicherlich - ein COBOL- oder MODULA-Programm ist auf den ersten BLick
leichter lesbar als ein C-Programm - aber eben auch länger.Gerade die in Programmen besonders häufigen Elemente wie Block, Indirektion, Inkrement und
Nulltest etc. sind in C mit {...},*,++,! etc. äußerst kurz formuliert, was zu
kurzem Programmtext führt.Wahrscheinlich war es ein Glück, daß die Rechner, auf denen C 1972 entwickelt
wurde, nur 4K bzw. 28K RAM hatten - das motivierte natürlich dazu, eine Sprache
zu definieren, die keine überflüssig langen Konstrukte wie LET oder begin...end
enthält.
-
Cacheline schrieb:
Wahrscheinlich war es ein Glück, daß die Rechner, auf denen C 1972 entwickelt
wurde, nur 4K bzw. 28K RAM hatten - das motivierte natürlich dazu, eine Sprache
zu definieren, die keine überflüssig langen Konstrukte wie LET oder begin...end
enthält.das glaube ich nicht. so'n compiler wandelt die schlüsselwörter in 1-byte tokens um (das machten selbst die basic-interpreter antiker homecomputer so), dabei ist es egal, wie lang die keywords sind. ich glaub' eher dass die erfinder von c ziemlicher unix-häcker waren, die einfach wenig tippen wollten und c für ihresgleichen machten, d.h. leute mit einigermassen hohem abstraktionsvermögen.
aber c ist ja sowas wie eine portable assemblersprache. deshalb ist es im auch lowlevel bereich so beliebt
-
dali schrieb:
Da C++ ja von C abgeleitet ist treffen ja bekanntlich all deine Vorteile auch auf C++ zu. Einziger Vorteil ist dass es vielleicht mehr C Compiler gibt da sie leicher zu bauen und kleiner(?)sind aber heutzutage gibts ja auch massenhaft gute C++ Compiler und Speicherplatz ist auch kein Thema mehr. Ein großes Programm heutzutage prozedural programmieren ist totaler humbug. Aber wer es macht mir solls egal sein.
Versteht das bitte nicht falsch; Ich mag C++ genauso wie C und alle Vorteile, die ich im letzten Posting aufgezählt habe treffen auch auf C++ zu. Aber der Thread ging nunmal um C
-
Also ich programmiere in C, weil ich damals als ich angefangen habe nur C++ kannte, das kannte jeder vom Namen und da hab ich mir ein Buch gekauft wo in Riesenschrift C++ drauf stand aber eigentlich war es ein C Buch wo höchstens mal printf durch cout ersetzt war. Und deshalb programmiere ich in C jetzt ein paar Jahre.
-
dali schrieb:
und Speicherplatz ist auch kein Thema mehr. Ein großes Programm heutzutage prozedural programmieren ist totaler humbug. Aber wer es macht mir solls egal sein.
Du denkst nur in deiner Erlebniswelt. 75% der Software wird in der Industrie nicht für PCs implementiert sondern für Mikrocontroller. Da stimmt deine Aussage einfach nicht.
-
Tsss ich denke da wird der Hauptbewegungsgrund wenn es so sein sollte der sein dass die Leute die da arbeiten halt noch alteingesessene C Hardcorecoder sind :p
-
Herrje, man hat die glib genannt, sieh dir das Ding doch einfach mal an. Das _ist_ objektorientiert und das ganz ohne C++.
-
NochNRealist schrieb:
dali schrieb:
und Speicherplatz ist auch kein Thema mehr. Ein großes Programm heutzutage prozedural programmieren ist totaler humbug. Aber wer es macht mir solls egal sein.
Du denkst nur in deiner Erlebniswelt. 75% der Software wird in der Industrie nicht für PCs implementiert sondern für Mikrocontroller. Da stimmt deine Aussage einfach nicht.
dali schrieb:
Tsss ich denke da wird der Hauptbewegungsgrund wenn es so sein sollte der sein dass die Leute die da arbeiten halt noch alteingesessene C Hardcorecoder sind :p
Quark! C++ ist viel komplexer als C. Das wäre doch Verschwendung die Hardware nach der Sprache und nicht nach dem Zweck zu designen.
-
hackbert schrieb:
Quark! C++ ist viel komplexer als C. Das wäre doch Verschwendung die Hardware nach der Sprache und nicht nach dem Zweck zu designen.
HW kann sein wie sie will Compiler schreib ja nicht ich und die HW hat ja garnichts mit der Sprache selbst zu tun
Hier noch ein paar Kommentare von Stroustrup:I never saw a project for which C was better than C++ for any reason but the lack of a good C++ compiler.
I have never seen a program that could be expressed better in C than in C++ (and I don't think such a program could exist - every construct in C has an obvious C++ equivalent). However, there still exist a few environments where the support for C++ is so weak that there is an advantage to using C instead.
Why is the code generated for the "Hello world" program ten times larger for C++ than for C?
It isn't on my machine, and it shouldn't be on yours. I have even seen the C++ version of the "hello world" program smaller than the C version. When I recently (2004) tested using gcc -o2 on a Unix, the two versions (iostreams and stdio) yielded identical sizes. There is no language reason why the one version should be larger than the other. It is all an issue on how the implementor organized the libraries. If one version is significantly larger than the other, report the problem to the implementor of the larger.
-
ich weiß es:
C ist eine schlechte Programmiersprache.
Und schlechte Programmierer arbeiten auch gerne mit schlechten Programmiersprachen.
Und da es so viele schlechte Programmierer gibt...
-
dali schrieb:
Hier noch ein paar Kommentare von Stroustrup:
ach, wen wundert's dass er nur gutes über c++ schreibt. ist ja auch seine erfindung
er könnte ja mal ein c-programm nehmen und das für c++ umstricken mit allen schikanen wie vererbung, sorglose verwendung von new und delete, schön immer stl-objekte nehmen wo man nur kann usw, wie's c++ coder nunmal so machen. das wird 'ne ganze ecke fetter...
-
dali schrieb:
Tsss ich denke da wird der Hauptbewegungsgrund wenn es so sein sollte der sein dass die Leute die da arbeiten halt noch alteingesessene C Hardcorecoder sind :p
Na du musst es ja wissen
dali schrieb:
HW kann sein wie sie will Compiler schreib ja nicht ich und die HW hat ja garnichts mit der Sprache selbst zu tun
Hier noch ein paar Kommentare von Stroustrup:Du hasts nicht gerafft
C++ hat viel zu viel Overhead für Sachen die schnell sein müssen auf uC.
-
Der Overhead ist besteht aber nur in der Dateigröße.
-
@net: Die STL ist sicher ne nette Sache und halt designt damit es effizient im assymptotischen Sinne ist also zb dass die Elemente halt in aufsteigender Form sortiert werden damit man halt binäre Suche durchführen kann, logarithmisches einfügen oder löschen etc. Aber eben man sollte halt dann schon annehmen können dass nem "guten" Programmierer klar ist dass sie für Echtzeitanwendungen manchmal Performanzeschwierigkeiten wegen dem Overhead in Zeit und Speicher hat.
In C kannst genauso mit malloc Speicherlöcher schießen
Ein Programmierer sollte halt wissen was er macht@Dingo: Ne ich hab noch nie nen Controller geschrieben und du?
Oh mann klar kannst auch dein ganzen Programm in Assembler schreiben mir solls wirklich egal.