This project is cool as hell. I really appreciate that it has very straightforward instructions and takes no time to get up and running, it's just a git clone and an install command.
The only quirk I ran into is that when I ran graphical programs, I would get a full-screen window with a blank prompt; I needed to move that window to another workspace in order for the running program to be displayed. The IDE seems to get smushed into the bottom corner of the screen in KDE and gnome for some reason (which I could work around by toggling windowed mode with alt+enter and then dragging the window to resize), but it works fine in i3.
Between discovering this and finally getting around to trying the Factor language, I'm afraid I'm going to be very unproductive on my side projects for a while..
Thank you very much. I love Oberon for its simplicity and structuredness, and I find it best-suited for all programming tasks. I even use it in web-programming. So when I found out about Oberon, I noticed that there is nothing that I can easily install to start programming in it. I tried XDS, OO2C, VOC, BlackBox, and everything was not that I wanted. It was nothing as simple as, for example, Free Pascal, where you just download and use it. So I made Free Oberon. I switched several times from SDL 2 to Allegro 5 and 4 and back (with a lot of recoding on each step), also switched compilers from VOC to BlackBox and finally Ofront+.
I'm planning to substitute it with my own Oberon compiler at some point, so I read everything about compiler construction and do Oberon experiments a lot.
Could you please describe the issue with the full-screen a bit more? You can create an "issue" in the FreeOberon Github repo. I think it would be possible to fix it. Are you using two monitors?
I learned about Oberon by experimenting with the Acme editor (which borrows heavily from Oberon) and from learning about its influences on the Go language. The language doesn't "look modern", but it does seem very simple, and it seems really fun to learn. And I very much enjoy the retro feel of it.
A bonus for me personally is that I happen to be learning Russian, and there's a fair bit of documentation and videos that I can use for immersion learning, which is a lot of fun.
I will be sure to help with the full-screen issue soon.
Every time Oberon comes up, I wonder how it would have done if it had had a "normal" graphical interface, and some aesthetically minded person such as Keith Ohlfs or Susan Kare to make it attractive by the standards of the average user/developer.
Good enough when placed against many UNIX windows managers, or the developer beloved Plan 9 and Inferno GUIs.
It failed because like Xerox, it stayed mostly inside ETHZ walls, a few European universities and zero industry interest, too much focused on building UNIX clones.
I remember Oberon. My take is that it failed to become a mainstream language because we were using C to write system tools and browsers, Visual Basic and Visual C++ to write Windows apps and PHP and Java to write web apps. Those filled most niches.
Delphi and the Pascal languages were on a downward spiral of popularity. C was the incumbent. PHP was easy to install and solved a problem that most developers had: write a web app quickly. Java and the Visual languages were backed by big companies. Oberon was not. It was a curiosity at best. I remember other languages from back then: Eiffel and Modula 3. They resurface sometimes in HN posts.
It definitely is not normal enough. It's a whole operating system, after all.
> It failed because like Xerox, it stayed mostly inside ETHZ walls, a few European universities and zero industry interest, too much focused on building UNIX clones.
Not really. It failed because Oberon was not a great language even in the 2000-s. Right now it's not even good enough for teaching purposes.
As an inspiration for some of the ideas? Maybe. As a language in itself, Oberon was crappy even at that time.
From the very start, Go was utterly practical, designed to be used for actual programming, and not PhD theses.
So compared to Oberon, Go had hash maps from the start. It didn't have the SCREAMING PROCEDURE/RECORD/VAR case-sensitive keywords, Go had multiple return values for error handling from the start, better namespacing support, variable declaration in-place, full support for UTF-8 for strings, etc.
And of course, Go has lightweight threads and channels, making it a great language for servers.
If you are stuck with a tunnel vision of the 1992's version of Oberon, yeah.
Except that Active Oberon from 1996, sorted out most of those cases.
Hash maps don't need to be built-ins, as proven in many languages.
Active Objects take care of lightweight threads and channels.
Oberon, the OS, was also good enough for Go's hero Rob Pike to implement ACME and RIO on the same UX principles, re-use Oberon-2 (yet another version you ignored) method syntax, and Oberon's SYSTEM package as unsafe.
Screaming keywords, only an issue when someone doesn't use an editor with automatic capitalization, only an issue for Notepad-like users.
We're talking about Oberon here, not about its clones. And I based my reply on Oberon-2. It definitely sucked.
> Hash maps don't need to be built-ins, as proven in many languages.
Except Oberon doesn't have generics.
From the very beginning, Go included very practical "magic" generic functions: append, len, cap, delete. Along with slices, they allowed Go to flourish without generics.
Oberon only has LENGTH.
> re-use Oberon-2 (yet another version you ignored) method syntax
Here's Go: "func (c Type) DoSomething(hello, world string) (int, error)".
Here's Oberon: "PROCEDURE (c: Type) DoSomething(hello, world: STRING): INTEGER;" (error handling is for wimps).
It is similar, but not the same. Go also has structural polymorphism, which Oberon lacks.
> Screaming keywords, only an issue when someone doesn't use an editor with automatic capitalization, only an issue for Notepad-like users.
IT LOOKS UGLY, AND IT MATTERS A LOT, WHEN YOU MOSTLY READ THE CODE.
So yep, I maintain that Oberon is a shitty language. It might be useful as a starting point for new language design, but that's it.
It has never been practical, and on its own it only ever "succeeded" in the ETH where professors just forced students to use it.
What allowed Go to florish was being sponsored by Google, and being pushed alongside Docker and Kubernetes, without them, it would have had the same fate as Plan 9, Inferno and Limbo.
All really widely successfull commercial projects from UNIX folks. /s
Turns out shitty languages only flourish with the right sponsors.
Oberon also has multiple RETURN statements. Only the latest Oberon-07 version does not. So before 2007 Oberon always had multiple RETURNs.
And these keywords can be said to be "screaming" only by a person who does not understand what a "habbit" is. People get used to "screaming" keywords very quickly. And turns out, the uppercase keywords are more practical. Typing them does not take more time than typing curly braces all the time in other languges (you also need to press SHIFT for that, you know). The big keywords allow visual separation of syntax sections, that Go lacks so much.
I.e. in Go, when you see a for-loop, it may not actually be a for-loop, but a while or a foreach loop -- to find out, you need to count the semicolons in the line.
Oberon is perfect for teaching purposes. It is understandable from the first glance. On the first lesson, even 9-year-olds start writing graphical programs! I've been testing Free Oberon as an edutcational tool since 2016. Kids in a sport summer camp use it.
Working from uncertain organic memory, but yes, the other screens look much better.
I've actually always been quite fond of the concept of Oberon --- wondering if this implementation might work well for a potential future pet/side project: making a graphical front-end for METAPOST/METAFONT.
Check out Component Pascal Collection. It is as normal as it gets under Windows. Tell you what: I use their built-in wordprocessor to write grant applications. I prefer it over MS Word or even Libre Office. Download free BlackBox Component Builder from there, as well as amazing scientific software written in that language. Includes graphics, math, algebra, simulations, etc. Some of that stuff (Chill by Robert Campbell) was developed at BAE Systems for flying jet planes. Not just cool. It is heavy duty production stuff. And free.
http://www.zinnamturm.eu/downloads.htm
BlackBox is a great program, but it is a self-contained system, that isn't well-suited for classical programming (i.e. making executables: console applications, grpahical games, integrating with C-code).
If you need an Oberon compiler in classical sence, use Free Oberon.
How does FreeOberon compare to FreePascal, in terms of standard library and third party libraries available? Is it a practical development environment, in the sense of not needing to reinvent every wheel to use it?
Syscalls were the OS APIs back in the Turbo Pascal days. DOS didn’t have an SDK like we now expect. But people still pulled off some pretty sophisticated stuff in Pascal (personally, I wrote a DOS GUI frontend (like pre-Win 3.x) in Turbo Pascal)
I think it's due to a lack of freestanding compilers when the project was launched. People expected a new programming language from Niklaus Wirth but what they got was a language and an operating system, the latter which was too different from any mainstream system.
Studying and using this relatively low-level (but safe!) minimalist language which is not inspired by C has given me quite a few new insights.
Yes, when I was at CERN almost 20 years ago, Niklaus Wirth did a session on Oberon for scientific computing, and as part of that Oberon day, there was someone from Brasil talking about their use in production, controlling some hardware stuff.
Additionally Astrobe sells Oberon-07 compilers for IoT (https://www.astrobe.com/order.htm), for a while XDS also sold Oberon compilers alongside their Modula-2 compilers, and there was a spin-off from ETHZ which sold Component Pascal, basically yet another Oberon dialect.
Check out Component Pascal Collection. Download free BlackBox Component Builder from there, as well as amazing scientific software written in that language. Includes graphics, math, algebra, simulations, etc. Some of that stuff (Chill by Robert Campbell) was developed at BAE Systems for flying jet planes. Not just cool. It is heavy duty production stuff. And free.
http://www.zinnamturm.eu/downloads.htm
Oberon is used in microcontroller programming, medical device programming, railways in Switzerland use Oberon, atomic power station in Rostov (Russia) use it, a power station in Kaliningrad also uses Oberon.
From a quick Google search:
"Oberon includes low-level features that make it particularly suited to the development of real-time applications on ARM microcontrollers."
https://www.astrobe.com/Oberon.htm
You can access the WinAPI, network etc. etc. (also you have the platform abstraction level) using modules that are not documented, but are available in source in the Free Oberon directory. See Data/bin/OfrontPlus/Mod/Lib. Please let me know what module you need and I can add it into the documentation.
It uses Ofront+ -- a descendant of Ofront. So that's another transpiler.
Ofront+ is much more developed, for example it allows compiling in Oberon-07 standard with the addition POINTER TO ARRAY and 2-byte CHARs. That is what Free Oberon uses by default. In future versions of Free Oberon, there will be a selection of Oberon standards (Ofront+ provides Oberon 1990, Oberon-2, Oberon-07, Component Pascal, and the so called Oberon-3).
The great thing about Oberon now under Linux/Windows/Mac is that you can easily create CLI and related filter programs, like something that can be piped into perl or awk, or can receive output from a shell pipeline. This makes for a very gentle slope into using it more.
With this compiler you can also write interfaces to existing C libraries without too much pain. This is achieved without any (non-standard) additions to the language.
I recommend BlackBox Component Builder and the Component Pascal which should have been named Oberon-3, but stepped back to Pascal for marketing. Which failed. But the language and environment are superior. And free. Check them out.
This website is providing amazing scientific software. Includes graphics, math, algebra, simulations, etc. Some of that stuff (Chill by Robert Campbell) was developed at BAE Systems for flying jet planes. It should tell you something.
http://www.zinnamturm.eu/downloads.htm
I think the quote below applies to both Oberon and Component Pascal.
"Programming languages are like cats. It is easier to get a new cat than to get an old cat fixed. Most successful languages are ultimately replaced by upstarts. Remodeled languages rarely match the glory of the original. Fortran was once the king of languages. It has been revised several times over the years, but the modernized dialects experienced a fraction of the prestige of Fortran IV. Similarly, Pascal was a popular structured programming language, but none of the object oriented dialects ever approached Pascal's glory. Instead, languages tend to be superseded."
The latest revision of Oberon has several implementations. Also, OBNC can be used on Windows, macOS, Linux and other POSIX compliant operating systems. Component Pascal has a single implementation which is Windows only. Oberon was created by a master of programming language design; the feature set is minimal but complete. Component Pascal adds a number of features which Niklaus Wirth intentionally left out in Oberon.
The TUI IDE is kinda interesting, looks a lot like QuickBasic, Turbo C and other old-style DOS apps. But otherwise, it would be a lot more sensible these days to just code an Oberon-specific language server, that you could use with any IDE.
Oberon is much more a language/library/IDE/operating system, like a Pascal-flavored Lisp machine. This is a bit like saying "Emacs Lisp is great but what I really want is a language server for it so I can write it in VS Code."
Yes, I intentionally wanted to make it create real binaries. I had a version running on BlackBox, which produced machine code too, but only 32-bit code, and there were limitations on using code from other programming languages (BlackBox only allows so- or dll-files to be plugged in). I made it so people can create stand-alone executable files, like, in example, Telegram.
Free Oberon includes a console compiler (fob), which you can use in any IDE.
Oberon is a langauge with all-caps keywords, so it does not really require syntax highlighting. So the language server might not be so useful for this language (I don't use IDE tips etc., so maybe there could be some benefits there, I don't know).
The Free Oberon IDE resembles Turbo Pascal-style IDE, but this currently runs in a graphical window and can be easily customized.
The only quirk I ran into is that when I ran graphical programs, I would get a full-screen window with a blank prompt; I needed to move that window to another workspace in order for the running program to be displayed. The IDE seems to get smushed into the bottom corner of the screen in KDE and gnome for some reason (which I could work around by toggling windowed mode with alt+enter and then dragging the window to resize), but it works fine in i3.
Between discovering this and finally getting around to trying the Factor language, I'm afraid I'm going to be very unproductive on my side projects for a while..