Live data from Hacker News

The seven programming ur-languages (2021)

madhadron.com

21–30 of 326 posts

Re: The seven programming ur-languages (2021)

#21
post #12

Well, a bit arbitrary, especially the choice of Self as the "ur-language" of object oriented programming.

I had the same reaction. I think it stems from choosing an extremely strict set of characteristics. If you take the infamous Alan Kay quote [1], then e.g. Ruby fits in that category. But with the characteristics as-is, the category of OO languages as opposed to language that allow OO programming, is near empty and it becomes easier to "get away with" talking about the purity of Self rather than recognising that Smalltalk has a lot of spiritual descendants, while Self is the basis for a much smaller branch (Javascript being by far the most prominent spiritual descendant, but even JS is ruled out by the characteristics given).

Ending up with Javascript and especially Ruby as ALGOL derived makes no sense to me. Where more limited OO languages have imported OO aspects, JS and Ruby have wrapped ALGOL syntax and a few concepts around semantics that are much closer to Self and Smalltalk respectively.

[1] "OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme LateBinding of all things".

Re: The seven programming ur-languages (2021)

#22
post #5

An article like this is hard to write. This is a good one. I have a few quibbles, but they are just quibbles. IMHO* a distinguishing feature of Algol like languages (aka "procedural" languages) is the distinction between expressions and statements. Though personally I've never seen the appeal, that distinction seems to be popular for some reason. * this isn't even a quibble -- the article is fine without it. Just som…

In the case of Lua, the expression/statement distinction allows the language to be completely whitespace insensitive with no delimiters. The Lua grammar top level rule is just Stmt (ws Stmt)*. I think Ruby might work similarly, but I don't remember.

C is less particular about the expression/statement distinction. Java enforces redundancy.

Re: The seven programming ur-languages (2021)

#23
post #5

An article like this is hard to write. This is a good one. I have a few quibbles, but they are just quibbles. IMHO* a distinguishing feature of Algol like languages (aka "procedural" languages) is the distinction between expressions and statements. Though personally I've never seen the appeal, that distinction seems to be popular for some reason. * this isn't even a quibble -- the article is fine without it. Just som…

The distinction in ALGOL, Pascal etc. is useless. But if you change your definitions such that expressions always evaluate to a single value and do not have any side effects while statements produce some kind of side effect (and may or may not yield a value), the distinction becomes important. Especially if you believe side-effects need special handling (i.e. you are a functional programmer).

It's been done in some Pascal descendants: functions were required to be pure but procedures were allowed to mutate global state. Some even went as far as to remove functions altogether (with quite unpalatable results).

Re: The seven programming ur-languages (2021)

#24
post #12

Well, a bit arbitrary, especially the choice of Self as the "ur-language" of object oriented programming.

Yeah, I'd have to go with Simula/Simula 67 as the OO ur-language.

I'm ambivalent about that. As a technicality and inspiration it makes sense, but having learnt Simula (I studied in Oslo; it was the introductory language for many years) it does not give you the same focus on objects as Smalltalk does. But if you want to put another language than Smalltalk as the OO ur language, I'd certainly pick Simula over Self.

Re: The seven programming ur-languages (2021)

#25

IMO the eighth ur-language is Erlang (with cousin Elixir), which brings the ultra-scaling actor model, an abstract operating system designed for high reliability and low latency, and a bunch of nice rare features like builtin binary structuring/destructuring and pattern matching. While it had its origins in prolog, it's now sufficiently far away from prolog's inner machinery that it only has syntactical similarity. L…

I agree. Many of the core language concepts from Erlang you can get from Self and Prolog, but experiencing the OTP is something different that I think you only get from the Erlang family.

Re: The seven programming ur-languages (2021)

#30
post #24

Earlier quoted context omitted.

Yeah, I'd have to go with Simula/Simula 67 as the OO ur-language.

I'm ambivalent about that. As a technicality and inspiration it makes sense, but having learnt Simula (I studied in Oslo; it was the introductory language for many years) it does not give you the same focus on objects as Smalltalk does. But if you want to put another language than Smalltalk as the OO ur language, I'd certainly pick Simula over Self.

Simula 67 is much closer to the mainstream OO concepts we see in C++, Java, C# and Python than Smalltalk, or let alone Self. ST was the first dynamically typed OO language (scripting language actually) though.
Post reply on HN