4 ms·
I happen to work in Oberon pretty much every week. At my company, we program OS for mobile robots and have been carrying Oberon code since 25 years. The code ba
by abricq 3y ago
I happen to work in Oberon pretty much every week. At my company, we program OS for mobile robots and have been carrying Oberon code since 25 years. The code base is huge, and it works really well. It’s been under production for all these years and we know it’s robust. It’s definitely not fast, but most applications don’t require the speed offered by modern languages. That’s why it was never translated in C++ or Rust or any « better languages ».
In my daily practice, I find the following limitations to be the most challenging ones.
* No generic type : that’s extremely limiting, especially when implementing math libraries.
* The garbage collector (using the XO2 real-time OS) does not collect array of primitive types, only array of pointers are collected. Honnestly it would be much easier to not have the garbage collector.
* extremely small standard library (but this is to be expected for a niche language …).
* the only tooling that you have is the tooling that you build yourself (editor, completion, debuting, etc …)
I often wonder how many other people work in Oberon. I’d love to share with someone else than me that does !
- eterps 3y agoThat's impressive! Are there still any advantages in using Oberon commercially in 2023? (I use it mainly for study)
- abricq 3y agoI don’t think there is any advantage to start a new code base in Oberon. The language itself is just like any OOP language, with very pronounced limitations. Typically, you’ll often have to fix problems with the compiler, or with the OS. I guess that sometimes the risk to make a language migration (and to introduce some bugs) is higher than the performance benefits.
- krylon 3y agoFascinating! I was skimming through TFA, wondering if anyone actually uses Oberon for real. TIL: Yes, they do.
- pjmlp 3y agoAstrobe is still in business, selling Oberon-07 compilers.
- pjmlp 3y agoAs I mentioned in another comment, it was very interesting experience for what we had back then, as a full single user graphical workstation OS. Outside of its original environment, isn't quite the same. Thanks for sharing your experience.
- Koshkin 3y ago> No generic type A good macroprocessor can provide a similar capability (and much more). My favorite example is to simply use an ASP-like syntax, where you could have the same language as your macro language, along with the "code inversion" brackets ("<%" in the case of ASP).
- imglorp 3y agoPlease no. That's how CFront worked in the late 80s: one of the first c++ compilers that emitted c for classes and generics. It was slow, clumsy, and errors completely opaque. It served to get c++ implemented quickly during its early years, but things got much better when real compilers came out. Hygienic macros integrated with a language, ok. But don't implement the language in a macroprocessor.
- Rochus 3y agoDid you already have a look at http://oberon-lang.ch http://oberon-lang.ch? It's a new version of Oberon, compatible with Oberon-2 and Oberon 90, with support for generic modules. It also has an IDE with syntax colouring, semantic navigation, cross-referencing and source-level debugging. Performance is close to C++ (https://github.com/rochus-keller/Oberon/blob/master/testcases/Are-we-fast-yet/Are-we-fast-yet_results_linux.pdf https://github.com/rochus-keller/Oberon/blob/master/testcase...).
- ivan_denisov 3y agoI am also working in Oberon, We are developing devices using compiler O7 for STM32 and also may years developing desktop applications with BlackBox Component Builder (also version of Oberon language).
- Zorko 3y agoYou write that Oberon is definitely not fast, but that only applies to the implementation - how efficient the code is given by a compiler. I will assume you are using some port of ETH Oberon, but in the Oberon world all compilers are traditionally the most linear and only support basic optimization. So Oberon by itself has the potential to be no slower than Pascal or C if the optimizing compiler is well implemented. About "No generic type" - in fact, such type (analog of the type "variant" from Delphi) can be emulated with an empty record, from which records with a field for a specific data type are inherited. Price for the philosophy of Wirthian simplicity. ;) I'd like to inform you that I am an Oberon enthusiast from Ukraine and the developer of the Ofront+ project, which is a translator of the five Oberon dialects into C. The Ofront+ (my fork of Josef Templ's Ofront) supports: Oberon-1990, Oberon-2, Component Pascal, Oberon-07 and my own dialect. And we can mix all these dialects in one project. I would be glad if you find an opportunity to try it out yourself. Ofront+ exists for all popular platforms: Linux, Windows, macOS on different processors. https://github.com/Oleg-N-Cher/OfrontPlus https://github.com/Oleg-N-Cher/OfrontPlus Ofront+ is under active development, has a community and has already been used in a couple of commercial projects. At the same time, Ofront+ is open source and free. I provide free support and advice to Ofront+ users.
- WojtekSkulski 3y agoI used Component Pascal under Black Box Component Builder for developing scientific image processing and adaptive optics. The math libraries by Robert Campbell are available from Component Pascal Collection. The name of Robert's package collection is unassuming word Chill. It is the most amazing set of math, algebra, graphics, and utilities. All written in Component Pascal which can be backported to Oberon-2. You can download BlackBox from the same page. http://www.zinnamturm.eu/index.htm http://www.zinnamturm.eu/index.htm