Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Native Oberon (progtools.org)
95 points by kristianp on Oct 8, 2018 | hide | past | favorite | 14 comments


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.


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


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 -- 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 -- 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.


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.


Robert Griesemer (golang) is also a former Wirth PhD.


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/


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.


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

Symbolics Genera also adopted this approach. Here are some good posts about it on alt.os.multics from Dan Weinreb:

https://groups.google.com/forum/#!search/multics$20commands$...

https://groups.google.com/forum/#!search/multics$20commands$...


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


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

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

https://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.h...

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

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...

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...

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

https://github.com/btreut/a2

The surviving ISO images

https://sourceforge.net/projects/a2oberon/files/


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...


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.


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


Interesting. How do you modify and rebuild the OS?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: