Warum programmiert ihr in C?
-
Hallo,
ich will anfangen in C zu programmieren. Mich würde einmal interessieren warum ihr noch in C programmiert? Alternativen gibt es ja heutzutage genug. Was gefällt euch an C?
-
malneugierig schrieb:
Mich würde einmal interessieren warum ihr noch in C programmiert?
Weil wir müssen.
-
Damit meine grauen Zellen ein wenig Training haben
-
- Zugriffe auf Daten sind durch planbare Cache-Lokalität sehr schnell.
(Wo ein C++ oder Java-Compiler sequentielle Daten im Speicher unterbringt? ->
unvorhersehbar!)- Mehr Kontrolle über die Performance durch manuelle Speicherverwaltung.
Man überlegt sich zuerst, ob man aufgrund ungenügender Analyse z.B. des benötigten Speichers 1.000.000 x pro Sekunde Speicher allokieren und wieder freigeben soll, oder ob man derartigen Performance-Killern, die ein <vector> in den Händen eines 'standardkonformen' C++ - Programmierers (ohne C Background)verursachen kann, nicht doch eher vorbeugen könnte ...- C Programme sind manchmal bis zu 36 x schneller als vergleichbarer, 'standardkonformer' Java/C++ Code (d.h. wenn man C++ so versteht: Zeiger verboten. Arrays verboten. memcpy verboten. #define-Expansions verboten. Alles, was ein C++ -Programm potentiell schneller machen könnte -> verboten. Überhaupt alles verboten, was nicht in die 'Regeln' irgendwelcher selbsternannter Quellcode-Ästheten passt. Wenn man sich in derart dogmatischer Weise die erheblichen Gestaltungsmöglichkeiten der eigenen Sprache so sehr einschränkt, dann wird man eben nur trägen Schnecken-Code produzieren (aber immerhin ist er dann
schön, nicht wahr? Der prinzipielle Trugschluss dieser Herrschaften besteht darin, dass effizienter Quellcode zugleich auch schön sein müsste ...)- Enorme Portablilität. Eine Hosted Environment für C gibt's auch auf exotischen Systemen.
- Systemnahe C-Schnittstellen sind für fast alle anderen Hochsprachen nutzbar.
Aber wie nutzt man z.B. mit Squirrel ein Java/'standardkonformes' C++ Interface ? -> Gar nicht.- Die Tatsache, dass im Laufe der Jahrzehnte mit C Unmengen an Anwendungssoftware entwickelt wurden, entlarvt die häufig anzutreffende Behauptung, C wäre für die Anwendungsentwicklung ungeeignet, als offensichtlichen Humbug - trivialer Weise und durch Anschauungsunterricht.
- Auch heute noch ist C immer dann den anderen HochSprachen vorzuziehen, wenn eine kommerzielle Anwendung ein möglichst breites Publikum erreichen soll (sowohl Leute mit Uralt-Rechnern gleichermaßen wie jene, die mit der neuesten Hochtechnologie ausgestattet sind. Die C++ - Programmierer betrachten die Leute mit den Uralt-Rechnern erst gar nicht als potentielle Abnehmer ihrer aufgeblähten Bloatware, für die mindestens 10 GB Speicher auf der GraKa und weitere 30 GB Hauptspeicher vorhanden sein müssen, damit sie uU überhaupt ausführbar sind. Und selbst dann kommen müssen oft noch 100.000 Bugfixes im Laufe der Zeit dazu kommen, damit das Ding, das man sich für Abermillionen Euros angeschafft hat, mal halbwegs das tut, was vereinbart war -> C++ macht's möglich, auch grob verbuggte Software zu verscheppern ...
Derartig inferiore Software-Qualität ist man von den C-Software-Schmieden bei weitem nicht gewöhnt. Dort arbeiten Leute, die was von ihrem Handwerk verstehen- Ich persönlich arbeite seit meiner Jugend (1989) mit C, damals galt es unter uns als 'Cool' und 'die Sprache, mit der die Profis arbeiten.'
Es hat sich zwar einiges seitdem geändert, aber auch heute noch lässt sich Anwendungssoftware, die in C entwickelt wurde, meist sehr einfach von C++ - Bloatware unterscheiden: Zweitere ist nämlich meistens verbuggt bis zum Anschlag, während C einfach nur ... funktioniert.mfg
-
*Popcorn rausholt* Lasst die Spiele beginnen!
-
C liegt genau in der Schnittmenge von klein, schnell und einfach; und da liegt es nunmal ziemlich alleine.
-
Wie hier schon beschrieben ist C eine einfach schlanke Sprache die maximale Performance ermöglicht. Kein C++ wird dort ran kommen wenn es so programmiert wird wie es immer gefordert wird. Laut Tiobe Index wird ca doppelt so viel in C gemacht wie in C++ und das nicht ohne Grund.
-
Hauptsächlich mache ich embedded- Zeugs im Sondersteuerungsbereich und da gibt es keine andere Sprache, die alle Kriterien so umfassend erfüllt:
- schneller, kompakter Code
- trotzdem für komplexere Probleme geeignet
- Quelltextkompatibilität auf C89Will damit sagen, daß mir im Vergleich von C und dem Disassembling einerseits gut klar ist, wie meine C- Source in Maschinenkommandos umgesetzt wurde und ich selten Optimierungsmöglichkeiten sehe. Beim Output von C++ ist mir nicht immer klar, was die Maschine da tut.
Da es über die Pointerarithmetik leicht ist, mit Listen, Streams usw. zu hantieren, kann man auch komplexe Bezüge maschinennah abbilden.
Für mich ganz wichtig: Solange ich bei C89 bleibe, habe ich eine Riesenbandbreite von Zielplattformen. Auch umfangreiche Projekte kann ich "mal so" von einem Prozessor zum anderen portieren, da muß ich nicht viel mehr tun, als die Hardwarezugriffe und evtl. ein paar pragmas anpassen und mit includeguards/macros abzusichern. Das geht schon mit C++ nicht mehr so leicht, alleine schon wg. Compilermangels.
-
Weil ich beruflich (leider!) muss.
Im Vergleich zu C++ ist C ein Graus.
-
@ Didaktiker5
Dem kann ich nur zustimmen.
SWEntwickler schrieb:
Weil ich beruflich (leider!) muss.
Im Vergleich zu C++ ist C ein Graus.Nur weil du bei C dein Hirn anstrengen musst !? Musst eben noch selber Hand anlegen, dies wird dir leider in C nicht abgenommen.
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
-
meint ihr das eigentlich alles ernst was ihr da schreibt oder wollt ihr nur die high-level c++ coder auf einen flamewar einladen?
-
ACCA schrieb:
@ Didaktiker5
Dem kann ich nur zustimmen.
SWEntwickler schrieb:
Weil ich beruflich (leider!) muss.
Im Vergleich zu C++ ist C ein Graus.Nur weil du bei C dein Hirn anstrengen musst !? Musst eben noch selber Hand anlegen, dies wird dir leider in C nicht abgenommen.
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
Solange (alle) OS Schnittstellen in C gehalten sind werde ich (nie) was anders für die Windows-Software Entwicklung brauchen. Ausgenommen für Web zeugs...und dort wo man auf Assembler nicht verzichten sollte.
-
Warum ich mit C programmiere?
C++ ist ein Grund warum die Systeme eher langsamer werden und das mit schnellerer Hardware. Vergleicht nur mal KDE mit GNOME, entweder können die Leute kein C++ programmieren oder C++ frisst von sich aus mehr Resourcen, eins vom beiden muss es sein. Da ändern auch Mikrobenchmarks nichts an meiner Meinung.
C++ ist keine "schöne" Sprache, das tut sich kaum jemand heute noch freiwillig an. OOP ist ähnlich wie die Cloud viel zu viel dem Programmierer aufgedrückt worden und kaum jemand braucht es wirklich.
Für jeden Pups eine Klasse basteln mit Getter und Setter, NEIN DANKE!
-
HolgerMainz schrieb:
C++ ist keine "schöne" Sprache, das tut sich kaum jemand heute noch freiwillig an. OOP ist ähnlich wie die Cloud viel zu viel dem Programmierer aufgedrückt worden und kaum jemand braucht es wirklich.
Für jeden Pups eine Klasse basteln mit Getter und Setter, NEIN DANKE!
Dies sehe ich genau so...
-
HolgerMainz schrieb:
mit Getter und Setter
-
malneugierig schrieb:
Mich würde einmal interessieren warum ihr noch in C programmiert?
Weil es sich manchmal nicht vermeiden läßt.
-
ACCA schrieb:
@ Didaktiker5
Dem kann ich nur zustimmen.
SWEntwickler schrieb:
Weil ich beruflich (leider!) muss.
Im Vergleich zu C++ ist C ein Graus.Nur weil du bei C dein Hirn anstrengen musst !? Musst eben noch selber Hand anlegen, dies wird dir leider in C nicht abgenommen.
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
C ist deutlich einfacher als C++. Nur leider bietet es absolut nichts (alleine das fehlen eines STL Pendants ist ein Alptraum) und wenn man zügig Software entwickeln will, ist C einfach ein Graus.
Wenn man natürlich gerne ständig das Rad neu entwickelt, in einem Elfenbeinturm wohnt und nur kleine Frickelsoftware schreiben muss, mag C toll sein.ACCA schrieb:
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
Das glaube ich dir sofort, dass du dir nichts anderes vorstellen kannst. Dein Horizont scheint generell eher beschränkt zu sein.
-
PiMalDaumen schrieb:
ACCA schrieb:
@ Didaktiker5Dem kann ich nur zustimmen.
SWEntwickler schrieb:
Weil ich beruflich (leider!) muss.
Im Vergleich zu C++ ist C ein Graus.Nur weil du bei C dein Hirn anstrengen musst !? Musst eben noch selber Hand anlegen, dies wird dir leider in C nicht abgenommen.
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
C ist deutlich einfacher als C++. Nur leider bietet es absolut nichts (alleine das fehlen eines STL Pendants ist ein Alptraum) und wenn man zügig Software entwickeln will, ist C einfach ein Graus.
Wenn man natürlich gerne ständig das Rad neu entwickelt, in einem Elfenbeinturm wohnt und nur kleine Frickelsoftware schreiben muss, mag C toll sein.ACCA schrieb:
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !Das glaube ich dir sofort, dass du dir nichts anderes vorstellen kannst. Dein Horizont scheint generell eher beschränkt zu sein.
Die faulheit mancher Menschen ist einfach Grenzenlos, und was unter all dem abgeht haben die wenigsten C++ Entwickler verstanden !
Einfach mal das Maul halten.
-
ACCA schrieb:
Die faulheit mancher Menschen ist einfach Grenzenlos, und was unter all dem abgeht haben die wenigsten C++ Entwickler verstanden !
Einfach mal das Maul halten.Ja, und? Die meisten C-Programmierer schreiben auch fehlerhaft und häßlich, sind strohdumm und eingebildet. Das ist doch kein Argument gegen die Sprache.
Ich weiß, was bei C++ unten vorgeht und benutze C++ gern, aber ohne Code-Bloat und Langsamkeit, die mag ich nämlich nicht so. Daß Du jetzt auf einen zeigen kannst, der C++ nicht kann, was ändert das denn für mich? Nichts.Schlimmer noch, was ändert es für Dich? Nichts. Ob Du C++ benutzen kannst, hängt doch nicht davon ab, ob Du auf jemanden zeigen kannst, der C++ nicht kann. Und würdest Du C++ verstehen, wärst Du anderer Meinung. Allerdings kann es davon abhängen, ob Du überhaupt bereit bist, Dir die Sache ein wenig näher anzuschauen (und nicht mit einem Buch von J.W., da lernst Du nur, wie man sich C++ weh tut). Das bist Du nicht. OK, zur Kenntnis genommen.
-
piMalDaumen schrieb:
ACCA schrieb:
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
Das glaube ich dir sofort, dass du dir nichts anderes vorstellen kannst. Dein Horizont scheint generell eher beschränkt zu sein.
Also ich halte gerade für die Winapi RAII und Exceptions für einen Segen.
-
piMalDaumen schrieb:
C ist deutlich einfacher als C++. Nur leider bietet es absolut nichts (alleine das fehlen eines STL Pendants ist ein Alptraum) und wenn man zügig Software entwickeln will, ist C einfach ein Graus.
Wenn man natürlich gerne ständig das Rad neu entwickelt, in einem Elfenbeinturm wohnt und nur kleine Frickelsoftware schreiben muss, mag C toll sein.ACCA schrieb:
Also für Windows Software brauche ich C und die Winapi, und ich kann mir nichts anderes vorstellen !
Das glaube ich dir sofort, dass du dir nichts anderes vorstellen kannst. Dein Horizont scheint generell eher beschränkt zu sein.
Ich habe mich mit C++ nur am Rande beschäftigt aus Gründen, die ich schon erläutert habe. In Sachen OOP war mir der Zugang über Java einfacher und das ist schon alles. Libs in C finde ich für fast alles als Source zuhauf, muß nicht jedes Radl neu erfinden - so what? Ich brauche C++ nicht zwingend und das liegt wohl auch an meinem beschränkten Horizont. Aber warum soll jemand alle Features einer eierlegenden Wollmilchsau erlernen, wenn er nur ein Ei haben mag?