Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   "C" versus Pascal (https://www.delphipraxis.net/178381-c-versus-pascal.html)

ATS3788 5. Jan 2014 07:46

"C" versus Pascal
 
Hallo
Ich lerne zu Zeit "C" Nicht C++, wegen µC Programierung.
Also ich verstehe nicht warum "C" die Erfolgs Sprache wurde.
so was wie "i++" oder "+=" oder Bit Manipulation hätte man
auch in Delphi umsetzen können. OK der Header das ist eine
tolles feature. Nur Pascal ist einfach eleganter,
alleine nur die String Behandlung in "C"
Mich würde interessieren was eure Erfahrung zu meiner Frage
"C" versus Pascal
ist.

PS
Versteht mich nicht falsch "C" ist ein tolles Werkzeug für
µC "Pics"

Popov 5. Jan 2014 08:18

AW: "C" versus Pascal
 
Also (das ist nur meine persönliche Kenntnis und Meinung) ist C (wie auch einige andere Programmiersprachen) eigentlich nur ein Unfall der Geschichte. C hätte es gar nicht geben dürfen und es war nicht geplant (ähnlich wie Pascal, das eigentlich nur als Lehrsprache konzipiert wurde). Ich weiß es nicht ganz genau, aber vor C soll es A und B gegeben haben. Danach kommt C. Schon die einfache Nummerierung zeigt, dass das eigentlich nicht als etwas erfolgreiches geplant war, sonst hätte man dem Ganzen einen guten Namen gegeben, wie man es auch bei Basic, Pascal, Java usw. tat. So wie ich das mal erfahren habe wollte man eigentlich nur Unix programmieren und es fehlte eine vernünftige Sprache. Pascal gab es noch nicht, Basic (na ja), und Assembler auf Dauer ist ja auch kompliziert. Also bevor man Unix schrieb, hat man sich erst eine Programmiersprache entwickelt. Und weil nicht geplant war, dass Menschen in Zukunft damit zu tun haben werden, hat man es einfach gemacht. Genau so als wenn man eine Funktion auf die Schnelle schreibt und den Variablen so viel aussagekräftige Namen wie - i, a, c, k, tv, ux und q gibt. Es ist ja nicht geplant, dass es jemand anders liest, also gibt man sich auch nicht die Mühe. Das hat man sich auch nicht bei C gemacht. Es sollte nur eine Sprache für den Auftrag werden, die einfacher als Assembler ist aber fast genauso mächtig.

Also wurde schnell etwas zusammengeklopft und ein völlig bedeutungsloses Betriebssystem namens Unix erschaffen. Denn auch das war nicht auf Erfolg konzipiert. Und eigentlich ist es das gewesen. Eine Firma brauchte ein Betriebssystem, also sollte eins geschrieben werden. Man nannte es Unix. Und weil eine passende Programmiersprache fehlte hat man vorher C als vorläufiges Hilfswerkzeug entwickelt.

Nur dann kam etwas womit keiner gerechnet hat - der Erfolg. Und der kam so: entweder war man früherer lockerer drauf oder die Angst vor Raubkopien war noch nicht da, verteilte man Unix auf den Unis zu Studienzwecken. Nutzung war nicht erlaubt (ohne zu bezahlen) aber man durfte es frei studieren. Das hatte noch einen schönen Nebeneffekt - es wurden viele Fehler gefunden, so dass man sie schnell reparieren und Unix wurde dadurch ein richtig stabiles Betriebssystem. Es war fast so wie es heute mit Open Source ist, nur das Unix kein Open Source im eigentliches Sinne war, sondern man nichts dagegen hatte, dass die Studenten es studieren. Das nebenbei die Fehler ausgemerzt wurden, war ein netter Nebenerfolg. Ja, und nun zurück zu C. Da Unix in C geschrieben war und es irgendwann an vielen Unis üblich wurde Unix zu studieren, konnten bald viele Studenten C ganz gut. Und nachdem die fertig mit dem Studium waren, haben sie einfach weiter mit C gemacht.

Also, hätte man gewusst, dass C so ein Erfolg wird, man hätte sich vermutlich mehr Mühe gegeben. Das ist aber wie so oft im Leben, man hat ein Problem in der Firma, man kommt irgendwie nicht in die Ecke ran, wo ständig die Kugelschreiber hin rollen, also holt man sich ein Stöcken vom Sperrmüll auf der Straße. Und dann bleibt es im Büro und entwickelt sich über Jahre zum Universallwerkzeug. Jeder stochert damit in seiner Ecke rum. Und dann sagt man sich - hätte ich das gewusst, dann hätte ich mir einen guten Stock bei Obi besorgt. Stadtessen haben wir nun eine abgebrochene Querlatte von einem Schrank hier.

Also das ist meine Geschichte zu C.

Der schöne Günther 5. Jan 2014 08:44

AW: "C" versus Pascal
 
Zitat:

Brian and I had just started working with an early release of Pascal from Professor Nichlaus Wirth's ETH labs in Switzerland and we were impressed with its elegant simplicity and power.

[...]

When we found others were actually trying to create real programs with A, we quickly added additional cryptic features and evolved into B, BCPL and finally C. We stopped when we got a clean compile on the following syntax:
Code:
for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

http://www.gnu.org/fun/jokes/unix-hoax.html

Namenloser 5. Jan 2014 09:20

AW: "C" versus Pascal
 
Hatte zufälligerweise gerade vor ein paar Tagen noch einen Text von Niklaus Wirth gelesen, mit einem interessanten Seitenhieb auf C:

Zitat:

Zitat von Niklaus Wirth
This new compiler, written in Pascal, could not be tested during development, because no Pascal compiler was available yet. The whole program for compiling at least a very substantial subset of Pascal, had to be written without feedback from testing. This was an exercise that was extremely healthy, and it would be even more so today, in the era of quick trial and interactive error correction. After we believed that the compiler was “complete”, one member of the team was banned to his home to translate the program into a syntax-sugared, low-level language, for which a compiler was available. He returned after two weeks of intensive labor, and a few days later the first test programs were compiled correctly by the compiler written in Pascal. The exercise of conscientious programming proved to have been extremely valuable. Never contain programs so few bugs, as when no debugging tools are available!

Thereafter, new versions, handling more and more of Pascal’s constructs, and producing more and more refined code, could be obtained by bootstrapping. Immediately after the first bootstrap, we discarded the translation written in the auxiliary language. Its character had been much alike that of the ominous low-level language C, published a year later. After this experience, it was hard to understand that the software engineering community did not recognize the benefits of adopting a high-level, type-safe language instead of C.


Furtbichler 5. Jan 2014 09:38

AW: "C" versus Pascal
 
Zunächst einmal: Das was Popov in den Tiefen seines Gedächtnisses herausgefischt hat, stimmt soweit (jedenfalls, wenn ich das mit dem Zeugs korreliere, was sich in den Niederungen meines Gedächtnisses befindet).

'C' ist ein etwas besserer Macroassembler: Eine Zuweisung hinterlässt das Ergebnis meist auf dem Stack und so ist auch 'a = b+c' ein Ausdruck, mit dem weiter gerarbeitet werden kann: 'if x == a=b+c'. Praktisch. Damit war in den frühen 70er Jahren eine Programmiersprache/Makroassembler entwickelt, mit dem sich sehr kompakte und schnelle Programme schreiben ließen.

Kernighan und Ritchie haben bei Unix das Ziel verfolgt, das sich das OS ruhig verhält und den Spezialisten, die es bedienen, so wenig wie möglich auf den Sack geht. Wenn also etwas funktioniert, wollten sie kein 'Operation Successful' sehen. Ähnlich wurde 'C' konzipiert: Sie viel wie möglich sollte machbar sein und Spezialisten (eben die beiden) wollten mit wenig Zeichen viel ausdrücken: In 'C' kann man sehr kurze Programme schreiben, ohne überflüssigen Schnickschnack wie 'var','then', 'procedure', 'function', 'do', 'begin', 'end' usw. Unlesbarer werden die Programme damit ja nicht.

So und nun meine Theorie: Da die meisten Programmierer Abkürzungsfetischisten sind (anders kann ich mir die bescheuerten Bezeichner 'ptr' 'chr' sowie die ungarische Notation nicht erklären) fanden viele diese Sprache natürlich total cool, denn wer meinen Code nicht versteht, ist eben nicht so cool wie ich. Blöderweise lässt der C-Compiler so ziemlich jeden Murks durchgehen, weswegen extra Lint entwickelt werden musste, das den gröbsten Quark moniert.

Lustig finde ich, das C-Programmierer beinahe zwnghft Abk vw. Alleine dafür gehört C verboten. Oder die Programmierer umgeschult. Auf Gesetzestextautoren :mrgreen:

Man kann in C allerdings auch hervorragend lesbaren Code schreiben. Wenn man will. C ist durch seine fehlende Strukturierung (kein Unit-Konzept, Klassen etc.) nur für kleine Projekte geeignet. Wenigstens durch die Header-Dateien hat man in Ansätzen das Unit-Konzept von Pascal eingefrickelt.

Fazit: Man sollte C können, wenn man mitreden will, und für µC und den hardwarenahen Bereich allgemein ist es eh Standard. Man muss ja nicht der Abkürzeritis und der Endloscodezeilenverwurst verfallen.

jaenicke 5. Jan 2014 10:49

AW: "C" versus Pascal
 
Zitat:

Zitat von Furtbichler (Beitrag 1242193)
Fazit: Man sollte C können, wenn man mitreden will, und für µC und den hardwarenahen Bereich allgemein ist es eh Standard. Man muss ja nicht der Abkürzeritis und der Endloscodezeilenverwurst verfallen.

Was ich da so in Delphi schon gesehen habe...
C macht es zwar deutlich einfacher unlesbaren Code zu schreiben, aber es gibt genug Programmierer, die das auch in Delphi schaffen.

BUG 5. Jan 2014 22:56

AW: "C" versus Pascal
 
Zitat:

Zitat von Furtbichler (Beitrag 1242193)
'C' ist ein etwas besserer Macroassembler:

C war ein besserer Makro-Assembler. Wer einmal in den Unix V6 Quellcode (siehe Internet) gesehen hat, wird das bestätigen. Besonders die Structs ... gruselig.
Auch der Abkürzungswahn hatte Gründe, die z.B. bei den Linkern zu suchen waren. Nach 6-8 Stellen war denen der Rest des Namens egal.
Das war gestern.

Heute kenne ich keine Stelle z.B. in der Typsicherheit, wo modernes C wirklich Nachteile gegenüber Pascal hätte.

vagtler 5. Jan 2014 23:06

AW: "C" versus Pascal
 
Zitat:

Zitat von jaenicke (Beitrag 1242206)
[...] C macht es zwar deutlich einfacher unlesbaren Code zu schreiben, aber es gibt genug Programmierer, die das auch in Delphi schaffen.

A bad programmer can write C in any language! :mrgreen:

Luckie 6. Jan 2014 01:15

AW: "C" versus Pascal
 
Die ungarische Notation hat bei einer nicht typisierten Sprache schon Sinn. In C kannst du einem Char auch einen Integer zuweise, ohne dass der Compiler meckert. Nur ob dann auch das herauskommt, was du eigentlich beabsichtigt hast, ist was anderes. Die ungarische Notation hilft solche Fehler zu vermeiden. weil man "sieht" was die Variable für einen Datentyp hat.

Furtbichler 6. Jan 2014 07:07

AW: "C" versus Pascal
 
Zitat:

Zitat von Luckie (Beitrag 1242334)
Die ungarische Notation hat bei einer nicht typisierten Sprache schon Sinn.

Is klar. Aber mit Lint wär das nicht passiert. Aus Sicht eines C-Programmierers ist das natürlich ein Schattenparkertool.

Imho hat das (ungarische Notation) hat aber eher etwas mit schlechtem Codestil zu tun: Wenn ich nicht sofort sehe, was für ein Typ eine Variable ist, dann hab ich im Code etwas sehr falsch gemacht. Typisch für C ist komplexer, kompakter, dreckiger Code mit sehr kurzen Variablennamen. Das man dann in die Vorwärtsverteidigung geht und wenigstens die Variablen per Namenskonvention einem Typ zuordnen kann, ist typisch für die C-Fraktion.

Aber C hat natürlich auch Vorteile ('#define' ist einer davon).


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz