• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Warum ist C so toll?

Atheist2

Guest
Das will mir einfach nicht in den Sinn kommen. Warum programmieren so viele so gern mit C?
 
Mitglied seit
13.08.2002
Beiträge
172
Reaktionen
0
ist hardwarenah und schnell (angeblich :o)
 

killerchicken_inaktiv

Guest
Siehe oben, zusätzlich hat es imho die beste Syntax, ist portabel und hat sich eben als Standard etabliert
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
keine ahnung, vielleicht:
- nicht komerziell
- ueberschaubare sprache
- einfacher syntax
- pointer-arithmetik
- bibliotheken
- betriebssysteme und schnittstellen dazu meistens in c geschrieben
- fuer die meisten systeme gibt es gute c compiler
- mangel an alternativen
- hat sich bewaehrt
- schneller code
 

The_Company

Guest
- einfache, überschaubare und gut lesbare Syntax.
- kein (ok, kaum) Operator overloading
- viele Möglichkeiten durch Coprozessor
- portabelste Sprache
- braucht keine Wrapper, da es Basissprache ist
- leicht verständlich (GC und Java, omg...)
- gut optimierbar
- alles ist möglich, kein "Sorry, die Variable ist private" oder son Mist

Das ist das, was mir erstmal eingefallen ist.
 

Atheist2

Guest
einfacher Syntax, leicht verständlich ... ya right. Private/Lokale Variablen haben durchaus ihren Sinn. Hardwarenah schließt sich irgendwie mit Portabilität aus.
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
Hardwarenah schließt sich irgendwie mit Portabilität aus.

dazu muesste man genauer spezifizieren, was mit hardwarenah gemeint ist. wenn man grundsaetzlich annahmen ueber die hardware machen muss, wie z.b. bei der speicherverwaltung, ist dies natuerlich nicht auf ein anderes system uebertragbar, jedoch liegt das nicht an der sprache c, solch ein code kann nicht, egal welche sprache, portabel sein. geraetetreiber sind nicht portabel, aber das liegt an den verschiedenen schnittstellen (und natuerlich der funktionsweise) der betriebssysteme. operationen z.b. auf dem speicher sind allerdings portabel.
 

Atheist2

Guest
Original geschrieben von [UEP]Xyz
wenn man grundsaetzlich annahmen ueber die hardware machen muss, wie z.b. bei der speicherverwaltung, ist dies natuerlich nicht auf ein anderes system uebertragbar [...] operationen z.b. auf dem speicher sind allerdings portabel.
Was denn nun?
 

Observator

Guest
...
+
- kompakt, viel Funktionalität in wenig Quelltext.
 
Mitglied seit
18.07.2001
Beiträge
2.152
Reaktionen
2
Ort
Nürnberg
Original geschrieben von The_Company
- viele Möglichkeiten durch Coprozessor
oha, ich nehme mal an du meinst praeprozessor

ich sag mal C is so verbreitet weil es aelter und einfacher zu implementieren als C++ ist und so ziemlich auf jeder hardware laeuft.

sowas wie pascal oder basic kann wohl keinen wirklich begeistern, java oder .net sprachen brauchen erstmal ne installierte run-time umgebung und gelten nicht als so zuverlaessig wie C usw.. und sprachen wie ruby oder so will wohl keiner wirklich.
die sprache brainfuck konnte sich auch nicht durchsetzen usw...

hello world in brainfuck
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.---.+++++++..+++.>++++++++++++++++++++++++++++++++.<++++++++.--------.+
++.------.--------.>+.>++++++++++.
 
Mitglied seit
19.09.2001
Beiträge
2.379
Reaktionen
17
mit c hab ich angefangen und ist seitdem meine lieblingssprache...
 

The_Company

Guest
Jupp, Präprozessor nicht Coprozessor. Da war ich geistig noch bei hardwarenah :dead:
Und unter Hardwareenah verstehe ich, dass man sch annähernd vorstellen kann, was der Rechner macht, wenn man einen Befehl eingibt. Wenn ich x=3 sage, wird er bei C an die Speicherstelle von x ne 3 schreiben, während er bei Java u.U. nebenbei den Garbage Collector laufen lässt um den alten Wert von X zu entsorgen.
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.462
Reaktionen
10.183
Original geschrieben von The_Company
Wenn ich x=3 sage, wird er bei C an die Speicherstelle von x ne 3 schreiben, während er bei Java u.U. nebenbei den Garbage Collector laufen lässt um den alten Wert von X zu entsorgen.
was kein nachteil sein muß ;)

aber im großen und ganzen habt ihr recht: harwarenah, dadurch zwar schnell, von zeit zu zeit aber doch argh unflexibel... da bleibsch doch lieber bei meinen objekten :) sofern man allerdings eine imperative nicht-objektorientierte hochsprache auswählen müsste, wäre das bei mir immer c
 

HereticNovalis

Guest
Original geschrieben von Atheist
Das will mir einfach nicht in den Sinn kommen. Warum programmieren so viele so gern mit C?

MUHA

ich hab noch was:

ganz einfach: weil ohne C: der rechner nich startet :D

MUHAHAHAHA
:ugly:


:stupid:
 

The_Company

Guest
Objekt orientiert programmieren ist lediglich den ersten Parameter einer Funktion vor die Funktion zu schreiben und es Methode zu nennen.
Alles andere kannste mit C auch haben, sieht zwar nicht ganz so schön aus, is dafür aber schneller, portabler und verständlicher.
 

Bronzegraf

Guest
Original geschrieben von The_Company
Jupp, Präprozessor nicht Coprozessor. Da war ich geistig noch bei hardwarenah :dead:
Und unter Hardwareenah verstehe ich, dass man sch annähernd vorstellen kann, was der Rechner macht, wenn man einen Befehl eingibt. Wenn ich x=3 sage, wird er bei C an die Speicherstelle von x ne 3 schreiben, während er bei Java u.U. nebenbei den Garbage Collector laufen lässt um den alten Wert von X zu entsorgen.

Das stimmt überhaupt nicht. In Java werden die Basistypen genauso wie in C gehandhabt. Der Wert wird an der referenzierten Stelle ausgetauscht...
Carbage Collection kommt erst zum Tragen, wenn es um das Dereferenzieren von Objekten geht.
 

The_Company

Guest
Ich hab nicht gesagt, dass x ein Basistyp ist.

Wieder mal ein Grund, warum Operator Overloading suckt.
 
Mitglied seit
18.07.2001
Beiträge
2.152
Reaktionen
2
Ort
Nürnberg
Original geschrieben von The_Company
Objekt orientiert programmieren ist lediglich den ersten Parameter einer Funktion vor die Funktion zu schreiben und es Methode zu nennen.
Alles andere kannste mit C auch haben, sieht zwar nicht ganz so schön aus, is dafür aber schneller, portabler und verständlicher.

da hat jemand extrem ahnung von oop :stupid:
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.462
Reaktionen
10.183
Original geschrieben von The_Company
Objekt orientiert programmieren ist lediglich den ersten Parameter einer Funktion vor die Funktion zu schreiben und es Methode zu nennen.
sorry, aber:

LOOOOOOOOOOOOOOOOOOOOOOOOOL
 

Bronzegraf

Guest
Hehe netter Versuch ein anderes Programmierparadigma zu verstehen.
Erm es ist aber im Endeffekt ein klein wenig mehr verschieden von C.
 

Observator

Guest
Original geschrieben von ViperDK
die sprache brainfuck konnte sich auch nicht durchsetzen
... was ja auch kein Wunder ist wenn sich mit Hexeditor direkt in Maschinensprache effizienter Programme schreiben lassen. Dann ist auch der Compiler dafür kleiner, als einer für brainfuck es je sein könnte, nämlich 0 Byte (ich gehe mal davon aus, dass niemand hardware mit brainfuck Befehlssatz baut) .
 

Bronzegraf

Guest
Da vergleichste aber Äpfel mit Birnen. Brainfuck ist ja in diesem Sinne eine "Hochsprache" und muß natürlich erst in Maschinensprache umgewandelt werden.

Einfacher kann man effektive Programme auch schreiben, wenn man Assembler benutzt. Da haste dann auch noch mnemonische Unterstützung (die Befehle haben Namen).
 

The_Company

Guest
Original geschrieben von ViperDK
da hat jemand extrem ahnung von oop :stupid:
Mal just 4 U:
Du nimmst ne struct, packst nen vtable mit rein und implementierst nen Type System, dass Vererbung und casting übernimmt.
Dann haste OO in C. Guck Dir GLibs Implementation an. :eek:
 

RRA^StArFiRe

Guest
Original geschrieben von Atheist
Das will mir einfach nicht in den Sinn kommen. Warum programmieren so viele so gern mit C?

ich programmier nur mit den fingern... hohoho 8[
 

Atheist2

Guest
Original geschrieben von ViperDK
sowas wie pascal [...] kann wohl keinen wirklich begeistern,
Pascal (bzw FreePascal und Delphi) haben eine durchaus große Programmiercommunity. Es ist sauber, mächtig und leicht lesbar. Was will man mehr?
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.462
Reaktionen
10.183
Original geschrieben von The_Company
Mal just 4 U:
Du nimmst ne struct, packst nen vtable mit rein und implementierst nen Type System, dass Vererbung und casting übernimmt.
Dann haste OO in C. Guck Dir GLibs Implementation an. :eek:
es geht bei oo aber eben NICHT nur um die implementierung.... als kleinen ansatz nur dieses:

everything is an object :)
 

Observator

Guest
Original geschrieben von Bronzegraf
Da vergleichste aber Äpfel mit Birnen. Brainfuck ist ja in diesem Sinne eine "Hochsprache" und muß natürlich erst in Maschinensprache umgewandelt werden.

Einfacher kann man effektive Programme auch schreiben, wenn man Assembler benutzt. Da haste dann auch noch mnemonische Unterstützung (die Befehle haben Namen).
:hail:


:rolleyes:
 

Observator

Guest
Original geschrieben von Atheist
Pascal (bzw FreePascal und Delphi) haben eine durchaus große Programmiercommunity. Es ist sauber, mächtig und leicht lesbar. Was will man mehr?
Weniger einschränkend und mächtiger.
Lesbarkeit C VS Pascal ist wenn man beides versteht imo nur eine Sache des Schreibstils und der Formatierung.
 

The_Company

Guest
Original geschrieben von [mogeln]ShiZu
everything is an object :)
Das ist fast nirgends wahr. Sowohl C++ als auch Java haben fundamentale Typen. In Java sind nichtmal Interfaces Objekte.

Nice try.
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.462
Reaktionen
10.183
Original geschrieben von The_Company
Das ist fast nirgends wahr. Sowohl C++ als auch Java haben fundamentale Typen. In Java sind nichtmal Interfaces Objekte.

Nice try.
nix aber auch gar nix ist in java KEIN objekt, zum nachlesen empfehle ich

thinking in java 2nd ed von bruce eckels
 

The_Company

Guest
Jaja.

Is in C genauso, alles aber auch alles ist ein Objekt. Man nennt es da nur Speicheradresse.
 

Morag

Guest
Original geschrieben von Atheist
Pascal (bzw FreePascal und Delphi) haben eine durchaus große Programmiercommunity. Es ist sauber, mächtig und leicht lesbar. Was will man mehr?

Das Problem bei Pascal (und der große Vorteil bei C), ist die Effizienz der synthax. Was in C in einer Zeile geht, sind in Pascal häufig ein paar mehr. Zumindest zu der Zeit als ich Pascal gelernt habe, war ne typische Sache:
Code:
  foo := foobar(x);
  IF  foo > 0  THEN foo := foo+1;
ist in C irgendwie fixer:
Code:
  if( foo=foobar(x) ) foo++;

Im vergleich zum C for ist die Pascal version eine absolute Krücke. Pascal zwingt dich zu schönem Code. C erlaubt dir kurzen Code.

@company: Du hast Idee OO nicht verstanden. Dann hilft dir auch nicht wenn du weißt wie es implementiert ist.
 

Bronzegraf

Guest
Original geschrieben von The_Company
Das ist fast nirgends wahr. Sowohl C++ als auch Java haben fundamentale Typen. In Java sind nichtmal Interfaces Objekte.

Nice try.
Ja logisch sind das keine Objekte, genausowenig wie Klassen Objekte sind.
Objekte werden das erst wenn man von Interfaces oder Klassen Instanzen bildet.
 

Atheist2

Guest
Original geschrieben von Morag
Zumindest zu der Zeit als ich Pascal gelernt habe, war ne typische Sache:
Code:
  foo := foobar(x);
  IF  foo > 0  THEN foo := foo+1;
ist in C irgendwie fixer:
Code:
  if( foo=foobar(x) ) foo++;
Am besten lassen wir den Code dann auch noch unkommentiert. Klingonischer Programmierer?
 

Bronzegraf

Guest
Original geschrieben von Atheist
Das will mir einfach nicht in den Sinn kommen. Warum programmieren so viele so gern mit C?

Naja höchstwahrscheinlich weil C - Code prügelschnell läuft.
Aber ich muß ehrlich sagen, das mir die Syntax (speziell der ganze Pointermist) oftmals Kopfschmerzen bereitet.
Desweiteren gibt es in C so gut wie keinen impliziten Code. Also man kann/darf nichts als gegeben betrachten, sondern muß alles selbst implementieren. Das ist oftmals praktischer, da man sich so nicht dauernd Gedanken machen muß, was die Funktion die man aufruft denn noch anderes nettes macht. (Beispiel: allozieren von Speicher)
 

Morag

Guest
Original geschrieben von Atheist
Am besten lassen wir den Code dann auch noch unkommentiert. Klingonischer Programmierer?

Was willst du denn für einen Kommentar an einem allgemeinen Beispiel?
:hum:
 
Oben