So steht es in diesem Artikel geschrieben (https://www.computerwoche.de/a/fuer-die ... ft,1138326). An sich bietet der Artikel schon einige gute Informationen, aber was genau soll denn unter C "freier" sein, als unter Pascal? Etwa dass Pascal sehr streng ist und so eventuelle Fehler schon während des Kompilierens erkennt, die in C nicht erkannt werden?Ein Programmierer, der von Pascal nach C wechselt, wird schon nach kurzer Zeit die neue Freiheit entdecken und nutzen. Umgekehrt fühlt sich ein C-Programmierer nicht selten von anderen Sprachen in seiner Kreativität eingeschränkt.
C ist "freier" als Pascal
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
C ist "freier" als Pascal
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: C ist "freier" als Pascal
z.B.
ist bereits die Grundfunktion von dem CoreUtil cat. In Pascal ist das deutlich aufwendiger.
Aber ich denke was mit Freiheit am meisten gemeint ist, ist die Typstrenge. Z.B. die Strikte Trennung zwischen Boolean und Integern, welche in C gar nicht vorhanden ist.
Und Freiheit ist dafür das Perfekte Wort, man hat die Freiheit jeden Typen als Boolean zu verwenden, ob das was Gutes oder was Schlechtes ist, ist jedem selbst überlassen, aber das man Freier ist kann man nicht bestreiten
Ob das allerdings allgemein Gültig ist würde ich bezweifeln, z.B. die Strings in Pascal mit Referenzzählung und Überladenen Operator +, gibt einem Deutlich mehr Freiheiten, da man nicht an GetMem und FreeMem gebunden ist.
Genause mit den Pascal Sets statt C Bitmaps, die Überladenen Operatoren geben dem Entwickler mehr Freiheiten ohne sich über komplizierte BitArithmetkik Gedanken machen zu müssen.
Bei C++ könnte ich es schon eher verstehen, Merfachvererbung, Templates (statt generics), automatische Typerkennung, all diese Features für die Pascal kein Äquivalent hat, geben dir natürlich mehr Freiheit, da du einfach mehr direkt machen kannst, und keine Umwege gehen musst.
Aber auch hier wieder, ob das was Gutes ist kann jeder selbst entscheiden, ich persönlich finde Mehrfachvereerbung nutzlos
Code: Alles auswählen
for (int c = 0, FILE* f = fopen(argv[1], "r"); (c = fgetc(f)) != EOF; putchar(c));
Aber ich denke was mit Freiheit am meisten gemeint ist, ist die Typstrenge. Z.B. die Strikte Trennung zwischen Boolean und Integern, welche in C gar nicht vorhanden ist.
Und Freiheit ist dafür das Perfekte Wort, man hat die Freiheit jeden Typen als Boolean zu verwenden, ob das was Gutes oder was Schlechtes ist, ist jedem selbst überlassen, aber das man Freier ist kann man nicht bestreiten
Ob das allerdings allgemein Gültig ist würde ich bezweifeln, z.B. die Strings in Pascal mit Referenzzählung und Überladenen Operator +, gibt einem Deutlich mehr Freiheiten, da man nicht an GetMem und FreeMem gebunden ist.
Genause mit den Pascal Sets statt C Bitmaps, die Überladenen Operatoren geben dem Entwickler mehr Freiheiten ohne sich über komplizierte BitArithmetkik Gedanken machen zu müssen.
Bei C++ könnte ich es schon eher verstehen, Merfachvererbung, Templates (statt generics), automatische Typerkennung, all diese Features für die Pascal kein Äquivalent hat, geben dir natürlich mehr Freiheit, da du einfach mehr direkt machen kannst, und keine Umwege gehen musst.
Aber auch hier wieder, ob das was Gutes ist kann jeder selbst entscheiden, ich persönlich finde Mehrfachvereerbung nutzlos
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: C ist "freier" als Pascal
Tja, was ist Freiheit
?
Freiheit ist oft auch die Freiheit unverständlichen Code zu schreiben. Deswegen mag ich C nicht.

Freiheit ist oft auch die Freiheit unverständlichen Code zu schreiben. Deswegen mag ich C nicht.
Ich mag Pascal...
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: C ist "freier" als Pascal
Freiheit ist schön, ist mit char in C/C++ ein Zeichen oder ein Zahl gemeint. Bei Pascal ist dies eindeutig, da man Byte oder Char nimmt.Aber ich denke was mit Freiheit am meisten gemeint ist, ist die Typstrenge. Z.B. die Strikte Trennung zwischen Boolean und Integern, welche in C gar nicht vorhanden ist.
Man ist richtig frei so richtig unleserlich zu Coden.Code: Alles auswählen
for (int c = 0, FILE* f = fopen(argv[1], "r"); (c = fgetc(f)) != EOF; putchar(c));
Kann man mit Pascal auch, mit einem asm-Block.all diese Features für die Pascal kein Äquivalent hat, geben dir natürlich mehr Freiheit, da du einfach mehr direkt machen kannst, und keine Umwege gehen musst.
Abrobo C++, hat von euch schon jemand einen asm-Block in C++ erzeugt, unleserlicher geht es kaum.

Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: C ist "freier" als Pascal
Da muss man dazu sagen, es gibt ja keinen unterschied zwischen Zeichen oder Zahlen. Die einzige Situation in der man davon unterscheiden möchte ist eventuell falls man den + Operator für Char Pointer (Strings) und Chars überläd, da es bei einem Zeichen eine Konkatination sein sollte, und bei einer Zahl der Zeiger inkrementiert wird. Das sollte es aber nie in C geben, daher ist eine Unterscheidung zwischen Char und Byte rein didaktisch relevant. Genauso wie die Unterscheidung Zwischen Boolean und Zahlen. Und oftmals stört es mich schon dass ich bei Pascal jedesmal LongBool(Intexpr) schreiben muss für If abfragen, oder dass ich Ord(CharExpr) schreiben muss um einen Char in Byte zu konvertieren.Mathias hat geschrieben:Freiheit ist schön, ist mit char in C/C++ ein Zeichen oder ein Zahl gemeint. Bei Pascal ist dies eindeutig, da man Byte oder Char nimmt.
Wie gesagt die Bewertung ist jedem selbst überlassen, ich habe aber auch ein extremes Beispiel gewählt, aber die For Syntax von C hat tatsächlich einige Vorteile die ich in Pascal manchmal vermisse.Mathias hat geschrieben:Man ist richtig frei so richtig unleserlich zu Coden.
Das verstehe ich nicht. Assembler hat weder Mehrfachvererbung (immerhin hat ASM nicht mal Klassen), oder Templates oder Typerkennung.Mathias hat geschrieben:Kann man mit Pascal auch, mit einem asm-Block.
Mathias hat geschrieben:Abrobo C++, hat von euch schon jemand einen asm-Block in C++ erzeugt, unleserlicher geht es kaum.
Code: Alles auswählen
_asm{
COMMANDS
}
Code: Alles auswählen
asm
COMMANDS
end;
Apropos, das wird nicht Abrobo geschrieben

-
- Beiträge: 463
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Re: C ist "freier" als Pascal
Ich habe jetzt nur den ersten Kommentar (Dr. Axel Kemper, Space GmbH, Hannover) gelesen.So steht es in diesem Artikel geschrieben (https://www.computerwoche.de/a/fuer-die ... ft,1138326).
Derart geballter Unsinn kombiniert mit Ahnungslosigkeit ist schon eher selten. Ich denke, die Seite kann man abhaken...
edit: Rätsel gelöst: Datum des Artikels: 01.02.1991



-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: C ist "freier" als Pascal
Der Freiheit von C verdanken unzählige Viren und Trojaner ihr Leben. Was wäre ein Schreibprogramm ohne Pufferüberläufe, durch die man beliebigen Code aus einer Datei in den ausführbaren Speicherbereich schieben kann? Oder ein Browser ohne Stringbegrenzung, durch die man mit dem Aufruf einer Webseite ausführbaren Code über die URL einschleusen kann?
Was waren wir immer genervt, wenn Basic oder Pascal gemeckert haben, dass der Arrayindex mal wieder ausserhalb des definierten Arrays liegt. Oder dass die Zeichenkette mal wieder länger als erlaubt ist. Bei C - drauf gschissen, Speicher ist für alle da.
Ja, man hat sicher viele Feiheiten. Aber wie das mit Freiheiten ist, man muss halt damit umgehen können.
Was waren wir immer genervt, wenn Basic oder Pascal gemeckert haben, dass der Arrayindex mal wieder ausserhalb des definierten Arrays liegt. Oder dass die Zeichenkette mal wieder länger als erlaubt ist. Bei C - drauf gschissen, Speicher ist für alle da.
Ja, man hat sicher viele Feiheiten. Aber wie das mit Freiheiten ist, man muss halt damit umgehen können.
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: C ist "freier" als Pascal
Das einzige, was ich an C++ praktischer als an Pascal finde, ist der ++ Operator. Statt "Inc(i);" kann ich dann "i++;" schreiben, was schneller zu tippen ist. Aber das braucht man an den wenigsten Stellen. Ich nutze sowieso viel öfters for- als while-Schleifen.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: C ist "freier" als Pascal
Also eine Programmiersprache die nichtmal ein "Byte" kennt ist mir unheimlich....
es gibt dafür vorzeichenbehaftete Ascii Character, naja wer die wohl braucht...
C hat auch "einige" (wenige) gute Dinge die ich in Pascal vermisse:
Die Bitdefinitionen finde ich supi, die gibts in Pascal nicht.
Geht natürlich mit ausmaskieren genauso.
und auch das Schlüsselwort "static" ==> globale Variablen nur innerhalb der Funktion selbst verfügbar
finde ich ganz hervorragend, leider noch nicht in Pascal gefunden.
Aber das Wort "Freiheit" ist ja völlig fehl am Platze.
Für mich ist und bleibt "C" Chaotisch...

es gibt dafür vorzeichenbehaftete Ascii Character, naja wer die wohl braucht...

C hat auch "einige" (wenige) gute Dinge die ich in Pascal vermisse:
Die Bitdefinitionen finde ich supi, die gibts in Pascal nicht.
Geht natürlich mit ausmaskieren genauso.
und auch das Schlüsselwort "static" ==> globale Variablen nur innerhalb der Funktion selbst verfügbar
finde ich ganz hervorragend, leider noch nicht in Pascal gefunden.
Aber das Wort "Freiheit" ist ja völlig fehl am Platze.
Für mich ist und bleibt "C" Chaotisch...
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: C ist "freier" als Pascal
Beim Arduino musste ich es so kompliziert machen:Abrobo C++, hat von euch schon jemand einen asm-Block in C++ erzeugt, unleserlicher geht es kaum.
Code: Alles auswählen
_asm{ COMMANDS }
Code: Alles auswählen
asm("lds r24, (wert) \n\t"
"rol r24 \n\t"
"sts (wert), r24 \n\t");
Code: Alles auswählen
_asm {
lds r24, (wert)
rol r24
sts (wert), r24
}
Das muss ich zustimmen, das ist bei C/C++ flexibler, man kann auch andere Schritte ausser 1 machen.Wie gesagt die Bewertung ist jedem selbst überlassen, ich habe aber auch ein extremes Beispiel gewählt, aber die For Syntax von C hat tatsächlich einige Vorteile die ich in Pascal manchmal vermisse.
Aber dafür ist die Schreibweise um so komplizierter.
Übrigens konnte dies sogar schon GW-BASIC.

Wen ich die Bereichsprüfung bei Lazarus abstelle, kann ich auch über die Array schreiben. Das gibt die schönen SIGSVSs.Was waren wir immer genervt, wenn Basic oder Pascal gemeckert haben, dass der Arrayindex mal wieder ausserhalb des definierten Arrays liegt. Oder dass die Zeichenkette mal wieder länger als erlaubt ist. Bei C - drauf gschissen, Speicher ist für alle da.
auf dies kann ich verzichten.Das einzige, was ich an C++ praktischer als an Pascal finde, ist der ++ Operator. Statt "Inc(i);" kann ich dann "i++;"
Das mit dem static würde ich in Pascal auch gut finden, gegenwärtig muss man immer mit const arbeiten, was ein bisschen unlogisch ist.und auch das Schlüsselwort "static" ==> globale Variablen nur innerhalb der Funktion selbst verfügbar
finde ich ganz hervorragend, leider noch nicht in Pascal gefunden.
Dies ist auch ein Vorteil, welches Java hat, obwohl ich kein Freund von Java bin.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: C ist "freier" als Pascal
Ja genau, es gibt eine Schutzverletzung. Und üblicherweise schmiert Dir Dein Programm ab.Mathias hat geschrieben:Wen ich die Bereichsprüfung bei Lazarus abstelle, kann ich auch über die Array schreiben. Das gibt die schönen SIGSVSs.
Bei C wird dann der Rest einfach in den ausführbaren Speicher geschrieben, und mit etwas RE setzt Dir der Virus eine Sprungadresse genau an eine Stelle im Programm, die demnächst ausgeführt wird, und schon wird der Viruscode anstelle Deines Programms ausgeführt.
Das klappt seit mindestens 25 Jahren mit Webbrowsern, Office-Programmen, Bildprogrammen, Audio- und Videoplayern. Viele der Viren und Trojaner der letzten Jahrzehnte wären schlicht nicht möglich gewesen, wenn C nicht so "frei" wäre.
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: C ist "freier" als Pascal
Und das Tolle ist: Das erkennt kein AntivirenprogrammTimm Thaler hat geschrieben:Bei C wird dann der Rest einfach in den ausführbaren Speicher geschrieben, und mit etwas RE setzt Dir der Virus eine Sprungadresse genau an eine Stelle im Programm, die demnächst ausgeführt wird, und schon wird der Viruscode anstelle Deines Programms ausgeführt.

Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: C ist "freier" als Pascal
Irgendwas muss ja dies auslösen, somit liegt es am Programmierer zu überprüfen, ob es nicht zuviel Daten für eine Array hat.Bei C wird dann der Rest einfach in den ausführbaren Speicher geschrieben, und mit etwas RE setzt Dir der Virus eine Sprungadresse genau an eine Stelle im Programm, die demnächst ausgeführt wird, und schon wird der Viruscode anstelle Deines Programms ausgeführt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- kupferstecher
- Beiträge: 431
- Registriert: Do 17. Nov 2016, 11:52
Re: C ist "freier" als Pascal
Was meinst du damit? Kannst du ein (C-) Beispiel geben?siro hat geschrieben:Die Bitdefinitionen finde ich supi, die gibts in Pascal nicht.
Wird SIGSVC nicht vom Betriebssystem geworfen? Also nur, wenn man den für das Programm reservierten Speicherberich verlässt. D.h. bei deaktivierter Bereichsprüfung hast du die gleiche Anfälligkeit wie unter C.Timm Thaler hat geschrieben:Ja genau, es gibt eine Schutzverletzung. Und üblicherweise schmiert Dir Dein Programm ab.Mathias hat geschrieben: Wen[n] ich die Bereichsprüfung bei Lazarus abstelle, kann ich auch über die Array schreiben. Das gibt die schönen SIGSVSs.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: C ist "freier" als Pascal
Mann muss zuerst Pascal dafür richtiger definieren. Turbo Pascal ist schon freier als altmodisch Pascal (wie zb das Pascal wogegen Kernighan sein Rant "Why Pascal is not ..." schrieb), und Delphi ist noch freier, und mit D2006 (for..in duck typing) und D2009 noch mehr ({$pointermath on}.compmgmt hat geschrieben:So steht es in diesem Artikel geschrieben (https://www.computerwoche.de/a/fuer-die ... ft,1138326). An sich bietet der Artikel schon einige gute Informationen, aber was genau soll denn unter C "freier" sein, als unter Pascal? Etwa dass Pascal sehr streng ist und so eventuelle Fehler schon während des Kompilierens erkennt, die in C nicht erkannt werden?Ein Programmierer, der von Pascal nach C wechselt, wird schon nach kurzer Zeit die neue Freiheit entdecken und nutzen. Umgekehrt fühlt sich ein C-Programmierer nicht selten von anderen Sprachen in seiner Kreativität eingeschränkt.