Warum wird C mehr benutzt als C++?
-
;fricky schrieb:
pointercrash() schrieb:
Lahmen Käse kannst Du aber in C wie in C++ produzieren.
ja, aber in C musste dich anstrengen, irgendwas unnötig kompliziert und lahm zu machen. in C++ geht sowas wie von selbst.
Betrifft nur Anfänger. Also irrelevant.
-
;fricky schrieb:
dort wo C eingesetzt wird, sind rechenpower und speicher oft mangelware. ein skriptsprachen-interpreter wäre in vielen fällen nur ein klotz am bein.
Richtig.
Wer an C bzw. C++ denkt, darf sein Blickfeld nicht auf Windows- und Linux- Rechner (mit leistungsfähigen Rechnern) beschränkt sehen.Gerade in der embedded Welt ist "C" DIE am meisten verbreitete Sprache, insbesondere bei 4-, 8- und 16-bit µC (Mikro-Controllern).
In jeder Waschmaschine, in jedem Elektronik-Firlefanz im Auto steckt so eines oder mehrere µC drin ... mit oftmals nur einige 100 Bytes (!) RAM...
Martin
-
Mmacher schrieb:
mit oftmals nur einige 100 Bytes (!) RAM...
Das ist ja eh schon einiges... ein Attiny13 hat 64Byte Ram und 1024Byte Programmspeicher.
-
volkard schrieb:
;fricky schrieb:
pointercrash() schrieb:
Lahmen Käse kannst Du aber in C wie in C++ produzieren.
ja, aber in C musste dich anstrengen, irgendwas unnötig kompliziert und lahm zu machen. in C++ geht sowas wie von selbst.
Betrifft nur Anfänger. Also irrelevant.
kommt drauf an, ab welchem level sich ein c++-user als fortgeschrittener bezeichnen darf. viele glauben das vielleicht von sich selbst, weil sie mit stl und boost jonglieren können und den standard auswendig gelernt haben. aber wahrscheinlich ist gerade das irrelevant.
-
volkard schrieb:
Betrifft nur Anfänger. Also irrelevant.
Unsinn. Ich hatte mal vor über 10 Jahren C- Code hergegeben, der ging an ein Softwarehaus und ich habe selber parallel, zeitweilig in Assembler, FORTH, zuletzt in C dran weitergewurschtelt, die "Profis" durchgängig in C++. Daraus ist ein 900 kB- Monster geworden und wird jetzt abgeschafft.
Meine Version kommt mit 80 kB aus, hat etliche Features mehr und rennt am Win-PC etwa 10mal so schnell. Argumente genug, der Endkunde lizensiert das als DLL neu.Ich kann nicht zaubern, bin kein selbsternannter Hackergott, sondern habe mich nur um ein spezielles Problem gekümmert und es in C gelöst.
Auf der C++ Seite waren nacheinander drei Jungs dran, alle studiert, abgeschlossen und mit mindestens drei Jahren praktischer Erfahrung.
Das waren keine Anfänger, sondern schlimmstenfalls Verblendete.Warum also soll es irrelevant sein, wenn ich als C- Gelegenheitsprogrammierer was objektiv Besseres hinkriege als C++- Vollzeitprofis? Die sind nicht doof, die denken nur zu kompliziert.
-
pointercrash() schrieb:
Auf der C++ Seite waren nacheinander drei Jungs dran, alle studiert, abgeschlossen und mit mindestens drei Jahren praktischer Erfahrung.
Können trotzdem Anfänger sein. Traurig aber wahr, sowas seh ich jeden Tag. Manche hören wohl nach dem Studium auf, sich weiterzuentwickeln.
Allerdings widerspricht das Volkards These. Dinge, die nur Anfänger betreffen, sind trotzdem relevant.
-
Kein Bange, die hätten das auch in C vergeigt.
-
volkard schrieb:
Kein Bange, die hätten das auch in C vergeigt.
das kann man nicht verallgemeinern. pc()'s erfahrung kann ich insofern bestätigen, als dass ich auch einige vollkommen vergurkte C++ projekte gesehen habe, aber noch nie C-programme, die schon im kern dermaßen kaputt waren, dass es kaum rettung gab. konkret: zwei hatten speicherhunger und kopierorgien beliebter c++-konstrukte unterschätzt (embedded system), ein anderer hat mit kreuz-und-quer mehrfachvererbung im generalisierungswahn ein unwartbares chaos geschaffen. wenn du sagst, dass das alles c++anfänger waren, dann hast du vieleicht recht, aber wie oft muss einer mit c++ auf die nase fliegen, um nicht mehr als anfänger zu gelten?
-
Hallo,
C kannst du meines Wissens komplett vergessen.
-
;fricky schrieb:
volkard schrieb:
Kein Bange, die hätten das auch in C vergeigt.
das kann man nicht verallgemeinern. pc()'s erfahrung kann ich insofern bestätigen, als dass ich auch einige vollkommen vergurkte C++ projekte gesehen habe, aber noch nie C-programme, die schon im kern dermaßen kaputt waren, dass es kaum rettung gab. konkret: zwei hatten speicherhunger und kopierorgien beliebter c++-konstrukte unterschätzt (embedded system), ein anderer hat mit kreuz-und-quer mehrfachvererbung im generalisierungswahn ein unwartbares chaos geschaffen. wenn du sagst, dass das alles c++anfänger waren, dann hast du vieleicht recht, aber wie oft muss einer mit c++ auf die nase fliegen, um nicht mehr als anfänger zu gelten?
Er kann tausendmal auf die Nase fliegen und nicht "Effektiv C++ programmieren" oder ein anderes gutes C++-Buch lesen und hundert Jahre lang C++-Anfänger bleiben.
Das scheint mir gerade bei den embedded-Programmierern auch sehr üblich zu sein, daß man sich für den C-Gott hält, und andere Sprachen kraft Göttlichkeit zu beherrschen wähnt. Dir nehme ich aber nichmal mehr ab, daß Du gut in C bist.Und wenn der Bauer nicht schwimmen kann, ist die Badehose dran schuld.
-
volkard schrieb:
Er kann tausendmal auf die Nase fliegen und nicht "Effektiv C++ programmieren" oder ein anderes gutes C++-Buch lesen und hundert Jahre lang C++-Anfänger bleiben.
ja, ich befürchte auch, dass es ohne viel gute literatur garnicht möglich ist, dem c++ anfängertum zu entfleuchen. aber man muss das gelesene auch in der praxis sinnvoll anwenden können, was auf c++ bezogen scheinbar eine grosse hürde ist. erst wenn das einigermassen klappt, lässt man das embryonale stadium so langsam hinter sich.
volkard schrieb:
Das scheint mir gerade bei den embedded-Programmierern auch sehr üblich zu sein, daß man sich für den C-Gott hält, und andere Sprachen kraft Göttlichkeit zu beherrschen wähnt.
nee, ganz im gegenteil. die embedded-leute sind eigentlich grösstenteils sehr empfänglich für kritik, was ihre programmierkünste angeht. sie lernen gern voneinander und sind sehr hilfsbereit, wenn z.b. mal einer nicht weiterkommt oder wissenslücken hat. vielleicht liegts daran, dass sie für ihr selbstwertgefühl nicht die tatsache brauchen, ein toller coder zu sein, sondern weil programmiererei nur ein teil des jobs ist. je weniger code einer schreiben muss, um sein ziel zu erreichen und je einfacher der code wird, desto mehr freut ihn das. wenn er dabei noch hilfe bekommt - umso besser.
volkard schrieb:
Dir nehme ich aber nichmal mehr ab, daß Du gut in C bist.
stimmt ja auch. ich hab' schon mehr als einmal extremen mist programmiert, bei dem ich mich am nächsten tag gefragt habe, wie das überhaupt funktionieren konnte.
-
;fricky schrieb:
volkard schrieb:
Er kann tausendmal auf die Nase fliegen und nicht "Effektiv C++ programmieren" oder ein anderes gutes C++-Buch lesen und hundert Jahre lang C++-Anfänger bleiben.
ja, ich befürchte auch, dass es ohne viel gute literatur garnicht möglich ist, dem c++ anfängertum zu entfleuchen. aber man muss das gelesene auch in der praxis sinnvoll anwenden können, was auf c++ bezogen scheinbar eine grosse hürde ist. erst wenn das einigermassen klappt, lässt man das embryonale stadium so langsam hinter sich.
Das erinnert mich an die Mathematik. Fehlgeleitete berechnen mit ihr auch viel Mist. Aber ob das ein Grund ist, immer beim Schätzen zu bleiben?
-
;fricky schrieb:
volkard schrieb:
Das scheint mir gerade bei den embedded-Programmierern auch sehr üblich zu sein, daß man sich für den C-Gott hält, und andere Sprachen kraft Göttlichkeit zu beherrschen wähnt.
nee, ganz im gegenteil. die embedded-leute sind eigentlich grösstenteils sehr empfänglich für kritik, was ihre programmierkünste angeht.
..., wie du immer wieder zeigst, du vorbild an kritikempfänglichkeit und einsicht.
-
volkard schrieb:
;fricky schrieb:
volkard schrieb:
Er kann tausendmal auf die Nase fliegen und nicht "Effektiv C++ programmieren" oder ein anderes gutes C++-Buch lesen und hundert Jahre lang C++-Anfänger bleiben.
ja, ich befürchte auch, dass es ohne viel gute literatur garnicht möglich ist, dem c++ anfängertum zu entfleuchen. aber man muss das gelesene auch in der praxis sinnvoll anwenden können, was auf c++ bezogen scheinbar eine grosse hürde ist. erst wenn das einigermassen klappt, lässt man das embryonale stadium so langsam hinter sich.
Das erinnert mich an die Mathematik. Fehlgeleitete berechnen mit ihr auch viel Mist. Aber ob das ein Grund ist, immer beim Schätzen zu bleiben?
naja, das ist wohl bei allen nicht-trivialen gebilden so: grundlagen lernen - anwenden - fehler machen - verstehen - weiterlernen- anwenden - fehler machen - noch mehr verstehen - usw...
das trifft eigentlich auf alle programmiersprachen zu, aber ich behaupte mal, dass diese kette bei c++ unverhältnismässig lang ist. man bedenke dabei auch, dass c++ keine wissenschaft ist, bei der es um erkenntnisgewinn geht (wie in der mathematik z.b. die du eben erwähnt hast), sondern eine programmiersprache. und programmiersprachen sollten doch eingentlich werkzeuge sein, also ein möglichst einfach zu handhabendes bindeglied zwischen mensch und computer.volkard schrieb:
..., wie du immer wieder zeigst, du vorbild an kritikempfänglichkeit und einsicht.
wie meinste denn das?
-
Mathematik ist bei Dir kein Werkzeug!, sondern eine Wissenschaft, bei der es im Gegensatz zu Werkzeugen wie Programmiersprachen angebracht ist, sich einzuarbeiten. Aha.
Dabei besteht die Einarbeitung in die Mathematik (wie bei allen nichttrivialen Sachen) aber nur in Versuch-und-Irrtum und gelegentlichem weiterlernen, wenn das Anwenden nicht so klappt. Aha.
-
Entschuldigt bitte, wenn ich mich hier als Nicht-C-oder-C++-Profi einbringe.
Aber sollte es nicht Aufgabe einer Programmiersprache sein, einen für Menschen normal fast unleserlichen Maschinencode, möglichst einfach und verständlich zu machen, um somit funktionierende Programme zu schreiben und später auch wieder verwenden zu können. Hier spielt Objektorientiertheit wohl auch eine große und wichtige Rolle. In Performance scheinen sich rein theoretisch beide Sprachen nicht viel zu nehmen.Kann es nicht sein, dass C++ eine gut gemeinte Verbesserung ist, die vllt. nicht optimal und nur halbherzig umgesetzt ist? Zumindest scheint mir das so und hat mich eher dazu bewogen C dazuzulernen.
-
Kann es nicht sein, dass C++ eine gut gemeinte Verbesserung ist, die vllt. nicht optimal und nur halbherzig umgesetzt ist? Zumindest scheint mir das so und hat mich eher dazu bewogen C dazuzulernen.
-
ahojnnes schrieb:
Kann es nicht sein, dass C++ eine gut gemeinte Verbesserung ist, die vllt. nicht optimal und nur halbherzig umgesetzt ist?
Eugentlich nicht. C++ geht konsequente Wege bis weit über das hinaus, was sich Java-Sprachen trauen.
ahojnnes schrieb:
Zumindest scheint mir das so und hat mich eher dazu bewogen C dazuzulernen.
Warum eigentlich? Hast Du Dir die Sprachen eingehend angeschaut, oder hast Du auf Idioten wie fricky gehört?
-
volkard schrieb:
Mathematik ist bei Dir kein Werkzeug!
hab letztens mal sowas gelesen wie: 'mathematik versucht, möglichst viele nicht-triviale aussagen über irgendwelche objekte und deren beziehungen zueinander zu gewinnen.' von daher ist sie schwerpunktmässig kein werkzeug. dass man teile davon auch als werkzeuge gebrauchen kann, tut der tatsache keinen abbruch, dass mathe hauptsächlich 'ne wissenschaft ist.
ahojnnes schrieb:
Kann es nicht sein, dass C++ eine gut gemeinte Verbesserung ist, die vllt. nicht optimal und nur halbherzig umgesetzt ist?
das kommt hin, trifft es sogar ziemlich gut.
-
Wie bei allen Wollmilcheierlegenden-Säuen ist auch C++ dadurch das alles möglich ist auch, im Vergleich zu anderen Programmiersprachen, extrem schwer zu beherrschen. Wie sieht es mit Objective-C aus, ist dort Erweiterung auf OOP in eurem Sinne „besser“ gelungen? Mal davon abgesehen das OOP nur in ganz wenigen großen Projekten wirklich Sinn macht.