Welche Vorteile hat C, was kann man an C loben?
-
c.rackwitz schrieb:
swordfish: sag das nicht, ich moechte wetten, irgendein irrer langhaariger pinguinlover (
) hat dafuer schon den kernel gehackt und ein perl modul zum interface geschrieben.
Klappe, 'witz, ich hab' lange haare und sitz 'grad vor emacs...
Ich meinte damit, es sei mit blankem perl nicht möglich.
Greetz, Swordfish
-
Swordfish schrieb:
Mit perl zB. den BIOS-ROM auszulesen dürfte IMHO schwierig werden.
Greetz, Swordfish
Swordfish schrieb:
Ich meinte damit, es sei mit blankem perl nicht möglich.
Greetz, Swordfish
Wenn ich mich nicht täusche ist sowas auch nicht mit blankem (Ansi-)C möglich.
Ansi-C kann schließlich nichts außer Daten einzulesen sie zu bearbeiten
und wieder auszugeben. Für Dinge wie Netzwerk, Grafik... braucht man
auch wieder spezielle Bibliotheken.Was kann man an C loben?
Ich würde sagen das man mit C alles unter Kontrolle hat (so glaubt man zumindest).
-
Storm.Xapek.de: linux netzwerk/grafiktreiber sind in c geschrieben, weil man in c auch auf hardware zugreifen kann (obgleich dazu im kernelmode irgendwas eventuell assemblermaessiges ausgefuehrt werden muss). sowas koennte als bibliothek gelten, aber nichtsdestotrotz gehts. du kannst ja schliesslich keinem zumuten, treiber in assembly zu schreiben. nicht mal unter windows ist das so.
> Ich würde sagen das man mit C alles unter Kontrolle hat (so glaubt man zumindest).
q.e.d.
-
c.rackwitz schrieb:
[...], aber nichtsdestotrotz gehts.
Danke.
Storm.Xapek.de schrieb:
Ich würde sagen das man mit C alles unter Kontrolle hat (so glaubt man zumindest).
FULL ACK
Greetz, Swordfish
~edit by c.rackwitz: das war Storm.Xapek.de, nicht ich :)~
-
Swordfish schrieb:
Klappe, 'witz, ich hab' lange haare und sitz 'grad vor emacs...
ich hab' auch lange haare aber sass im ganzen leben keine 10 minuten vor emacs
zum thema: assemblerfans würden aber jetz aber ungläubig gucken, wenn denen einer erzählt man hätte mit einer hochsprache (c) alles unter kontrolle...
-
net schrieb:
assemblerfans würden aber jetz aber ungläubig gucken, wenn denen einer erzählt man hätte mit einer hochsprache (c) alles unter kontrolle...
Echte Assembler-Fans denken erst, sie haben alles unter Kontrolle, wenn sie Hammer und Lötkolben in den Händen halten.
Greetz, Swordfish
-
von wegen asm vs. c
--> http://forums.freescale.com/freescale/board/message?board.id=16BITCOMM&message.id=1133&view=by_date_ascending&page=1
-
c absteiger schrieb:
C ist doch nur was für Masochisten.
Oder etwas für Leute, die sich intensiv mit einer Sprache befassen wollen, anstatt stupiden Syntaxzucker runterzuleiern, fernab von jeglichem Codedesign.
Obwohl ich selbst noch einiges mit C zu tun habe, kann ich keine wirklichen Vorteile sehen. Zumindest wenn man C++ in den Vergleich mit einbezieht. Der einzige Vorteil von C liegt in der starken Verbreitung, und dass praktisch so gut wie für jedes relevante System Compiler existieren. Wurde ja auch schon erwähnt. Hat aber eben direkt mit der Sprache, also der reinen Spezifikation, nicht viel zu tun.
-
Swordfish schrieb:
Echte Assembler-Fans denken erst, sie haben alles unter Kontrolle, wenn sie Hammer und Lötkolben in den Händen halten.
Wofür denn den Hammer? Entsorgung gehört doch normalerweise nicht zu Planung.
Bezüglich man kann mit jeder Sprache alles machen. Das wäre warscheinlich richtig, wenn sich alle Sprachen compilieren ließen und alle Compiler eine gemeinsame ABI benutzten würden. Dann wäre es nämlich wirklich egal.
-
groovemaster schrieb:
Obwohl ich selbst noch einiges mit C zu tun habe, kann ich keine wirklichen Vorteile sehen. Zumindest wenn man C++ in den Vergleich mit einbezieht.
c++ ist aufgemotztes c. das ist zwar auf den ersten blick ein segen aber durch solche faxen wie virtuelle funktionen, operator/function overloading, default parameter, selbstdefinierte operatoren wie z.b. >> usw. kann man sehr schnell völlig unverständlichen code produzieren. ausserdem kann es passieren, dass c++ programme einen enormen speicherhunger entwickeln und riesige executables erzeugen wenn man nicht genau aufpasst. der vorteil einer objektorientierten sprache (den benutzer von maschinenspezifischen dingen abzuschirmen) verwandelt sich schnell in einen nachteil. deshalb wird auf kleinstcomputern vorzugsweise c ohne ++ eingesetzt...
-
net schrieb:
aber durch solche faxen wie virtuelle funktionen,...der vorteil einer objektorientierten sprache...
Wenn virtuelle Funktionen (die es im übrigen genaugenommen
gar nicht gibt) für dich Faxen sind, dann würde ich gerne mal
wissen, wie bei dir OO-Sprachen funktionieren sollen!
-
Javaner schrieb:
...dann würde ich gerne mal
wissen, wie bei dir OO-Sprachen funktionieren sollen!so wie java. java finde ich toll
-
Danke für das ironische Antwort!
Aber ich find' nur Smalltalk geil...
Java ist das kleiner Übel.
-
Javaner schrieb:
Danke für das ironische Antwort!
das war nicht ironisch. ich mag java wirklich. java ist nicht so'ne wollmilchsau wie c++. aber smalltalk ist bestimmt auch nett, ich hab' nur leider noch nie was damit gemacht...
-
net schrieb:
c++ ist aufgemotztes c.
Nope. C und C++ sind strikt voneinander zu trennen. Gemeinsamkeiten rühren lediglich daher, dass C als Basis diente. Nicht mehr und nicht weniger. Genauso könnte man sagen, dass Java ein aufgemotztes (oder abgespecktes?) C++ ist. Genauso so ein Unsinn.
net schrieb:
das ist zwar auf den ersten blick ein segen aber durch solche faxen wie virtuelle funktionen, operator/function overloading, default parameter, selbstdefinierte operatoren wie z.b. >> usw. kann man sehr schnell völlig unverständlichen code produzieren.
Gerade durch Sachen wie Operatorüberladung kann man sehr intuitiven Code schreiben, der leichter verständlich ist. Mir geht C++ da ehrlich gesagt noch nicht weit genug. Ich würde mir zB noch Properties wünschen. Aber das ist ein anderes Thema. Und was soll denn an virtuellen Funktionen oder Funktionsüberladung schlecht sein? Es gibt sogar Leute, die sich wundern, dass man in C keine Funktionen überladen kann. Vllt. kannst du ja mal ein paar konkrete Beispiele nennen, ansonsten kann man mit deiner Aussage nix anfangen.
net schrieb:
ausserdem kann es passieren, dass c++ programme einen enormen speicherhunger entwickeln und riesige executables erzeugen wenn man nicht genau aufpasst.
Das liegt aber nicht an C++, sondern in erster Linie an der STL bzw. deren Implementation. Dass die alles andere als optimal ist, sehe wohl nicht nur ich so. Aber schliesslich zwingt dich niemand dazu, sie zu benutzen. Zumindest ich nicht.
C hat dafür genauso Nachteile, ich denke da zB nur an den ganzen ...printf/...scanf Hickhack. Typsicherheit ade, und willkommen ihr Bufferoverruns!net schrieb:
der vorteil einer objektorientierten sprache (den benutzer von maschinenspezifischen dingen abzuschirmen) verwandelt sich schnell in einen nachteil. deshalb wird auf kleinstcomputern vorzugsweise c ohne ++ eingesetzt...
Nope. Das ist deshalb schon Unsinn, weil C++ keine rein objektorientierte Sprache ist. Und dass auf exotischen Systemen vorzugsweise C eingesetzt wird, liegt vielmehr daran, dass dort eher Compiler und andere Entwicklungstools verfügabr sind. Das wurde ja bereits gesagt.
-
groovemaster schrieb:
Es gibt sogar Leute, die sich wundern, dass man in C keine Funktionen überladen kann.
Das würde ich mir wirklich auch für C wünschen.
-
groovemaster schrieb:
net schrieb:
das ist zwar auf den ersten blick ein segen aber durch solche faxen wie virtuelle funktionen, operator/function overloading, default parameter, selbstdefinierte operatoren wie z.b. >> usw. kann man sehr schnell völlig unverständlichen code produzieren.
Das liegt aber nicht an C++, sondern in erster Linie an der STL bzw. deren Implementation. Dass die alles andere als optimal ist, sehe wohl nicht nur ich so. Aber schliesslich zwingt dich niemand dazu, sie zu benutzen. Zumindest ich nicht.
Zudem werden die C++ Compiler auch stetig verbessert und die binaries werden kleiner. C Compiler sind deutlich älter und ausgereifter als C++ Compiler, war klar, dass bei C++ Compilern Aufholbedarf besteht.
Der Unterschied zw. "Hello World" in C++ und "Hello World" in C ist zwar noch deutlich, aber er wird kleiner. Wenn sich jetzt noch die STL etwas schlanker machen würde...
net schrieb:
Javaner schrieb:
Danke für das ironische Antwort!
das war nicht ironisch. ich mag java wirklich. java ist nicht so'ne wollmilchsau wie c++. aber smalltalk ist bestimmt auch nett, ich hab' nur leider noch nie was damit gemacht...
Von der Aussage mach ich mir n Screenshot
MfG
GPC
-
net schrieb:
[...] java finde ich toll
net, mir graust vor dir!
Greetz, Swordfish
-
groovemaster schrieb:
net schrieb:
c++ ist aufgemotztes c.
Nope. C und C++ sind strikt voneinander zu trennen. Gemeinsamkeiten rühren lediglich daher, dass C als Basis diente. Nicht mehr und nicht weniger. Genauso könnte man sagen, dass Java ein aufgemotztes (oder abgespecktes?) C++ ist. Genauso so ein Unsinn.
natürlich ist c++ eine eigene sprache. das will auch keiner anzweifeln. aber bei der geburt von c++ wurde c genommen, oop und andere features dazugepackt, die typüberprüfung ver(schlimm)bessert usw. heraus kam nix halbes und nix ganzes - erhöhte komplexität und trotzdem blieben fast alle macken von c erhalten. java dagegen ist weder abgespecktes noch aufgemotztes c++. für java hat c++ (neben anderen sprachen, ich glaub' lisp und smalltalk waren dabei) eigentlich nur als anschauungsobjekt gedient (was macht man anders/besser bzw. was ist ok).
groovemaster schrieb:
net schrieb:
das ist zwar auf den ersten blick ein segen aber durch solche faxen wie virtuelle funktionen, operator/function overloading, default parameter, selbstdefinierte operatoren wie z.b. >> usw. kann man sehr schnell völlig unverständlichen code produzieren.
Gerade durch Sachen wie Operatorüberladung kann man sehr intuitiven Code schreiben, der leichter verständlich ist.
...oder genau das gegenteil. du siehst in einem qulltext 'a<<4'. ist es nun ein shift oder wird da was 'gestreamt'? man sieht irgendwo 'a=a+b' ist es wirklich eine addition oder etwas gänzliches anderes? du hast zwei funktionen 'mach_was(int x)' und 'mach_was(char x)'. in einem sourcefragment siehste irgendwo 'mach_was(a)'. welche von beiden wird aufgerufen?
groovemaster schrieb:
C hat dafür genauso Nachteile, ich denke da zB nur an den ganzen ...printf/...scanf Hickhack. Typsicherheit ade, und willkommen ihr Bufferoverruns!
klar hat c nachteile, aber c++ hat fast alle davon übernommen und um eigene nachteile ergänzt...
groovemaster schrieb:
net schrieb:
der vorteil einer objektorientierten sprache (den benutzer von maschinenspezifischen dingen abzuschirmen) verwandelt sich schnell in einen nachteil. deshalb wird auf kleinstcomputern vorzugsweise c ohne ++ eingesetzt...
Nope. Das ist deshalb schon Unsinn, weil C++ keine rein objektorientierte Sprache ist.
und warum sollte einer c++ nutzen, wenn er nicht oop macht? wegen der schönen dynamic_cast<>'s? oder weil er irgenwo mitten im quelltext variablen definieren kann? oder etwa weil er 'malloc' hasst und lieber 'new' schreiben möchte (um hinterher die [] beim delete zu vergessen)?
Swordfish schrieb:
net schrieb:
[...] java finde ich toll
net, mir graust vor dir!
dafür finde ich c# doof
-
groovemaster schrieb:
Es gibt sogar Leute, die sich wundern, dass man in C keine Funktionen überladen kann.
Ich bin einer von den die sich wundern.
Ich sehe wirklich keinen technischen Grund warum es in C nicht geben sollte. Falls einen solchen gibt, bitte mir den zu nennen.
Überladene Funktionen ist das einzige was mir in C fehlt.