
Native Oberon - kristianp
https://www.progtools.org/article.php?name=oberon&section=compilers&type=tutorial
======
kev009
Niklaus Wirth is one of the luminary people in computing. Definitely take a
look at his books, they are extremely concise and to the point. Also
interesting (but less so than Wirth's actual writing) is the book "The School
of Niklaus Wirth: The Art of Simplicity".

Interestingly he was the Martin Oderskey's (Scala etc) PhD advisor.

~~~
wirrbel
I wish odersky had learned more about keeping things simple from worth.

~~~
kev009
I'm not sure off hand about this, I dunno what Odersky's level of involvement
was in the libraries and tooling like SBT that grew up around it. I think the
language spec of Scala is actually pretty orthogonal to complexity ignoring a
few pieces like XML and Java interop [https://www.scala-
lang.org/docu/files/ScalaReference.pdf](https://www.scala-
lang.org/docu/files/ScalaReference.pdf) \-- it builds up continuously upon
itself. Scroll down and look at the appendix with the grammar. These concepts
compose very well. Because of the composability people end up extending the
language, which is a powerful feature, but seemingly in practice in ways that
add to the complexity without reciprocal reduction in cognitive load. I really
enjoyed reading Odersky's book just for this lesson in composition even though
I don't think I'll ever use the language again.

Golang, a simple language in use, is basically a grab bag of concepts that
implement a syntax people happen to be familiar with from ALGOL-like languages
[https://golang.org/ref/spec](https://golang.org/ref/spec) \-- there's nothing
particularly unifying or composable in that it just happens to work out ok.

I'd be interested in a crossover language that has the reinforcing composition
of something like Scala but a standard library and common tooling like Golang
that are kept simple. Spending time in Rust is on my todo list, it may not be
even close to that but looks more useful than Scala long term and retains the
type stricture.

~~~
erikpukinskis
I believe we are coming to a time where we will stop seeing languages as
monoliths and we will name language subsets as first class citizens of our
namespace.

I personally program often in a strict subset of JavaScript. Liberals,
function declarations, and function calls only. Of course I can’t do
everything in this space. But many projects are just fine. Most code, at least
code that’s pretty close to human-relevant vocabulary) is just names and calls
when it’s truly properly refactoreded.

Unfortunately this becomes untenable when I try to use third party packages.
Almost all packages expose APIs in the most advanced sections of language
syntax... promises, big rich configuration trees, weird chainable DSLs,
objects, etc.

So to work with a language subset you need to be able to carve out a namespace
within your package management ecosystem. Essentially a fork of the namespace,
with people able to “take over” the package and port it to the subset.

In your case this would mean a subset of Scala with strict controls on
composeability with the existing primitives.

And you’d port at least high level scala packages to that API space.

------
kevinmgranger
Oberon was one of the inspirations for acme[0], one of the text editors / text
"environments" for plan 9.

0:
[http://doc.cat-v.org/plan_9/4th_edition/papers/acme/](http://doc.cat-v.org/plan_9/4th_edition/papers/acme/)

------
romwell
I am so thrilled about everything Oberon-related.

From the article:

>Any Oberon procedure can be made available to the user as system command,
provided certain conventions are followed. They are known as Tools. [..]

>It is possible to allow such Tools to act on user interface elements selected
by the user.

This is a way more flexible UX/UI paradigm than any OS out there provides.

~~~
choudanu4
Does anyone know where I could get more information on Tools?

~~~
pjmlp
Sure,

You can read the _Project Oberon_ 1992's book, sections 3.3 and 3.4 as
starting point.

[http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf](http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf)

Then you can follow up with the 2003's edition.

[https://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.h...](https://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html)

With a stop in the last pure Oberon iteration, Oberon System 3 Gadgets.

[http://www.ethoberon.ethz.ch/ethoberon/tutorial/](http://www.ethoberon.ethz.ch/ethoberon/tutorial/)

 _Oberon Companion_ describes gadgets and tools

[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.472...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.472.5256&rep=rep1&type=pdf)

The existing PDF book has a couple of rendering issues, but if you install
BlueBottle, it has Oberon System 3 as demo application, with the original book
in Oberon rich text format (not to mix with RTF).

[https://www.youtube.com/watch?v=t6NMJh0noDk&index=35&list=WL...](https://www.youtube.com/watch?v=t6NMJh0noDk&index=35&list=WL&t=3s)

Which by the way, also describes the Tools on its manual, _A2 User Guide and
Application Description_

[http://www.ocp.inf.ethz.ch/wiki/Documentation/Front](http://www.ocp.inf.ethz.ch/wiki/Documentation/Front)

[https://github.com/btreut/a2](https://github.com/btreut/a2)

The surviving ISO images

[https://sourceforge.net/projects/a2oberon/files/](https://sourceforge.net/projects/a2oberon/files/)

------
jkleiser
If you have a Mac and want to play with Oberon Workstation, you can find it in
the Mac App Store: [https://itunes.apple.com/us/app/oberon-
workstation/id1057155...](https://itunes.apple.com/us/app/oberon-
workstation/id1057155516)

------
tasty_freeze
Wirth made one of the greatest computer science puns ever.

His name should be pronounced something like "veert", but universally in the
US he is called "worth".

Wirth said something like: In Europe, I am called by name, but in the US I am
called by value.

~~~
neonate
It's a famous joke but are you sure he came up with it? I thought it was said
by someone introducing him.

------
anta40
Interesting. How do you modify and rebuild the OS?

