Kakashi hat geschrieben:"Free() the moloc()'s!!!"
"malloc" heißt das...
Alien hat geschrieben:Es ist nur so, dass man nicht immer so viel Performance braucht. Eve Online zeigt, dass man für große 3D-Grafiken nicht immer/unbedingt C braucht.
ich hab's mir jetzt nicht genau angeschaut, aber ich vermute mal, daß der game-code (in python) für die gesamte grafik usw. wohl nur library calls macht, und die libraries sind dann wohl doch in C geschrieben... je größer die datenmengen sind, desto kritischer wird die performance, und aufwändige grafiken bedeuten immer _viele_ daten...
Viele Leute lernen mühevoll C und schreiben ewig langen Code, den man viel schneller und einfacher auch in Interpretsprachen schreiben könnte.
der knackpunkt ist und bleibt die performance. in perl oder python bspw kann man sehr schnell sehr mächtige programme schreiben, allerdings sind die anforderungen an cpu und ram um ein vielfaches höher. wenn das ganze zeug dann skalieren soll, stößt man irgendwann an die grenzen der hardware. und dann gibt's nur zwei möglichkeiten: mehr oder bessere hardware muß her, oder das ding muß in einer anderen sprache, eben etwa C neu geschrieben werden, was dann zwar kein geld, aber zeit kostet.
aber das ist hier ja schon ein paar mal durchgekaut worden. wenn es aber um kleine programme geht, die in der perl-version 5 mb ram brauchen und 0.2 sekunden ausführungsdauern haben, während sie in der C-version 500 kb ram brauchen und 0.05 sekunden laufen, dann ist derjenige einfach nur dumm, der das in C schreibt. (oder masochist. oder er will vielleicht einfach nur C üben.)
Richtiges programmieren is aber _seeeehr_ subjektiv.
ACK, und das sollte auch niemand vergessen...
auch bash (oder andere unix shells), plus die dazugehörigen utils, ist in meinen augen eine richtige programmiersprache: man kann damit programme schreiben. (wer's nicht glaubt: es gibt sogar einen httpd geschrieben in bash. die performance ist allerdings unter aller sau
)
ich glaub, man sollte nicht unterscheiden, was eine richtige programmiersprache ist und was nicht, sonder was ein richtiger programmierer ist und was nicht. und die erklärung:
Viele Leute haben zuerst mit Pascal, Python und Perl gelernt und später mal C. Es gibt aber auch einige, die C gelernt haben und es eigentlich nie brauchten (und ich kenne viele, denen es so ergangen ist). Nochmals ich mag C und in einigen Bereichen ist sie nahzu unumgänglich, aber sie ist IMO nicht die "Supersprache", als die sie bei vielen gilt. Ich keine auch einige (nicht so viele
), die jahrelang C programmiert haben und dann etwas anderes gelernt haben, weil es vieles gibt, das in anderen Sprachen einfach schneller zu programmieren geht.
ein computer spricht in seiner muttersprache maschinensprache, also z.b. x86 bytecode. um den bytecode für menschen lesbar zu machen, gibt es assembler.
C sehe ich als eine art frontend zu assembler. ein C-compiler spuckt üblicherweise auch keinen maschinencode aus, sondern assembler code, der dann dem assembler zum übersetzen in die maschinensprache gegeben wird. dazu gibt es in C eine reihe von eigenarten, die zumindest ansatzweises verständnis von assembler und/oder der darunterliegenden hardware voraussetzen. (beispiele: die "register" anweisung, sizeof(), das ganze drumherum mit pointern, noch schlimmer bei funktionspointern, ganz haarig wird's bei funktionen mit ner variablen anzahl an argumenten, ditto für longjmp() et al, sehr heikel sind "atomic" operationen, bei denen man bei multi-threading, aber auch bei signal handlers sehr aufpassen muß, usw usf...)
wer also ein "richtiger" C-programmieren sein will, muß auch zumindest eine ahnung von assembler haben.
wenn wir einen schritt weiter gehen: in perl und in python gibt es ebenfalls eine reihe eigenarten, die zumindest ansatzweises verständnis von C voraussetzen. (immerhin sind die interpreter auch in C geschrieben.) beispiele sind reference counting bei objekten, die daraus resultierenden effekte aufs speichermanagement, typecasts und type juggling, signal handling, die eigenarten bestimmter systemnaher funktionsaufrufe usw...
wer also ein "richtiger" perl- oder python-programmieren sein will, muß auch zumindest eine ahnung von C haben.
wer das nicht hat, kann zwar natürlich trotzdem saubere und voll funktionsfähige perl- oder python-programme schreiben, auch in größerem umfang. allerdings wird er in bestimmten gebieten an seine grenzen stoßen, weil ihm einfach die kenntnisse über die interne funktionsweise der darunterliegenden sprache fehlen. in solchen fällen greift der programmierer dann oft zu irgendwelchen schmutzigen hacks, um ein problem zu lösen... (selbiges gilt übrigens auch für C-programmierer und fehlende assembler-kenntnisse.)
Bittorrent dürfte zum Beispiel den meisten bekannt sein.
dann schau dir mal den bittorrent-code genauer an. du wirst _sehr_ viele codeschnippsel finden, die ihren ursprung in der C-welt haben, und die ein programmierer ohne C-kenntnisse unmöglich hätte schreiben können.
Es gibt auch Server und IIRC gab es mal ne Meldung, dass Perl sogar schon den Weg in den Linuxkernel gefunden hat.
vorsicht... in der distribution der kernel-sourcen sind zwar perl-scripte vorhanden, aber _im_ kernel selbst läuft kein perl. wäre auch gar nicht möglich.