Programmiersprachen..: Pascal oder C ?

mehmetman

Active member
Themenstarter
Registriert
23 Okt. 2008
Beiträge
1.051
Schönen Sonnabend wünscht der Herr ausm Norden :-D

neulich auf Arbeit die Diskussion gewesen mit dem Klassiker: "Pascal oder C?".. Schon interessant was sich da ansammelt.
Nun wollt ich wissen wie ist denn eure Meinung zu diesen beiden Programmiersprachen im Vegleich?

Meine Aussage (habe mich wenig mit C befasst) lautet: Bei der Sprache Pascal hat man nen bissl mehr Tipperei als bei C, dementsprechend ist diese Sprache jedoch viel schneller und einfacher zu lesen als C (Beispiel "!" bei C = not wobei bei Pascal einfach nur not ausgeschrieben wird).

Naja was meint ihr dazu?


LG
 
Ganz allgemein (ohne das jetzt auf Pascal vs. C zu beziehen) muss man oft aufpassen, ein Auto nicht mit einem Trecker zu vergleichen. Beide haben vollkommen unterschiedliche Anwendungsgebiete und daher kann man schwer sagen: Das ist besser. Wer will mit einem Trecker in den Urlaub fahren und wer will mit einem Auto den Acker pflügen? So ist es in der Welt der Programmiersprachen auch oft. Niemand kann wohl sagen, Assembler ist besser als Java (oder umgekehrt), weil sie einfach komplett andere Anwendungsgebiete haben. Und jede Programmiersprache hat irgendwo ihre Stärken. Na gut, bis auf so Programmiersprachen wie "Whitespace", "Brainfuck" und besonders "Malbolge". Wobei, auch die haben Vorteile - will man z.B., dass niemand den Code später lesen kann, sind alle drei eine gute Wahl. Will man insgesamt komplett verzweifeln, ist Malbolge hervorragend :D Ich glaube, noch kein Mensch hat ein sinnvolles Programm bisher in Malbolge programmieren können. Aber zurück zum Thema ;)

Ich persönlich habe zwar mal (Turbo) Pascal programmiert, das ist aber schon viele Jahre (>10, vermutlich >15) her und selbst damals hatte man schon das Gefühl, dass man laufend am Alter der Programmiersprache "scheitert". C ist zwar ziemlich genau so alt, aber irgendwie immer noch aktuell, habe ich manchmal das Gefühl.

Ganz allgemein ist es wohl schwer zu sagen, was besser und was schlechter ist. Beide Sprachen haben ihre Vor- und Nachteile. Ich würde aber immer C bevorzugen, aus einem einzigen ganz einfachen Grund: Deren Verfügbarkeit. Für fast jede Plattform gibt es einen einfach zu installierenden C-Compiler. Eine Anwendung für Linux schreiben? GCC als C-Compiler ist schon da. Eine Anwendung unter Windows? GCC via Cygwin oder der C++ Compiler von Visual-Studio helfen weiter. Und erst Recht wenn es an andere Plattformen geht - PIC, ATmel, ARM, ... C-Compiler gibt es dafür eigentlich immer. Pascal-Compiler sind da schon deutlich rarer gesäht. Die nötigen Hardware-Libraries im Bereich der anderen Plattformen daher ebenso. Und wenn es dann mal etwas größer werden soll, kann man auch sehr leicht zur Objektorientierung mit C++ wechseln, die verbreiteten Compiler schlucken auch das in der Regel. Object Pascal ist irgendwie dagegen wohl nie so richtig standardisiert worden und das ist immer blöd beim Programmieren, wenn man den Code spezifisch für den verwendeten Compiler schreiben muss. Davon sinkt die Wiederverwendbarkeit des Codes und Fehler macht man auch leichter. C++ ist zwar meiner Meinung nach auch hässlich, weil man irgendwie merken kann, dass das ganze im Grunde genommen C mit "reingefrickelten" Erweiterungen ist, aber immerhin ist es standardisiert und daher universell nutzbar.
 
Zuletzt bearbeitet:
Wenn man nur einen Hammer kennt, sieht jedes Problem aus wie ein Nagel. Jede Problemlösung hat eine passende Programmiersprache, ein guter Entwickler legt sich nicht auf eine bestimmte fest.

Falls es nur um die Praxisrelevanz geht, hat diese Liste die Antwort.
 
Um ordentliche Programmierung zu lernen ist Pascal wohl besser geeignet.
Und wenn man denn mal Programmieren kann, sollte die Sprache egal sein.
Dann kann man auch mit so uneleganten Konstruktionen wie C arbeiten ;)
 
Die Frage ist was will man machen?

Ich nehme für STM Prozessoren C, überlege aber c# oder C++ zu nutzen weil das nächste Projekt größer wird und von Vererbungen etc profitiert.

Einfache kleine Anwendungen kann man gut mit Pascal schreiben
 
Ich nehme für STM Prozessoren C, überlege aber c# oder C++ zu nutzen weil das nächste Projekt größer wird und von Vererbungen etc profitiert.

Es gibt einen C#-Compiler für die STM-MCUs? C++ habe ich mal ausprobiert, aber das war mir im ersten Anlauf zu fummelig mit den Interrupts.
 
Für die alltägliche Programmierung kleiner Erweiterungen bevorzuge ich höhere objektorientierte Sprachen wie C# oder Java (einfach weils einfacher zu schreiben ist)
Für maschinennahe Programmierung ist C oder C++ dann meist besser geeignet.
(Turbo)Pascal ist sicher auch ganz nett, ich hatte bisher aber in noch keinem Projekt das Vergnügen damit zu arbeiten.
Selbst Dinosaurier wie Fortran und Cobol können in bestimmten Situationen noch benötigt werden ;)

Letztendlich ist's wie mit dem Führerschein: Die meisten lernten in einem Auto der Kompaktklasse, fahren darf man aber genauso SUV, Kleinwagen, Limousine, oder Kleinbus (jede Klasse hat ihre eigenen Vor-/Nachteile, Lenkrad Bremse und Gas haben aber alle).
 
Ups.
Sind die damals zusammen gesessen und ham sich überlegt, in welcher Programmiersprache sie den Linux-Kernel schreiben sollten und ham sich dann für C entschieden ?
Ich hab ja echt keine gute Meinung, wenns um Programmierer geht, aber so blöd hätten nicht mal die gewesen sein können :thumbsup:
 
aber so blöd hätten nicht mal die gewesen sein können
Naja, C ist doch recht mächtig ohne viel Overhead für Objektorientierung und Codelesbarkeit mitzuschleifen.
=> Durch die schon damals hohe Verbreitung von C als Programmiersprache für ein open-source-Betriebssystem nicht mal so blöd ;)
 
Ups.
Sind die damals zusammen gesessen und ham sich überlegt, in welcher Programmiersprache sie den Linux-Kernel schreiben sollten und ham sich dann für C entschieden ?
Ich hab ja echt keine gute Meinung, wenns um Programmierer geht, aber so blöd hätten nicht mal die gewesen sein können [emoji106]
Naja, wenn man mal von dem für große Projekte völlig ungeeigneten Assembler absieht, dann ist in fast jeder Disziplin ein in C geschriebener und dann kompilierter Algorithmus der performanteste. C ist daher schon keine schlechte Wahl. Auch wenn ich ebenfalls der Meinung bin, dass für solch große Projekte besser strukturierte Hochsprachen besser geeignet sind ;) Performancetechnisch sieht das aber eben nicht so aus.
 
Dem wird ja von Java Jüngern oft widersprochen. Nach überfliegen von einigen Google Funden scheinen einige die Meinung zu vertreten Java wäre mindestens genauso schnell wie C wenn nicht schneller.

Zweifel kommt nur dann auf wenn Apple mit Objective C und jetzt Swift mit im Vergleich zu Android High-End Hardwaremonstern geradezu bescheidenen Rechenleistung/RAM/Stromverbrauch bessere Benchmarkergebnisse abliefern.

Zu Pascal vs C... Erinnere mich an Turbo Zeiten. Nach Turbo C++ war Pascal doch ein einschneidendes Erlebnis. Nach Drücken von F6 (???) flackerte der Bildschirm kurz auf. Warum startet der Compiler/Linker nicht? Bei C dauerte es einige Sekunden bis Minuten bis ein Programm gebaut war. Turbo Pascal brauchte nur einen Bruchteil einer Sekunde. Statt einen Schirm mit Meldungen bei der man verfolgen konnte was der Computer gerade macht gab es ein kurzes Flackern weil der Schirm gleich nach dem Start wieder zu war, da fertig.
 
Dem wird ja von Java Jüngern oft widersprochen. Nach überfliegen von einigen Google Funden scheinen einige die Meinung zu vertreten Java wäre mindestens genauso schnell wie C wenn nicht schneller.
Na wenn die Java-Jünger das wirklich glauben, dann haben sie sich erstens zu wenig mit der Art und Weise, wie ihre Programmiersprache funktioniert, auseinandergesetzt. Und zweitens haben sie es dann offenbar auch nie ausprobiert oder zumindest mal Tests dazu gelesen. Nicht gegen Sprachen wie Java oder C#. Tolle Sprachen! Aber eben nicht für Performance oder Hardwarenähe ;)

Es ist natürlich auch nicht ganz einfach, die Performance von Programmiersprachen zu vergleichen. Man muss ja auch gleiches mit gleichem vergleichen. Aber diese Seite hier, versucht genau das: http://benchmarksgame.alioth.debian.org/ Da werden quasi feste Algorithmen vorgegeben und man kann dann Programme in den jeweiligen Programmiersprachen schreiben, die diesen Algorithmus implementieren. Die Programme werden dann auf immer der selben Hardware ausgeführt und deren Performance gemessen. Hauptsächlich natürlich interessant ist die Ausführdauer bis zum Ergebnis, aber natürlich auch der RAM-Verbrauch dabei und ggf. noch, ob sie die CPU überhaupt "vernünftig" ausgelastet haben.
Für mich interessante Schlüsse, als ich mir das mal angeschaut habe:
- C ist fast immer am schnellsten
- C++ ist auch sehr schnell, aber kann nicht ganz mit C mithalten
- die neue Programmiersprache von Mozilla namens Rust ist ebenfalls meist recht weit vorne mit dabei, hat aber wohl einige Vorteile gegenüber C/C++
- C# und Java sind ca. um den Faktor zwei langsamer als C (ich hätte es ehrlich gesagt schlimmer vermutet! Aber Faktor 2 ist natürlich auch schon nicht ohne)
- Java ist meist einen Tick langsamer und etwas speicherhungriger als C#, einzelne Benchmarks scheinen dafür C# aber überhaupt nicht zu liegen, da ist es dann deutlich langsamer als Java
- Node.JS ist lahm. OK. War aber auch zu erwarten eigentlich ^^ Bis auf einzelne Ausnahmen um Faktoren zwischen 8 und 16 langsamer als die Spitzengruppe.
- Python ist ebenfalls lahm. Und zwar noch viel schlimmer als Node.JS. Da sind nicht wenige Faktoren von 100 und höher dabei, teilweise ist Python Schlusslicht. So schlimm hätte ich es nicht erwartet...
- ein paar der "alten" Sprachen wie Fortran können manchmal auch ziemlich gut oben mithalten
Gerade habe ich nochmal nach Pascal dort geschaut. Ist tatsächlich auch dabei :) Dessen Performance ist aber durchwachsen... Teilweise um den Faktor 2-3 langsamer, manchmal auch Faktor 5 bis hin zu Faktor 12. Damit ist es teilweise noch deutlich langsamer als Node.JS, in einzelnen Benchmarks wie der Berechnung von Pi-Stellen ist es aber plötzlich auf Platz zwei gleichauf mit C. Das ist aber auch der einzige Fall. ^^

Zweifel kommt nur dann auf wenn Apple mit Objective C und jetzt Swift mit im Vergleich zu Android High-End Hardwaremonstern geradezu bescheidenen Rechenleistung/RAM/Stromverbrauch bessere Benchmarkergebnisse abliefern.
Bei Objective C kann ich mir das vorstellen (leider ist es nicht in den obigen Benchmarks), bei Swift aber nicht. Das ist in den Benchmarks in manchen leicht langsamer als Java, in anderen dagegen um den Faktor 5-10 langsamer: http://benchmarksgame.alioth.debian.org/u64q/swift.html

Zu Pascal vs C... Erinnere mich an Turbo Zeiten. Nach Turbo C++ war Pascal doch ein einschneidendes Erlebnis. Nach Drücken von F6 (???) flackerte der Bildschirm kurz auf. Warum startet der Compiler/Linker nicht? Bei C dauerte es einige Sekunden bis Minuten bis ein Programm gebaut war. Turbo Pascal brauchte nur einen Bruchteil einer Sekunde. Statt einen Schirm mit Meldungen bei der man verfolgen konnte was der Computer gerade macht gab es ein kurzes Flackern weil der Schirm gleich nach dem Start wieder zu war, da fertig.
Ja, Pascal ist stark für den Compiler optimiert worden, so dass dieser so schnell arbeitete, dass man manchmal glaubte, man hat eine Interpretersprache statt einer kompilierten vor sich. Meiner Meinung nach ist das aber der falsche Ansatz. Was bringt es mir, wenn mein Programm in Sekundenbruchteilen kompiliert, aber nachher in der alltäglichen Ausführung Stunden braucht? Dann nehme ich lieber ein paar Sekunden, Minuten oder notfalls auch Stunden zum Kompilieren auf mich, aber dafür läuft es danach flott.
 
Zuletzt bearbeitet:
Eine "gute" Programmiersprache ist den Assembler-Fricklern nach also eine, die Code erzeugt, der hinterher am schnellsten abstürzt :eek:
 
Für Hardwarenahe Programmierung braucht man eine Sprache in der man sicherstellen kann, dass bestimmte Instruktionen/Zugriffe direkt hintereinander kommen.
In C/C++ geht das ohne Probleme und der Code ist portierbar. Compilerspezifisches zeugs kann per define umgeschaltet werden.
Bei anderen Sprachen ist das nicht so einfach möglich oder stark compiler abhängig.

Jede Sprache mit Garbage Collector und anderem zeugs zur Laufzeit um Programmierfehler abzufangen wird langsamer sein als C/C++.
 
...eine Sprache in der man sicherstellen kann, dass bestimmte Instruktionen/Zugriffe direkt hintereinander kommen.

:thumbsup:

Assembler-Frickler brauchen so Manches.
Vor Allem viel Ahnung von Hardware und Bits und Bytes.

Wenn Du sicherstellen möchtest, dass bestimmte Instruktionen/Zugriffe direkt hintereinander kommen, dann ist das eine Aufgabenstellung für einen Codierer. Mit strukturierter Programmierung hat das nix zu tun ;)

Is ja jetzt auch nich soo komplex, das mit der Sequenz :thumbup:
 
:thumbsup:

Assembler-Frickler brauchen so Manches.
Vor Allem viel Ahnung von Hardware und Bits und Bytes.

Wenn Du sicherstellen möchtest, dass bestimmte Instruktionen/Zugriffe direkt hintereinander kommen, dann ist das eine Aufgabenstellung für einen Codierer. Mit strukturierter Programmierung hat das nix zu tun ;)

Is ja jetzt auch nich soo komplex, das mit der Sequenz :thumbup:

Hast du eine Anti-Assembler Agenda oder warum versuchst du hier so vehement darzustellen, dass Assembler-Programmierer "Frickler" sind? Hast du schonmal hardwarenah programmiert? Dann wüsstest du, dass es durchaus Situationen gibt in denen Assembler benötigt wird, und sei es nur als inline asm-Block.

Und wie kommst du darauf, dass Assembler nicht strukturiert programmiert wird? Rollercoaster Tycoon ist also "nur" eine Sequenz?
 
Wenn Du sicherstellen möchtest, dass bestimmte Instruktionen/Zugriffe direkt hintereinander kommen, dann ist das eine Aufgabenstellung für einen Codierer.
Ein Codierer? Was meinst du damit? Laut Duden ist das das gleiche wie ein "Encoder", aber auch da frage ich mich, was du damit in diesem Zusammenhang meinst.

Mit strukturierter Programmierung hat das nix zu tun ;)
Jein. Wenn man ein bisschen Innenleben vom Compiler kennt, kann man durchaus C-Code so schreiben, dass Zugriffe auch direkt hintereinander so passieren, wie man es haben will. Oder man zwingt seinen Compiler dazu, die Dinge direkt hintereinander ohne Unterbrechung auszuführen. z.B. mit ATOMIC_BLOCK auf dem AVR-GCC oder es gibt auch atomic-Variablen in C direkt. Ob Pascal sowas auch kann, weiß ich nicht. Auf die schnelle konnte ich nichts dazu finden. Vermutlich geht's nicht.
 
Am nervigsten bei meinen ersten Assemblerversuchen waren die Abstürze. Da man zu faul war, auf Datasette zu speichern endete das damit, dass man für den nächsten Anlauf alles neu eintippen musste.

Dann las ich mit erstaunen, dass Assembler bzw. Maschinencode für die ersten Computerprogrammierer die allereinfachste Sprache war. Das galt natürlich, als es den Beruf Programmierer noch nicht gab. Die Hardwaredesigner die den Chip entwickelt hatten fiel es leichter, ihn in Maschinencode zu programmieren, als extra noch eine Sprache zu lernen.

Seit x86 habe ich mir aber nie wieder die Mühe gemacht sondern auf die Intel Magie vertraut. Konnte man bei Z80 mit Assembler noch Faktor 100 und mehr rausholen und erst damit nutzbare Programme schreiben brauchte man nur darauf zu warten bis die Intel CPUs wieder mal einen riesigen Performancesprung hinlegte.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben