Der Neue

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

Previous topic - Next topic

0 Members and 1 Guest 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

Theo Gottwald

#26
@Norbert Spoerl Eigentlich ist mir der Pump auuch egal aber ich habe gesehen dass der Stan Durham da aktiv ist, kannst du dem Mal eine Nachricht senden er soll sich hier anmelden oder mir eine Mail senden?
Das wäre nett, da ich nicht rein komme sehe ich dem seine Mailadresse nicht.

Ich will paar Sachen wegen seinen Datentypen mit Ihm diskutieren.

Peter Salomon

@Theo #021
Danke für Deine Infos zu PBWin11.
Demnach sind es nur Überarbeitungen hinsichtlich der Stabilität und kaum neue Funktionen.

#022
Danke auch für die vergleichenden Untersuchungen bzgl. verschiedener Pascal-Varianten. Gib's sowas auch für BASIC, oder PowerBASIC im Vergleich zu anderen BASIC-Varianten?
Ich wollte auch mal vergleichsweise untersuchen (ggf. lassen), wie verschiedene BASIC-Varianten und andere Programmiesprachen den Code wie effektiv in Maschinensprache umsetzen ...

@Norbert #023
Die Richheimer-HP kenne ich auch - d.h. eigentlich nicht wirklich, da man dort ohne Anmeldung nichts sehen kann. Auch der von Dir zu letzt gepostet Link geht ohne Anmeldung nicht.

Hat jemand zu meinen Übersetzungen Einwände?
Link in http://www.ps-blnkd.de/AutoIt.htm#PowerBASIC

Grüsse aus Ahrensfelde

Peter Salomon
www.ps-blnkd.de

Norbert Spoerl

Hi Theo, habe vor 2 Tagen eine "private Nachricht" wegen Deinem Anliegen an Stan geschickt - bisher ohne Antwort.

Norbert Spoerl

Hi Peter,

hier ein Beitrag von JK vom Jan. 20205.
>>>
Hi all, as already announced here there will be a new compiler meant as a (currently limited) alternative and maybe future replacement for PowerBASIC.

My current situation still limits the time i can invest, so for a start i must limit the number of testers. I thought of asking the members of the former beta team first. I you are not a member of the beta team, but feel you must be among the first testers drop me a PM. There is no public download yet, don´t worry, everyone interested will get a chance for testing later. Please don´t ask all kinds of questions! I will tell more as things go on and time will come for all kinds of questions - but this time is not now.

Don´t expect too much, this is WIP and an alpha version. It is not a full blown compiler and linker all in one, it is a tool chain consisting of a code generator (my work), an assembler (minor changes by me) and a linker (e.g. link.exe by MS). The first step is generating assembler code from BASIC source code, this code gets assembled to one or more object files (.obj), which in a last step are linked to a final executable. This can be an .exe, a .dll or a .lib (static library) file conforming to Windows standards.

The assembler can assemble to 32 and 64 bit Windows and Linux executables. Currently i support only Windows executables.

MS´s link.exe + adjacent files are not redistributable, that is, i am not allowed to include it in my package. But on the other hand it is free and available by a free VC download. You can find the files you need (64 bit VC 22 version, Windows 10) in: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\... ,copy cvtres.exe, link.exe, lib.exe and all ms*.dll to \Assembler\Link32 and you are ready to go.

At current stage you will need my IDE for testing. Maybe there will be a standalone version in the future, but for the time being my IDE is the easiest way of handling all the messy details for me, so this is a requirement.

I´m not very happy with the name "JK-Basic", i´m not very creative finding names, so if you think you know a better name (not conflicting with existing ones), please tell me.

My first goal is to make core features and statements solid and stable. Future extensions are possible, but for the moment i don´t need suggestions, what else should be included and why, except i forgot to implement "really important" statements. I want a solid basis of what i have and afterwards we can talk about extensions and further development.
<<<

Und hier ein Beitrag vom 07.09.2025.
>>>
Maybe you remember the discussion about the name of my PowerBASIC replacement project, as a working name i choose "JKB", which is not an already registered trademark, so i think it is safe (legally) to use it.

After my retirement i had to move. I will become 65 in November this year and are in good shape and health. My mother is 89 now and never has seen a hospital from inside, so inheriting their gens i can hope for some years to come. One of my plans for these years is going public with and maintaining my 32/64 bit language, which syntactically is almost to 100% compatible to PowerBASIC, but a complete re-write and in some respect an expansion of it.

I hoped to be ready for this in summer this year, but moving to another place happens not as fast as i planned and expected. It is a small, lovely town, nearby where i was born. An old, charming, beautiful house, nearly 100 years old - i love it.The downside with old houses is, nothing is straight, even, plain or has 90 degree angles, Arranging your furniture is a real challenge, if the floor (a wonderful wooden floor) rises about 2 cm (nearly an inch!) towards the wall in the living room. By now i manged to install my kitchen and finally my desk with my computer setup, so i´m in play again - but by far not as far as i hoped to be.

In the meantime i could fix some problems including a bug (memory corruption) that almost drove me crazy. After long discussions with one of my test mates, finally the right idea came to my mind how to trap it. I have some of my projects compiling and running including object and COM stuff. I´m near but not yet there ...

So all i can ask for is your patience, i´m determined (and all of my tests so far show, i can do it) to publish a real 32/64 bit alternative for PowerBASIC, which (alas) seems to be come to an end. BASIC was the first computer language i learned, later i learned assembler and C/C++. After al those years to be honest, i still prefer BASIC, because human readability was not one of the first goals, when C was developed - it should be machine readable (easy to parse with the computer capacities back then). Well written BASIC code is much more readable and maintainable and as PowerBASIC shows, can easily stand the comparison to other modern languages.

BASIC is said to be "old-school" and for "beginners", because of the "B" in front of it. Maybe we should interpret the leading "B" as "Best ..."

Please stay tuned, there is more to come (definitely)
<<<