Der Neue

Started by Peter Salomon, July 10, 2025, 09:45:43 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Theo Gottwald

#15
Warum Compiler eine Syntaxprüfung brauchen

Liebe Norbert,
das Problem ist grundlegend: Ohne Syntaxprüfung würde der Compiler selbst instabil werden. Hier die Gründe:
1. Vermeidung von Systemabstürzen

     Wenn du die Syntaxprüfung abschaltest, erzeugt der Compiler ungeprüften Code – ein "logisches Wirrwarr". 
     Beispiel: Fehlende Klammern oder falsche Befehlsstrukturen führen zu unvorhersehbarem Maschinencode. 
     Folge: Der Compiler verarbeitet inkonsistente Daten → Absturz des gesamten Systems (z. B. Segmentation Fault, Speicherlecks).
     

2. Undefinierte Zustände verhindern

     Code ohne syntaktische Korrektheit bringt den Compiler in undefinierte Zustände. 
     Der Compiler weiß nicht, wie er den Code übersetzen soll → willkürliche Fehlverhalten (z. B. Endlosschleifen im Parser). 
     Ziel: Sicherstellen, dass der Compiler vorhersagbar und stabil läuft – nicht willkürlich.
     

3. Keine Alternative zur Korrektheit

     Es gibt keinen "Workaround": Entweder Code ist syntaktisch korrekt → er funktioniert. 
     Oder er ist fehlerhaft → er muss abgelehnt werden. 
     Kompromisse (z. B. "fehlerhaft aber trotzdem kompilieren") gefährden die Integrität des Compilers.
     

4. Syntaxprüfung ≠ "Schikane" für Nutzer

     Die Prüfung dient nicht primär, um Nutzer zu ärgern oder zu schützen. 
     Ihr Hauptzweck: Den Compiler vor sich selbst zu schützen. 
     Ein stabiler Compiler ist die Voraussetzung dafür, dass überhaupt zuverlässiger Code erzeugt werden kann.
     
Zusammenfassung in einem Satz
    Syntaxprüfung ist der "Notaus-Schalter" des Compilers: Sie verhindert, dass fehlerhafter Code den Compiler selbst zum Absturz bringt – denn ein instabiler Compiler nutzt niemandem.
     
Beim SPR zum Beispiel ist die Syntaxprüfung nicht getrennt von der Speed-Code Generierung.
Im Idealfall ist es so, dass bei der Code-Generierung eben unerwartete Zeichen auftreten und dann wird eine FM generiert.
Es gibt eigentlich - im Idelafall - keine separate Syyntax-Prüfung, die man abschalten könnte um das schneller zu machen.

Norbert Spoerl

Hi Theo,

nur zur Info, ich programmiere seit 1985, im Laufe der Zeit mit unterschiedlichen Sprachen, und kenne auch alle Deine aufgeführten Punkte zum Syntaxcheck. Okay, das mit den Syntaxdiagrammen kannte ich so noch nicht. Im Falle von JKBasic wird erst die Syntax geprüft, das Compilieren erfolgt danach. Von daher kann man annehmen, dass  der Check übersprungen werden könnte. Oder es geht aus irgendwelchen Gründen eben nicht.
Du hast doch von extrem großen Projekten und der Compilerzeit im Beitrag gesprochen.
>>>
𝑀𝑒𝑖𝑛 𝐶𝑜𝑑𝑒 𝑤𝑖𝑟𝑑 𝑚𝑖𝑡 𝑃𝑜𝑤𝑒𝑟𝐵𝑎𝑠𝑖𝑐 10 𝑣𝑜𝑛 𝑇𝑜𝑚 𝑖𝑛 ü𝑏𝑒𝑟 120 𝑆𝑒𝑘𝑢𝑛𝑑𝑒𝑛 𝑘𝑜𝑚𝑝𝑖𝑙𝑖𝑒𝑟𝑡 – 𝑑𝑎𝑠 𝑖𝑠𝑡 𝑠𝑐𝘩𝑜𝑛 𝑒𝑖𝑛𝑒 𝐿𝑒𝑖𝑠𝑡𝑢𝑛𝑔! 𝑀𝑎𝑙 𝑠𝑒𝘩𝑒𝑛, 𝑜𝑏 𝑎𝑛𝑑𝑒𝑟𝑒 𝑃𝑟𝑜𝑔𝑟𝑎𝑚𝑚𝑒 𝑑𝑎 𝑚𝑖𝑡𝘩𝑎𝑙𝑡𝑒𝑛 𝑘ö𝑛𝑛𝑒𝑛, 𝑑𝑒𝑛𝑛 𝑚𝑒𝑖𝑛 𝑃𝑟𝑜𝑗𝑒𝑘𝑡 𝑖𝑠𝑡 𝑤𝑖𝑟𝑘𝑙𝑖𝑐𝘩 𝑠𝑒𝘩𝑟 𝑘𝑜𝑚𝑝𝑙𝑒𝑥.
<<<
Da finde ich meine Überlegung nicht unlogisch. Und ich habe in meinem letzten Beitrag einen Fall genannt, wo ein Syntaxcheck nicht zwingend erforderlich ist. Eine solche  Option setzt natürlich ein verantwortliches Handeln des Programmierers voraus.
Aber egal, wir müssen nicht länger darüber reden - ist eh nur theoretischer Natur.

Ansonsten freue ich mich jetzt schon auf die Reaktionen der PB-Gemeinde, wenn JKBasic allgemein zugänglich sein wird. Problematisch sehe ich die Deaktivierung des amerikanischen PB-Forums. Nur aus diesem Grund wird noch einmal eine nicht geringe Anzahl an PB-Usern eine Alternative suchen und PB den Rücken kehren. Ob sie dann nach Start JKBasic zurück kommen, ist fraglich. Das war auch die Intension für meinen 1. Beitrag in diesem Thread.

LG
Norbert   



Peter Salomon

#17
@Theo <#13>
Ja, so wird es sein, mein XP kann Unicode nicht lesen. Auf'm Handy gehts auch nicht, weil das Teil zu alt ist und es keine Updates dafür mehr gibt ... nur auf dem Linux-PC geht es, aber den nehme ich nur selten, weil der Startvorgang immer eine Ewigkeit dauert.
Bei mir gibt es nur ein "Insert Image", wo auch eine URL angegeben werden muß, wo das Bild liegt. Also kann ich auch gleich ein Link auf meine HP einfügen ...
Sei's drum - irgendwie weiß man sich immer zu helfen.

@Norbert <#16>
1985 bin ich zwar noch nicht beim Programmieren gewesen, aber schwerpunktmäßig in der HW-Entwicklung. Kannst Du alles nachlesen auf meiner HP -> www.ps-blnkd.de.
Meine Programmierversuche sind in -> http://www.ps-blnkd.de/AutoIt.htm ausführlich dokumentiert. Noch nicht enthalten ist der Weg zu PowerBASIC.
Daß diese - aus meiner Sicht - geniale IDE nun plötzlich nicht mehr seitens des Herstellers unterstützt wird, ist zwar sehr ärgerlich, ändert aber nichts an der Tatsache des Bestehens der SW.
Je länger ich mich damit beschäftige, umso mehr bin ich der Überzeugung: das isses!
Sicherlich gibt es, oder soll es demnächst, bald oder wann auch immer irgendwelche Alternativen dazu geben. Aber bei über 30 Jahren Entwicklung, dabei gesammelten Erfahrungen, die immer wieder in neuen Versionen Eingang fanden, so daß in der 10er Version nun über 1200 Befehle auf über 2000 Seiten Doku ausführlichst beschrieben (die Referenzdatei hat "nur" ~700 Seiten) zur Verfügung stehen. Dabei ist die Compiler-Größe mit 1,5 + 0,8MB extrem klein und läuft auf jedem Windows-PC - naja, vielleicht nicht mehr auf den ganz alten (Win3.1) und möglicherweise auf den "neuzeitlichen" 10er und 11ern vielleicht auch nicht, weil deren überzogene "Sicherheitsbarieren" das verhindern.
Das soll erstmal jemand nachmachen!
Zum Überblick über die Leistungsfähigkeit von PBWin10 hier mal ein Auszug aus der (in Arbeit befindlichen) deutschen Version der diesbezüglichen Referenzdatei -> .
Die roten xxx-Seitenangaben sind die, die noch nicht bearbeitet sind.
Gedacht ist das für diejenigen, die vielleicht schon mal was von PowerBASIC gehört haben, aber "mainstream"-mäßig ablehnend dem gegenüberstehen.

@Theo
Du hattest mal was von PBWin11 geschrieben - hast Du diese wirklich letzte Version? - Welche Unterschiede/Ergänzungen gibt es dort? 
Hattest Du damals noch Kontakt zu Kirschbaum-Software - was gehörte alles zu deren Lieferumfang?

So viel für heute ...

Grüsse aus Ahrensfelde

Peter Salomon
www.ps-blnkd.de

Peter Salomon

Leider wird der Link zu der PDF-Datei "Auszug aus der PBWin10-Referenz" nicht abgebildet - warum?
Meine anderen Links gehen doch auch!

Grüsse aus Ahrensfelde

Peter Salomon
www.ps-blnkd.de

Norbert Spoerl

Hi Peter,
vorab, mit PROFAN habe ich vor vielen Jahren auch gearbeitet.
Noch einmal zur INFO. Der Befehls- und Funktionsumfang von PBWin 10 wird durch JKBasic fast zu 100 % umgesetzt werden, nur bei den DDT bezogenen Funktionen bin ich mir nicht sicher, bzw. wird wohl noch etwas dauern. D.h., Du kannst die Handbücher von PB für JKBasic weiter benutzen. Vermutlich wird es später Ergänzungen zum Sprachumfang von PB PBWin 10 geben. Damit wird PB in gewisser Wiese weiterleben und sich weiter entwickeln. Die letzten Versionen von PB erzeugen 32 bit Code. JKBasic kann wahlweise 32 oder 64 bit Code erzeugen. Das mit den 32 bit wird in einigen Jahren aussterben, so wie es zuvor den 16 bit Abwendungen erging. Mit einem XP-PC kommst Du allerdings nicht weit. JKBasic wird vermutlich nicht darauf laufen.
Gruß
Norbert

Peter Salomon

@Norbert <#19>
Es freut mich außerordentlich, daß sich noch ein "Sachverständiger" zu PowerBASIC hier zu Wort meldet.
Leider habe ich zu JKBasic noch nichts gefunden - wo sind die Download-Quellen und die Doku, damit ich mir selbst mal ein Bild machen kann? - 64Bit-Code wäre natürlich schon vorteilhaft - wenn's denn unbedingt z.B. aus Performance-Gründen sein muss ...

Bzgl. des Problems mit dem PDF-Link hier im Forum habe ich mir was einfallen lassen - auf -> http://www.ps-blnkd.de/AutoIt.htm  gib's jetzt ein Update, d.h. eine Ergänzung zu PowerBASIC. Dort sind die Links problemlos aufrufbar!

Grüsse aus Ahrensfelde

Peter Salomon
www.ps-blnkd.de

Theo Gottwald

@Peter Salomon
Powerbasic 11 gab es nur für die Beta-Tester, da war ich dabei.
Die wesentliche Änderung ist dass es mein Program kompilieren kann,
PB 10 stürzt dabei ab und findet die kompilierte Datei nicht.
Und es kompiliert etwas schneller.
Die spezifischen neuen Features wie die Auto-Dim Arrays sind gefährlich da sie zu Abstürzen am Programende führen - das war nie richtig fertigentwickelt.
Trotzdem nehme ich eben nur Version 11 .... allerdings geht da der Debugger nicht also Single-Step.
Geht bei meinem Program aber sowieso nicht da zu viele Assembler-Teile.

Theo Gottwald

#22
@Norbert Spoerl Das mit den Syntaxdiagrammen ist sehr wichtig, dadurch hat es eine enorme Kompilierschnelligkeit.

50.000 Zeilen/Minute auf einem 12 MHz CPU ist schon eine Wort.

Ein gut gemachter Compiler - der genau so arbeitet, wäre im Nu fertig.
Ich denke dass es sich lohnt mehr nach (Free-)Pascal/Modula zu schauen, da wird immer mehr die Musik spielen, weil das moderne Zeugs ist alles nicht richtig zuverlässig.

Das ist es eben nur wenn man exakt arbeitet. Das hat man früher gelernt mit den 8 Bit COmputer.
Und da gibt es nur eine Möglichkeit. Bei Compilern sind das Syntaxdiagramme.
Das wird auch keine KI so schnell ändern.

Eine konkrete Tabelle mit Kompiliierungszeilen pro Minute belegt meine Aussage:

## Kompiliergeschwindigkeit historischer Pascal-Compiler (ca. 1990)

| Compiler | Geschwindigkeit (Lines/Min) | Hardware | Bemerkungen |
|----------|----------------------------------|----------|-------------|
| **JPI TopSpeed Pascal** | **30.000-50.000** | 80286 @ 12MHz | Rekordhalter, extrem schnell |
| **Turbo Pascal 5.5**    | 15.000-25.000    | 80286 @ 12MHz | Sehr schnell, Ein-Pass-Compiler |
| **Borland Pascal 7.0**  | 10.000-20.000    | 80386 @ 33MHz | Etwas langsamer durch mehr Features |
| **Microsoft Pascal**    | 5.000-10.000      | 80286 @ 12MHz | Langsamer, aber stabil |
| **IBM Pascal/2**        | 3.000-8.000      | 80286 @ 12MHz | Sehr gründlich, aber langsam |

## Moderne Compiler im Vergleich (geschätzt)

| Compiler | Geschwindigkeit (Lines/Min) | Hardware | Bemerkungen |
|----------|------------------------------|----------|-------------|
| **Free Pascal 3.2+** | 100.000-300.000+ | i7 @ 3.0GHz | Sehr schnell, mehrstufig |
| **Delphi (modern)** | 80.000-200.000+  | i7 @ 3.0GHz | Schnell, mit umfangreicher Code-Analyse |
## Wichtige Anmerkungen:

- **TopSpeed Pascal** war legendär für seine Geschwindigkeit - es gab Berichte von 40.000+ Zeilen/Minute auf einer 286-Maschine
- **Turbo Pascal** war berühmt für sein "Compile-Go" Prinzip - oft in unter 1 Sekunde für kleine Programme
- Die Zahlen sind **relativ** zu verstehen - moderne Hardware macht direkte Vergleiche unmöglich
- Komplexität des Codes beeinflusst die Geschwindigkeit erheblich

Der Geschwindigkeitsvorteil von TopSpeed war so signifikant, dass Entwickler, die große Projekte (50.000+ Zeilen) bearbeiteten, oft speziell auf TopSpeed wechselten, um Wartezeiten von mehreren Minuten (bei anderen Compilern) auf wenige Sekunden zu reduzieren.

Norbert Spoerl

Hi Peter,
Deine Seite mit den Links konnte ich bereits in dem Post 17 aufrufen.
JKBasic, wobei der Name noch nicht 100%ig feststeht (Arbeitstitel = JKB), ist in einer finalen Entwicklungsstufe und im Beta-Test-Stadium. Informationen dazu sind noch recht rar. Auf der Seite http://pump.richheimer.de/index.php gibt es Informationen dazu, allerdings nur lesbar für Beta-Tester. Das JK steht für Jürgen Kühlwein. JK hatte einige Posts zu dem Thema im alten (ehemals offiziellen) PB-Forum gesetzt. Hier der Link.
https://forum.powerbasic.com/forum/user-to-user-discussions/third-party-addons/838286-jk-ide-version-2-5-and-a-new-basic-compiler-for-32-and-64-bit-is-under-construction
Wenn Du geblockt wirst, hier ist eine Anleitung, wie man die Seite noch einsehen kann.
http://pump.richheimer.de/showthread.php?tid=71&pid=457#pid457
Und hier noch ein Post, den Du direkt sehen müsstest.
http://pump.richheimer.de/showthread.php?tid=70
Gruß
Norbert

Theo Gottwald

Hallo @Norbert Spoerl
wenn du in das Richheimer Forum rein kannst frag den RIchheimer mal warum ich nicht reingelassen werde.

Norbert Spoerl

Hi Theo,
unter "How to register with PUMP / become a PUMP member" steht Folgendes:
>>>
You are welcome to join PUMP (PowerBasic Users Meeting Point) by registering. PUMP is reserved for active (=contributing) users already registered at PowerBASIC. You are required to use your real name, in the exact spelling you are registered with PowerBASIC.com. After you have submitted the registering form I will check the name with the PowerBASIC forum and activate your account, if the above requirements are met. Otherwise the application for membership will be deleted without notification.
Please note that there is no formal right for getting access to PUMP.
<<<
Der Grund ist also, weil Du zuvor aus dem PB-Forum rausgeflogen bist. Das PUMP-Forum war praktisch nur für den Notfall, wenn das PB-Forum temporär oder so wie jetzt endgültig nicht zur Verfügung steht. Albert und mehrere registrierte Nutzer sind dabei, als Fortsetzung des PB-Forums, ein neues PB-Forum einrichten, vermutlich unter dem Namen PBUsers.org. Wenn es soweit ist, kannst Du Dich bestimmt anmelden.
VG
Norbert