# OBERON Component Pascal für die Automatisierung



## Maagic7 (22 September 2019)

Oberon Component Pascal, darüber bin ich gestolpert, als ich nach
weiteren Alternativen zu Delphi, Lazarus Free Pascal suchte.

KUrz ausporbiert und erst mal gedacht, was für ein Sch...!
Aber weit gefehlt, eher das Gegenteil ist der Fall.
State of the art programming! Next level software development!

Oberon Component Pascal, was ist das?

Das ist die aktuelle Entwicklung in der Reihe: Pascal, Modula, Oberon, component Pascal

Entwickelt wurde das ganze an der ETH Zürich um das Team von Niklaus Wirth, dem 
"Erfinder" von Pascal. Mittlerweile ausgegliedert in ein Firma: Oberon Micro Systems.

Oberon stand praktisch Pate für alle als modern geltenden Programmiersprachen
darunter: 
Java, C#, Go, D, Swift und wahrscheinlich noch viele mehr!
Einer der Chef Entwickler von Oberon war dann bei MS an der Entwicklung von NET beteiligt.
D.h. Techniken von Oberon stecken in fast allen momentanen Mainstream Programmiersprachen.
Go soll mehr oder weniger OBERON mit C-Syntax sein!


Was macht das für die Automatisierung interessant!

1. Die Syntax von SCL ist fast 1:1 identisch mit OBERON.
   D.h. wer SCL beherrscht, beherrscht OBERON.
   (OBERON kann aber mehr als SCL)

   Selbst die Technik der VAR_IN, VAR_OUT, VAR_InOut wie in SCL steckt 1:1 so in OBERON


2. Einfache Syntax, Type safe, modular.
   Objectorientierung, Vererbung ...

3. Open Source, Linux, Windows

4. Die BlackBox genannte Entwicklungsumgebung mit IDE, Framework und Compiler hat nur 5,44MB
   ja wirklich MegaByte nicht GigaByte.
   Damit kann man diese problemlos auf seinen Anlagenrechner, HMI-PC vor Ort haben.
   Notfalls lässt sich das alles in wenigen Sekunden Online übertragen.



Was benötigt man?

1. Die Black Box Entwicklungsumgebung    

http://blackboxframework.org

2. evtl. die Component Pascal Collection

http://www.zinnamturm.eu

3. evtl. ein paar Infos und Anleitungen



am besten erst das hier mal lesen:
BlackBox Component Builder For Scientists and Engineers
https://www.pas.rochester.edu/~skulski/Presentations/BB_Class.pdf


https://de.wikipedia.org/wiki/Component_Pascal


https://de.wikiversity.org/wiki/Kurs:Programmieren_in_Oberon


PDF FH Braunschweig - Fachbereich Informatik
Moderne Programmiertechniken –Eine Einf ¨uhrung mit Oberon

https://public.ostfalia.de/~ruediger/lehre/Inf/Inf12Txt.pdf

Oberon Micro System, Zürich/Schweiz

http://www.oberon.ch/company.html


Community Forum
https://community.blackboxframework.org


Worüber stolpert man bzw. welche Probleme tretem auf?

1. Component Pascal erzeugt von sich aus keine klassischen .exe Files und .dll
   Dies wird aufgrund des Konzepts von Oberon eigentlich auch nicht benötigt.
   Da Oberon Modular compiliert, liegt jedes Modul für sich als Maschinencode vor und
   kann von jedem anderen Oberon Modul aufgerufen werden. Programmiert man nur in Oberon,
   kann man getrost auf DLLs verzichten.
   Einzelne Module werden, wenn sie angefordert werden nachgeladen und per late-binding bekannt
   gemacht.
   Es gibt jedoch die Möglichkeit, Oberon Projekte als direkte .exe zu linken. Sieh dazu das
   BlackBox Community Form

https://community.blackboxframework.org/viewtopic.php?f=32&t=223&p=1460&hilit=exe#p1460

2. 64-Bit mit Component Pascal
   im Moment erzeugt BalckBox nur 32-Bit code. Grund dafür ist lt. des Forums, dass der
   Garbage Collector komplett geändert werden muss. Garbage Collector ist die Speicherverwaltung
   für das dynamische laden und entladen von Modulen zur Laufzeit, bzw. das automatische aufräumen
   des Speichers.
   Das ist aber eher unproblematisch, da normale Programme von 64-Bit eh nicht profitieren und
   man mit Oberon 32-Bit wohl die vollen 4GB Speicher adressieren kann.

3. Die IDE wirkt etwas rudimentär, verlichen mit einem Visual Studio oder Delphi und Lazarus.
   Was aber nicht unbedingt ein Nachteil sein muss. Man kommt extrem schnell damit zurecht.

4. Wo fängt ein Oberon Programm an, bzw. wo startet es?
   Es gibt keinen klassischen Einsprungpunkt bzw. eine klassiche Main{}.
   Durch den Modularen Aufbau kann jedes Modul wenn nötig für sich gestartet werden.
   Für den Test in der IDE macht das absolut Sinn.
   D.h. ich kann ein einzelnes Modul compilieren und direkt mit Parametern aus der IDE aufurfen.
   Somit kann ich mein Programm erst mal starten wo ich will.
   Später muss natürlich das Startmodul für die eigene Anwendung dem Oberon Laufzeitsystem,
   d.h. dem component-Loader übergeben werden.


----------



## Blockmove (22 September 2019)

Würdest du Oberon wirklich im Bereich Automatisierungstechnik einsetzen?
Bei uns stehen Anlagen 20 Jahre und teilweise noch länger.

Ich denke dass da Lazarus vielleicht langfristig doch die bessere Wahl ist.

Was die Sprache angeht, finde ich Oberon durchaus interessant.

Gruß
Blockmove


----------



## Maagic7 (22 September 2019)

Ja, das überleg ich wirklich und zwar genau, weil Maschinen so lange im Einsatz sind.

Die Technik von OBERON wird uns mit Sicherheit in anderer Form bei Industrie 4.0 noch
beschäftigen veilleicht aber mit anderer Syntax (wenn sich die C Fetischisten druchsetzen).


Oberon und Component Pascal ist wohl in der Wissenschaft voll im Einsatz.
Überall dort wo auch noch ALGOL, FORTRAN und MODULA im Einsatz ist.

Man findet im Internet einiges von den Russen, da ist das wohl bei Atomkraft und Weltraum ein Thema.

Am CERN gibt es z.B den OBERON Day.

Man kann davon ausgehen, dass es das noch lange geben wird bzw. auch wieder einen Nachfolger.
Modula2 Code kann man mit wenigen Änderungen anscheinend immer noch verwenden.
Es gibt diverse Konverter von FORTRAN, MODULA nach OBERON.


Dann gibt es noch Projekt OBERON, das ist ein Einplatinenrechner mit FPGA und komplett mit OBERON programmiert.
Damit kann man anscheinend eigenen OBERON Code auch direkt in die FPGA Logik gießen.
Was natürlich für Indsutrieanwendungen perfekt wäre. Z.B. Controller für Frequenzumrichter oder 
Feldbusprotokolle direkt in OBERON geschrieben und auf FPGA Controller laufen lassen.


----------



## Blockmove (23 September 2019)

Hauptvorteil im IoT-Umfeld dürfte wohl die recht strikte Typisierung und die Plattformunabhängigkeit sein.
Da sich da aber viel um Netzwerk und Web dreht, denke ich, dass da eher Javascript (Node.js) der Standard werden wird.
Mit all den Nachteilen für uns SPSler.
Aber vielleicht finden sich ja einige Konzepte aus Oberon in einem SCL 4.0 wieder


----------



## Marcel27 (1 September 2021)

https://www.mobatec.nl/web/products/mobatec-modeller/ is written in BlackBox (Oberon) Component Pascal. So do not hesitate to use BlackBox.


----------



## Maagic7 (2 September 2021)

So wie das aussieht haben das schon einge kapiert! Oberson Systems Schweiz selbst hat das System ja auch für Industrieanlagen Software im Einsatz. Die Technik unter der Haube ist richtungsweisend! Nicht umsonst hat Java, NET, Go... grundlegende Konzepte von Oberon übernommen. Was fehlt ist eine zeitgemäße Entwicklungsumgebung.


----------



## JesperMP (2 September 2021)

Maagic7 schrieb:


> 1. Die Syntax von SCL ist fast 1:1 identisch mit OBERON.
> D.h. wer SCL beherrscht, beherrscht OBERON.
> (OBERON kann aber mehr als SCL)
> 
> Selbst die Technik der VAR_IN, VAR_OUT, VAR_InOut wie in SCL steckt 1:1 so in OBERON


Ok, du hast meine Interesse erweckt.

Ob ich es für Maschinen Automatisierungszwecke verwenden wurde, denke ich nicht. Allerdings nicht in die erste Reihe.
Aber für die Automatisierung von kleine Aufgaben die mir in den Alltag helfen wurde, absolut !


----------

