Autor Thema: Ist C und Unix nur ein Joke?  (Gelesen 44449 mal)

unsknown spammer

  • Beiträge: 11
    • Profil anzeigen
Gespeichert
« am: 28. December 2006, 19:27 »
http://c-worker.ch/humor/cppquatsch.php
Ist C und Unix nur ein Joke?  :wink:
mfg unknown spammer

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #1 am: 28. December 2006, 20:00 »
http://c-worker.ch/humor/cppquatsch.php
Ist C und Unix nur ein Joke?  :wink:
Der ist echt gut. Deswegen progge ich ja in Assembler.

bitmaster
In the Future everyone will need OS-64!!!

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 28. December 2006, 22:26 »
Dieser Artikel geistert ziemlich häufig im Netz.
Naja, Fakt ist, dass die größten "Stärken" von C gleichzeitig die größten Schwächen sind - halt je nach Sichtweise und nicht wegzuerklären.
Eigentlich ist C eine der ungeeignetsten Sprachen für Betriebssysteme - und trotzdem wird es seit Ewigkeiten genutzt.

Interessant finde ich dazu die Diskussionsseite zum Wikipedia-Artikel "C (Programmiersprache)". Dort wird dazu auch Stellung genommen - und man merkt genau, wer dafür und wer dagegen ist.

Ich halte mich an Bitmaster und schreibe Assembler.

Gruß,
Svenska

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 28. December 2006, 22:40 »
Daß nicht jeder C mag, kann ich durchaus nachvollziehen - für einen Kernel ist es zwar meines Erachtens durchaus brauchbar, aber für alles, was auf einer abstrakteren Ebene angesiedelt ist, tatsächlich nicht das Optimum, um es mal vorsichtig auszudrücken. Meine Kritikpunkte sind also Kompiliziertheit, Fehleranfälligkeit, Wartbarkeit, usw.

Was ich aber nicht verstehen kann ist, wieso man dann auf Assembler ausweicht. Die für mich einzig logische Ausweichrichtung wäre auf höhere Sprachen, wenn man sich an diese Kritikpunkte hält.

Was also sind eure Kritikpunkte an C? Die müssen ja wohl genau in die umgekehrte Richtung gehen wie meine, denn aus meinen kann ich beim besten Willen nicht folgern, daß Assembler die bessere Wahl wäre.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #4 am: 28. December 2006, 22:57 »


Ich halte mich an Bitmaster und schreibe Assembler.


* Biehler Productions2 too

@taljeth
Mir gefällt Assembler einfach, weil ich selber alles in der Hand haben kann.
Vor allem hilft mir Assemblerprogrammierung, systeminterne Dinge besser zu verstehen, z.b. wie ein Prozessor funktioniert, oder wie WinSockets funktionieren.
Dadurch, das ich in W32 ASM Sockets benutze, muss ich meine HTTP Header etc. selber zusammenbasteln, was wiederum dafür sorgt, dass ich weis, wie solcher aufgebaut ist.
Gäbe genügend solcher Beispiele.

Was ich an C nicht mag:
Ich finde, C Syntax ist unübersichtlicher als ASM Syntax.
Aber das wird wohl im Auge des Betrachters liegen.
Außerdem hab ich was gegen Datentypen, bzw. die strenge Kontrole derjenigen.
In ASM hab ich ein byte7word (16Bit) und in 32Bit ASM eben ein DoubleWord.
Da isses egal, ob der Rückgabewert einer Funktion eine Zahl oder ein Pointer oder ein Handle ist.
Wird alles in einem DoubleWord gespeichert, fertig aus, Amen.

Was für C (und jede andere höhere Sprache) spricht:
Grob über den Daumen gepeilt würd ich sagen, dass ein in C geschriebenes Prog nur 1/4 soviel quellcode hat wie ein in ASM geschriebenes, gleichwertiges Prog.


bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 28. December 2006, 23:01 »
@taljeth: Na ganz einfach, warum soll ich eine hochkomplizierte Programmiersprache wie C nehmen, wenn es mit Assembler noch komplizierter geht? Außerdem versauen meiner Meinung nach alle Hochsprachen die Ausgabe.

bitmaster
In the Future everyone will need OS-64!!!

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 28. December 2006, 23:40 »
Vor allem hilft mir Assemblerprogrammierung, systeminterne Dinge besser zu verstehen, z.b. wie ein Prozessor funktioniert, oder wie WinSockets funktionieren.
Prozessor verstehen - meinetwegen. Aber Winsocks? Das ist doch selbst in C geschrieben, ich bezweifle, daß man das besser versteht, wenn man es mit Assembler anspricht. Der einzige "Zusatznutzen" ist vielleicht, daß man die C-Aufrufkonventionen kennenlernen darf...

Zitat
Dadurch, das ich in W32 ASM Sockets benutze, muss ich meine HTTP Header etc. selber zusammenbasteln, was wiederum dafür sorgt, dass ich weis, wie solcher aufgebaut ist.
Das ist vielleicht ein Argument, nicht unbedingt PHP zu benutzen, wenn man genau wissen will, wie es funktioniert, aber ansonsten schlägt es ziemlich genau ins Leere.

Zitat
Ich finde, C Syntax ist unübersichtlicher als ASM Syntax.
Hm, ja... Ich persönlich finde ja Ausdrücke wie "(a + b) *c" schon übersichtlicher (oder sagen wir vielleicht lieber: aus dem richtigen Leben gewohnter) als ein paar Zeilen Assembler für dasselbe.

Zitat
Außerdem hab ich was gegen Datentypen, bzw. die strenge Kontrole derjenigen.
Ist mir nicht direkt einsichtig. Kontrolle durch den Compiler bedeutet schonmal einige vermiedene Fehler. Einen Nachteil sehe ich dagegen nicht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #7 am: 28. December 2006, 23:47 »
Das was ich dazu sage: Jeder das seine.

bitmaster
In the Future everyone will need OS-64!!!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 29. December 2006, 10:40 »
Genau...ich bin auch für Assembler!!

Es stimmt das ein C-Prog vielleicht nur einen 4tel Quellcode braucht...Hat man aber beides auskompiliert, ist der Assmbler nur noch ein 4tel so gross wie C....

Und dass Asm kompliziert ist kann man wirklich nicht sagen...Es ist auf das wesentliche konzentriert und deshalb einfach einfacher....

Und stimmt sich immer mit Datentypen usw. herumzuschlagen ist gerad für OS-Dev sehr mühsam...

Darum progge ich das tiefe an meinem OS in Asm...und wenn es dann irgendwann geht mit einer höheren Sprache...(wenns geht Java) weiter...

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 29. December 2006, 10:42 »
http://c-worker.ch/humor/cppquatsch.php
Ist C und Unix nur ein Joke?  :wink:
Der ist echt gut. Deswegen progge ich ja in Assembler.

bitmaster

ganz meine meinung, aber wie du schon sagtest, jedem das seine

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 29. December 2006, 13:13 »
Also jetzt mal im Ernst Leute. Ich schreibe zwar gerne selber Asm, aber nur aus Spaß und der faszination wie klein der erzeugte Binärcode sein kann. Als richtige Programmiersprache taugt das eigendlich nicht mehr.

Ich kann mich daran erinnern, dass es jemanden in diesem oder einem anderem Forum gab, der Hardcode geschrieben hat (also mit nem Hexeditor alle Befehle eingetippt... -_- ). Trozdem war sich diese Person bewusst , dass das nicht sehr effektiv ist! Aber hier wird einem nun gesagt das schwache Typisierung von Variablen stört...
db 0x55AA

T0ast3r

  • Gast
Gespeichert
« Antwort #11 am: 29. December 2006, 13:57 »
C--  :wink:

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #12 am: 29. December 2006, 13:58 »
Zitat
Als richtige Programmiersprache taugt das eigendlich nicht mehr.
Mach dich mir nicht zum Feint. ;-) ASM ist die einzig vernünftige Programmiersprache. Im Gegensatz zu den Hochsprachen ist das Ergebnis der Assemblierung/Kombilierung nicht verseucht. Ich progge alles in ASM (außer Web zeug), Programme und mein komplettes OS. Also sag nicht das ASM dafür nichts taugt. Es liegt nur dran wie gut der Progger ist. ätsch

bitmaster
In the Future everyone will need OS-64!!!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 29. December 2006, 14:03 »
Jop...wenn halt der Geist eines Proggers zu klein ist und man alles in Klassen und Subklassen und Methoden und Submethoden einteilen muss...na bidde....

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #14 am: 30. December 2006, 15:32 »
Aber Winsocks? Das ist doch selbst in C geschrieben, ich bezweifle, daß man das besser versteht, wenn man es mit Assembler anspricht.
Jo, warn schlechtes Beispiel, zumal man in C und in ASM die WinAPI dafür nutzen muss, demzufolge war mein Argument ziemlich daneben gegriffen  :-D

Zitat
Hm, ja... Ich persönlich finde ja Ausdrücke wie "(a + b) *c" schon übersichtlicher (oder sagen wir vielleicht lieber: aus dem richtigen Leben gewohnter) als ein paar Zeilen Assembler für dasselbe.
ich mein den gesamten Syntax an sich, aber wie gesagt, das ist Ansichtssache.

Zitat
Ist mir nicht direkt einsichtig. Kontrolle durch den Compiler bedeutet schonmal einige vermiedene Fehler. Einen Nachteil sehe ich dagegen nicht.
Naja, wenn ich erstmal ne Funktion suchen muss, um nen Bool in nen Integer umzuwandeln, oder z.b. in Delphi nen TString in nen String Datentyp (sind nur Beispiele), ist es mir lieber, wenn ich ein DWord habe, und sonst nix  :-)
Ich  bins von PHP schon gewöhnt, nur einen Datentyp zu haben, alles andere finde ich nich gerade berauschend  :-P

Zitat
Ich kann mich daran erinnern, dass es jemanden in diesem oder einem anderem Forum gab, der Hardcode geschrieben hat (also mit nem Hexeditor alle Befehle eingetippt... -_- ).
lol, das hab ich auch mal gemacht; da wirste verrückt mit der zeit  :evil:
ich glaub, ich hab nen Tag gebraucht für ein Prog, das den ASCII Code einer Taste ausgibt.
aber ne Erfahrung wars wert  :-)

« Letzte Änderung: 30. December 2006, 15:36 von Biehler Productions2 »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 30. December 2006, 15:47 »
Zitat
Hm, ja... Ich persönlich finde ja Ausdrücke wie "(a + b) *c" schon übersichtlicher (oder sagen wir vielleicht lieber: aus dem richtigen Leben gewohnter) als ein paar Zeilen Assembler für dasselbe.
ich mein den gesamten Syntax an sich, aber wie gesagt, das ist Ansichtssache.
Was hat Assembler groß an Syntax, was übersichtlich sein könnte? Die Syntax vom Assembler ist recht primitiv, würde ich sagen. Primitiv heißt aber nicht unbedingt übersichtlich.

Zitat
Naja, wenn ich erstmal ne Funktion suchen muss, um nen Bool in nen Integer umzuwandeln
Erklär mir bitte mal, welchen Sinn es machen soll, einen Wahrheitswert als Zahl zu behandeln. Wahr ist nicht 1 und nicht 42 und nicht 1337, sondern einfach wahr. Umwandlung in einen Integer ist sinnlos. Wenn nicht, war Boolean nicht der richtige Datentyp für die Variable.

Abgesehen davon: In C würde man (int) x schreiben, in Pascal integer(x). Das sind keine Funktionen, sondern billige Typecasts. Ist das wirklich kompliziert?

Zitat
Ich  bins von PHP schon gewöhnt, nur einen Datentyp zu haben, alles andere finde ich nich gerade berauschend  :-P
Offensichtlich kannst du nicht besonders gut PHP, sonst wüßtest du, daß PHP Datentypen hat. Und wenn man das nicht beachtet, kann man auf die Schnauze fliegen. (z.B. Größer-/Kleiner-Vergleich auf Strings und auf Zahlen macht einen Unterschied!)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #16 am: 30. December 2006, 16:08 »
Im Gegensatz zu den Hochsprachen ist das Ergebnis der Assemblierung/Kombilierung nicht verseucht.
Und das würd ich dann doch gern erklärt haben. Mit was denn verseucht?
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #17 am: 30. December 2006, 18:46 »
Erklär mir bitte mal, welchen Sinn es machen soll, einen Wahrheitswert als Zahl zu behandeln.
Wie gesagt, war nurn beispiel.

Mir ist die Funktion von Typecasts durchaus bewusst (bzw. ich weis, dass es sie gibt, benutzt habe ich sie mangels C(++) projekte nie), allerdings war meine Aussage nur, dass ich sowas in ASM nicht brauche.
Das, und nichts anderes, habe ich gesagt.
Wie einfach und simple TC's zu bedienen sind, ist mir relativ egal, in ASM brauche ich das nicht.

Zitat
Offensichtlich kannst du nicht besonders gut PHP, sonst wüßtest du, daß PHP Datentypen hat. Und wenn man das nicht beachtet, kann man auf die Schnauze fliegen. (z.B. Größer-/Kleiner-Vergleich auf Strings und auf Zahlen macht einen Unterschied!)

Offensichtlich habe ich dann meine PHP projekte ohne große PHP Kentnisse geschrieben   :-o
Damit meinte ich eher, dass es egal ist, das ich schreibe:

$a=5;
echo $a;
$a="abc";
echo $a;

oder:

$a="5";
$b=7;
$c=$a+$b;
echo $c;

Und das mach mal in C (ohne Typecast natürlich).
Ich bin zwar der C 'schen Sprache nicht mächtig, bin mir aber ziemlich sicher, dass das nicht geht...
Dass ich in PHP auf einen Buchstaben keinen Integer addieren kann, weis ich auch...

Zitat
(z.B. Größer-/Kleiner-Vergleich auf Strings und auf Zahlen macht einen Unterschied!)
Wie? Willst du Buchstaben(-strings) mit zahlen vergleichen?

btw
Primitiv heißt aber auch nicht zwingend unübersichtlich...  :wink:
« Letzte Änderung: 30. December 2006, 18:50 von Biehler Productions2 »

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #18 am: 30. December 2006, 18:59 »
Zitat
bin mir aber ziemlich sicher, dass das nicht geht
Geht das denn in ASM? ;-)

bitmaster
In the Future everyone will need OS-64!!!

unsknown spammer

  • Beiträge: 11
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 30. December 2006, 19:25 »

$a="5";
$b=7;
$c=$a+$b;
echo $c;


a='5';
b=7;
c=a+b;
cout << c << endl;

Edit: Eigentlich wollte ich aber garnicht so eine Diskussion lostreten!  :-(
mfg unknown spammer

 

Einloggen