[HN Gopher] Tex-Oberon: Make Project Oberon Pretty Again
       ___________________________________________________________________
        
       Tex-Oberon: Make Project Oberon Pretty Again
        
       Author : todsacerdoti
       Score  : 115 points
       Date   : 2024-01-06 15:25 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | cstross wrote:
       | I can't find the bibliographic details for the 2013 edition, but
       | the 1992 one was published by Addison-Wesley, so it's quite
       | possible that anyone participating in this project to "liberate"
       | the text will get a cease-and-desist from Pearson Plc's legal
       | department/anti-piracy people.
       | 
       | Caveat: the 2013 edition doesn't seem to be available via Amazon
       | so may well be formally out of print. In which case, Wirth's
       | heirs can issue a rights reversion letter to Addison-Wesley and
       | claw the rights back, then relicense the text libre. Or they may
       | already have other plans for re-issuing the book.
       | 
       | Either way, it'd be polite to ask first before "liberating".
        
         | dchest wrote:
         | The book and software is under the MIT-like license
         | https://people.inf.ethz.ch/wirth/ProjectOberon/license.txt
        
           | cstross wrote:
           | That's a good starting place, then.
           | 
           | (It's still polite to ask/let the heirs know what you're
           | doing.)
        
             | kragen wrote:
             | wirth has published his project under an open-source
             | license, guaranteeing everyone everywhere the freedom to
             | study, copy, modify, and redistribute it forever
             | 
             | you're suggesting offering his heirs the opportunity to
             | revoke that license
             | 
             | how can you possibly think this is a good idea? if it
             | became a widespread practice, it would result in a million
             | lawsuits like the sco lawsuit, utterly destroying free
             | software. is that what you want?
        
       | lifeisstillgood wrote:
       | A fantastic idea, and also the philosophy behind Oberon is
       | something I think we shall need more of - as the operating system
       | for a computer is now conceptually the operating system for a
       | network, a cluster of computers, for an organisation, a
       | government, having one company's "operating system" not only be
       | defined in software, but enable that software to fit in one head,
       | that seems important in ways that otherwise make us throw up our
       | hands and say "it's all rigged" or "they are all the same" or
       | "who knows, let's just keep going"
        
       | tcbawo wrote:
       | Can anyone recommend this book as a first resource for a young
       | teenager to teach themselves about computer science and coding
       | (with some guidance and assistance from myself)? He has a strong
       | interest in making games, but has stalled out with his attempts
       | at programming so far (a handful of books and YouTube videos). I
       | think learning from first principles would be most effective, but
       | our earlier attempt with Nand2tetris might have been a little too
       | low level to hold his interest.
        
         | 48864w6ui wrote:
         | No (see the earlier discussion for this book's prereqs)
        
           | tcbawo wrote:
           | There have been many posts and much discussion on this book
           | since Wirth's passing. Looking around, I found some
           | discussion that describes this book more as a description of
           | a complete system than an introduction that describes how it
           | gets there. I don't think this necessarily disqualifies it as
           | a beginner's book. Having a reference description of a
           | complete system that one can fit in one's head might be a
           | _great_ resource for a beginning programmer.
           | 
           | If anyone has read/used this book before, I would love to
           | hear their opinion about where it best fits in their journey.
        
         | airstrike wrote:
         | I would pick something more high-level like a Python project,
         | or maybe since he likes games, a Godot project using GDScript
         | 
         | These would have smaller scopes and likely feel "rewarding"
         | much more quickly
        
         | giovannibonetti wrote:
         | Perhaps a book like Realm of Racket or How to Design Programs
         | might interest him. Both teach Lisp-style programming with the
         | Dr Racket IDE, although the former might be more appealing to
         | teenagers due to the games developed and the narrative in each
         | chapter.
        
           | xhevahir wrote:
           | I don't recommend these. Racket's libraries for making games
           | are slim compared to, say, Pygame, or Love2D.
        
             | kragen wrote:
             | or godot or obviously js in the browser
        
         | derefr wrote:
         | I've read a lot of introductory texts to programming, as I have
         | taught programming in a classroom setting to high-school
         | students, and am always on the lookout for better ways to teach
         | it.
         | 
         | (Also, I know quite a few programming languages, both low-level
         | and high-level. I'm a "right tool for the job" sort of person,
         | using different languages on different projects. So I'm not
         | recommending this text out of bias for a certain language.)
         | 
         | My own favorite introductory text for programming, at a high-
         | school level, is https://pine.fm/LearnToProgram, which teaches
         | the Ruby language.
         | 
         | (There's a book version of it linked in the site's sidebar,
         | which might be nice to give as a gift to a prospective student;
         | but the original free online version linked below it --
         | https://pine.fm/LearnToProgram/chap_00.html and onward -- is
         | already very good, and is what I usually end up pointing people
         | toward.)
         | 
         | LtP is a very results-oriented tutorial: it just shows you
         | "what" you can do, and gets you going on doing things and
         | experimenting, rather than trying to teach you a lot about
         | "why" things work the way they do. It shows you what works and
         | what doesn't, and uses that to teach-by-example that there are
         | some underlying fundamental principles (e.g. + is addition for
         | Integers and concatenation for Strings, but you can't + a
         | String and an Integer together, because there's no clear
         | meaning when the two things you're +ing don't have the same
         | "type.") It briefly discusses the principle -- just enough to
         | know it exists -- and then moves on.
         | 
         | I think a results-oriented approach is important at a high-
         | school level, as a learner is at this point still deciding
         | whether they really want to "get into" programming, or if it's
         | "not for them." And I've found that the thing that dissuades
         | teenagers from thinking programming is "for them", usually _isn
         | 't_ the struggle of debugging or solving puzzles; rather, it's
         | interminable lessons on theory, that they have no practical
         | foundation yet to motivate a _need_ for understanding of. They
         | need to see results to understand the joys of programming --
         | and to experiment to understand the struggles -- but they _don
         | 't_ need to be forced through the _mind-numbing
         | incomprehension_ of a CS  / Discrete Maths lecture. That can
         | wait until they know enough to ask questions like "why does
         | this program [that has a three-deep hot loop searching a big
         | array by value] run for hours without finishing?" Sell the
         | problem before the solution!
         | 
         | This results-oriented approach is helped by the language choice
         | of Ruby:
         | 
         | * Ruby is a language that has very little boilerplate syntax
         | you must type to make a program work. In a language like Java
         | with much boilerplate, even if a tutorial says "ignore it for
         | now", students itch to know why it's needed. Ruby code just
         | doesn't have anything to cause that itch. Ruby "gets out of the
         | way."
         | 
         | * Ruby has _uniform_ syntax. Most other low-boilerplate
         | languages, a.k.a. scripting languages -- I 'm specifically
         | thinking of Perl and Python here -- have legacy syntax warts
         | that break the learning trance. Ruby's syntax is very
         | predictable, with no real "irregular verbs" to remember. Other
         | languages make students remember -- at first with no rule the
         | learner could yet understand -- that it's sometimes `len(x)`,
         | but other times it's `x.Len()`. In Ruby, it's always `x.foo`.
         | Even on an integer literal. Even on `nil`!)
         | 
         | These two features of Ruby -- no boilerplate, and predictable
         | syntax -- also translate to a lot less time being spent helping
         | students debug _their syntax_ instead of _their program_. (New
         | programmers have a lot of trouble with syntax!)
         | 
         | For a college student who likes math, I might recommend a
         | different text, or even a different language. (I think SICP is
         | pretty great, actually.) But for a young teenager, I think LtP
         | and Ruby are a great place to start.
        
         | jahewson wrote:
         | I'm a first principles thinker and prefer to learn from books,
         | but it must be said that games are really exciting and YouTube
         | videos very engaging. Books... not so much. Indeed, as a
         | teenager in the 90's I first learnt to code from videos ("Learn
         | Visual Basic Now" from Microsoft). First principles aren't much
         | fun when the path to applying them in the manner you want is
         | measured in years - this is where having an engaging and
         | relatable teacher makes all the difference (out of scope here).
         | 
         | I've found that it's much easier to jump into coding in an
         | established environment where there's a large ecosystem that's
         | well-groomed by a large corporate entity, so think Unity/C# or
         | Swift Playgrounds. There's less jargon, fewer ways to do the
         | same thing, and much, much better and varied learning
         | resources.
         | 
         | My younger brother got into coding as a teenager, via an
         | interest in gaming, nudged along by me. There were several
         | false starts as the kind of games he was interested in, namely
         | 3D MMORPGs built by thousands of engineers and artists, had no
         | beginner-level on-ramp to learning. Eventually he picked up
         | enough coding skills that he developed an interest in coding in
         | general and went on to study it in college. 20 years later I
         | still don't think he's written a game though :) but he does
         | write code that schedules the UKs trains!
        
         | e12e wrote:
         | There's always smalltalk for a different approach I suppose?
         | 
         | https://wiki.squeak.org/squeak/692
         | 
         | I'd guess starting with something like Godot game engine and
         | then going back to the theory later would be more successful
         | (but everyone is different...).
         | 
         | See also the recent launch hn:
         | 
         | Launch HN: Rosebud (YC S19) - Turn game descriptions into
         | browser games https://news.ycombinator.com/item?id=38868185
        
       | ajkjk wrote:
       | It is still a bit irritating to see the phrasing "make X Y again"
       | in any context ever. Would really rather not have... any of...
       | the associations that it gives.
        
         | Nadya wrote:
         | Giving people the power to change your way of speech or way of
         | thinking is how you let them have power and control over you.
         | It gives them strength when they should be seen as weak. It
         | empowers them.
         | 
         | If you detest what a certain phrase might stand for - work
         | towards changing what it stands for. Don't give it away freely
         | and without a fight. You do a disservice to yourself and
         | everyone else.
        
           | ajkjk wrote:
           | Weird reply. I can't tell, are you agreeing or disagreeing or
           | something else?
        
         | zvmaz wrote:
         | I haven't noticed, but now that I've read your comment, I can
         | understand your irritation. Just shrug it off if you can.
        
         | 082349872349872 wrote:
         | That was slightly irritating; what is more irritating
         | (notwithstanding the obvious best intentions of the project!)
         | is the seemingly widespread notion that typography has much to
         | do with Wirth's work.
         | 
         | It would be as if the people in Plato's cave, instead of
         | contrasting the outside and inside, were to obsess over which
         | section of cave wall had the most pleasing texture over which
         | the shadows might play...
        
           | kragen wrote:
           | experienced buddhist meditators famously sometimes meditate
           | despite chilblains, or incense burning on their scalps, or
           | being aflame with gasoline, or starving themselves to death
           | over a period of months
           | 
           | but if you try to begin your practice of buddhist meditation
           | with incense burning on your scalp, you probably will not get
           | very far; you will probably quit. instead, beginning
           | meditation focuses on finding the pleasure in relaxing in a
           | comfortable position, even though that is clearly not what
           | motivates more experienced meditators
           | 
           | (and of course you're aware old don and old ed (rip) spent a
           | lot of effort on typography, though they sometimes understood
           | wirth's work better than he did himself)
        
         | trollerator23 wrote:
         | Seriously. It's very irritating.
        
       | tux1968 wrote:
       | Direct link to the current release of pdf, generated from his
       | work so far:
       | 
       | https://github.com/guidoism/tex-oberon/releases/download/v0....
        
       | chrismorgan wrote:
       | (2022)
        
       | jagged-chisel wrote:
       | Can someone detail the differences from the original? Looks
       | subtle to me. How are we defining "pretty?"
        
         | tux1968 wrote:
         | Being "pretty" seems to be an editorial comment from the person
         | who posted this link. At least, I don't see that claim being
         | prominent anywhere in the Github repo. The goals of the project
         | are rather to extricate the text from pdf format, to make it
         | more available and adaptable.
        
           | Sardtok wrote:
           | The title of the project on Github is Make Project Oberon
           | Pretty Again, it's not something added to the HN post.
           | 
           | "The last edition -- from 2013 -- could use some tender
           | loving care. It should look beautiful." - the paragraph that
           | introduces the goals of the project.
        
         | codeflo wrote:
         | I'm not sure if you've found a better version of the original,
         | but this is the document I found:
         | https://people.inf.ethz.ch/wirth/ProjectOberon/PO.System.pdf
         | 
         | It's typeset in Arial. In freaking Microsoft Word.
        
       | codeflo wrote:
       | Some people rave about Oberon, and I think there are brilliant
       | technical ideas in the system, and this is entirely subjective,
       | but reading the language gives me a headache. At least Pascal
       | allowed lower-case keywords.
       | 
       | Does anyone know why Wirth never modernized his style? I wonder
       | if there's a place for something that's equally minimalist, but
       | more in line with current aesthetic sensibilities.
        
         | michaelsbradley wrote:
         | Nim?
         | 
         | https://forum.nim-lang.org/t/10843#72291
        
         | thisislife2 wrote:
         | > Does anyone know why Wirth never modernized his style?
         | 
         | Readability. It's easier to read the source code with uppercase
         | keywords. (I think Wirth once said that code is written once
         | but read many times). See this source code -
         | https://raw.githubusercontent.com/rochus-keller/OberonSystem...
         | - to get an idea of this (the uppercase keywords allow you to
         | easily scan the blocks of code). Ofcourse, one can claim that
         | the same can be achieved better today with colour-coded
         | keywords.
         | 
         | If it really bothers you, I think the Oberon+ IDE -
         | https://github.com/rochus-keller/Oberon - gives you an option
         | to disable this and use lowercase keywords.
        
           | codeflo wrote:
           | > It's easier to read the source code with uppercase
           | keywords.
           | 
           | This is aesthetics, I won't claim that what I'm saying is
           | more than a (perhaps popular) subjective opinion. But I will
           | point out that at least the way I read programs, the KEYWORDS
           | are the OPPOSITE of what I want to EMPHASIZE when reading
           | code.
           | 
           | I actually want the keywords to disappear so that my eyes can
           | focus on the variable names and see the data flow. That, by
           | the way, is also why punctuation to mark blocks { ... } is so
           | much easier for me to visually parse than BEGIN ... END.
        
             | augustk wrote:
             | You could use a syntax highlighting theme where reserved
             | words are gray for instance (if you want them to fade into
             | the background).
        
         | abecedarius wrote:
         | There's someone working on a more modern-style Oberon dialect
         | called (iirc) Oberon+ or Oberon Plus. Can't remember much more,
         | and the term seems hard to search for when there's some AMD
         | chip with that name.
        
       | zvmaz wrote:
       | > Project Oberon is an amazing piece of computer science and
       | amazing tool for teaching. The book and the code demonstrate,
       | without any tiny amount of doubt, that it is possible to build a
       | usable computing system small enough to fit in the head of a
       | normal programmer. That, in my not-so-humble opinion, is a truly
       | great achievement and I am in awe of Niklaus Wirth and Jurg
       | Gutknecht for it.
       | 
       | As I wrote in an earlier post, the enthusiasm of the author is
       | contagious.
        
       | JadeNB wrote:
       | The capitalization stripped out by the title mangler is
       | significant: Knuth's creation is called TeX, not Tex (and
       | actually the X is a capital chi, Kh).
        
       | namuol wrote:
       | A noble effort, no doubt. But it would be nice to see a web
       | adaptation, since most of our reading happens on a multitude of
       | screens these days. Might have a higher impact on readership than
       | better typesetting.
        
       | dataangel wrote:
       | Is there any copyright issue with the community editing and
       | republishing as described in the README?
        
       ___________________________________________________________________
       (page generated 2024-01-06 23:01 UTC)