Ich muss hier mal ein paar Dinge wohl klarstellen, die oftmals (wie auch hier) verwechselt werden.
Zunächst muss man C und C++ strikt trennen. Das sind eigentlich komplett unterschiedliche Sprachen, mit komplett unterschiedlichen Programmierstilen, und das C in C++ erlaubt ist, ist eher ein Krebsgeschwür von C++, und es sollte auf jeden fall vermieden werden diese Sprachen zu mischen. Darum werde ich jetzt auch separat auf C++ und C eingehen.
deadc0de hat geschrieben:2 Grundverschiedene Sprachen. C/C++ ist eher etwas um Speicher zu sparen. Na, merkste was? Heute ist Speicher sparen im kb Bereich einfach nur Unnötig, deshalb ist der Sinn von C/C++ auch eher Fraglich. Pascal, JAVA, Python usw. machen es dem Entwickler einfach, sowas braucht man in der Modernen Programmierung.
Das Speicherargument ist so eine Sache, da diese nicht von der Sprache, sondern von der Implementierung abhängig ist. Als Beispiel, es gibt hunderte C Compiler, und auch sau viele Pascal Compiler. um mal ein Paar Beispiele zu nennen, C: GCC, Clang, Intel-C, Pascal: fpc, Gnu Pascal, jede Delphi Version. Die Aussage C ist kleiner als Pascal würde bedeuten, das aufgrund der Sprache jeder C Compiler kleinere Assembly's als jeder Pascal Compiler fabriziert. Und das das bullshit ist kann man schon auf anhieb sehen, wenn man einen C Compiler von ein paar Studenten als 1-Semester Projekt und einen schlanken Pascal Compiler (z.B. D7) vergleicht wird einem auffallen, der Studentencompiler ist Schrott.
Man kann was Größe und Optimierung angeht Implementierungen vergleichen und keine Sprachen.
Und vergleicht man nun Pascal mit C++ fällt einem auf, C++ hat Startpointer, Automatische Typ Erkennung, Implizite Cast überladung, Objekt Initialisierung, namespaces, etc. C++ hat so viele features (seit C++11) die es dem Entwickler so viel einfacher machen, das dagegen Pascal aussieht wie C im Vergleich zu Java. Das einzige was C++ noch als klotz am Bein hängt ist die C Kompatibilität, aber alles in allem ist C++ (von den sprachlichen Mitteln) viel angenehmer als Pascal.
Pascal betrachte ich eher als das bessere C. Pascal ist, grade mit der expliziten Speicherverwaltung, eine sehr low level Sprache, die zwar viele Dinge im Gegensatz zu C vereinfacht, aber im vergleich zu anderen Sprachen wie C#, C++, Java mit schnieken Features wie Lambda Funktionen, doch eher klobig.
Das ist auch nicht schlimm, das ist eben eine der Charakteristiken von Pascal, und z.B. Lambdas würden alles untergraben wofür Pascal steht. Aber Pascal ist (und bleibt) eine Low Level Sprache, die wohl auch, im Gegensatz zu C++ mit version 11, in näherer Zukunft keine krassen Änderungen in die Richtung unternehmen wird.
Wenn man also zwei Sprachen vergleicht muss man wohl am ehesten C und Pascal vergleichen, da diese Sprachen unheimlich ähnlich sind, und da ist Pascal natürlich die deutlich einfachere (daher ist Pascal das besserer C)
Ein Riesen Vorteil von Pascal ist die Schnelle Compilierung. Das ist nicht(/wenig) Implementationsabhängig, da dies aufgrund des Unit bzw. ppu Konzepts von Pascal geschuldet ist. Und grade bei Projekten >50mb macht das schon einen Unterschied zwischen mal eben Mails checken und einen Kaffe Hohlen und genüsslich trinken (so ein C Projekt dauert da schon mal 30 min und ein Pascal Projekt selber Größenordnung knapp 5 min
Betrachtet man die Implementierungen GCC und FPC so gibt es eine Sache die heraussticht: Der GCC verfügt über eine deutlich bessere (Cross-) Optimierung. GCC Programme sind kleiner und Schneller. Das heißt wenn man diese 5-10% mehr Leistung braucht (was man in Zeiten von GB Ram und GHZ Multicore Prozessoren nicht mehr so häufig braucht) ist C wohl die bessere Wahl.
Mathias hat geschrieben:Was ich so komisch finde, ich habe schon vielfach gehört, das C/C++ eine Sprache für Tipfaule Leute ist.
Aber im Vergleich zu Pascal ist da eher das Gegenteil. Nur schon eine For-To-Schleife ist der Horror unter C.
For Schleifen in Pascal und C sind auch etwas Komplett unterschiedliches. In Pascal ist es zwangsläufig eine Zähler/Iterationsschleife in C(++) ist es vor allem eine Erweiterung der While Syntax.
Die C For Schleife ist komplizierter als das Pascal äquivalent, da sie mächtiger ist. Ein Beispiel, Datei voller Integers lesen und Ausgeben:
Code: Alles auswählen
for (f=fopen(filename, "r"); (len=fread(&i, sizeof(int), 1, f))>0; printf("%d", i)); {}
fclose(f);
Ich will sehen wie du das in Pascal genauso kurz machst.
Bei Programmiersprachen gibt es immer den TradeOff zwischen Kompaktheit und Flexibilität, gegenüber Wartbarkeit und Sicherheit. Wobei sich dabei vor allem die C-Syntax Sprachen und die Wirthschen Sprachen gegenüber stehen. C++ und Ada bilden dabei wohl die Extreme, und sprachen wie C#, Java und ObjectPascal bewegen sich irgendwo in diesem Spektrum. Ich würde nicht sagen das eins davon besser ist, es findet andere Anwendungsgebiete. Sowie ObjectPascal als Low-Level Sichere und Wartbare Framework Sprache ihre eigene Use-Case hat hat C als Low Level High-Performance Sprache oder C++ als Low-To-High-Level Alleskönner oder C# als High-Level Framework Sprache alle auch ihre eigenen Use Cases, und das Vergleichen bringt da Recht wenig.
PS: Es gibt eine Sache die hat Pascal schon von den Anfängen an besser gemacht als C und C++, und ist bis heute Tausendmal besser, und das sind die Strings. Die C Strings sind schrecklich im vergleich zu Shortstrings in Pascal, und std::String von C++ ist im vergleich zu den Dynamischen Strings von Pascal einfach viel zu verkompliziert, und der Mischmasch in C++ und C Strings ist ein weg der gradewegs in die Hölle führt.