Hacker News Comments on
Four Languages from Forty Years Ago - Scott Wlaschin
NDC Conferences
·
Youtube
·
9
HN points
·
3
HN comments
- This course is unranked · view top recommended courses
Hacker News Stories and Comments
All the comments and stories posted to Hacker News that reference this video.I posted a talk on HN recently about four programming languages from the 1970s - Smalltalk was one of the languages discussed.Smalltalk has a object-oriented programming model (OOP) with notable differences to the more familiar OOP model from languages like Java and C#. Smalltalk also has an windowing IDE (eschews separate text files), a consistent model, and minimal syntax (just 3 keywords). It's a very interesting language.
Here's a Smalltalk demo from the talk: Four Languages from Forty Years Ago (2018) (44min mark): https://youtu.be/0fpDlAEQio4?t=2641
⬐ Rochus> with notable differences to the more familiar OOP model from languages like Java and C#.This only applies to Smalltalk-72 (which is celebrated this year). The Smalltalk we know today started with Smalltalk-76; like Simula or Java it has inheritance and compiled virtual methods (i.e. no longer passing tokens to objects for interpretation). Smalltalk-80 celebrated its 40 years in 2020 on which occasion I implemented a couple of tools and VMs to study its inner workings, see https://github.com/rochus-keller/Smalltalk.
> a consistent model, and minimal syntax
Which is mostly beneficial for the parser writer; implementing an efficient VM for Smalltalk is still an art today, because nearly everything is a closure and the control flow has to be guessed; in any case Smalltalk can at least pride itself on having initiated a development that led e.g. to Java Hotspot and the V8 engine.
> I've learned many languages including C, Objective C, Java, Python, Ruby, JS, and some Haskell.You've learned basically the same language over and over again: Algol-family imperative-OO-mishmash. Haskell is probably the most unique out of all of them, and I'm inclined to think you haven't gone too far with it. Perhaps you know SQL though and recognize how a relational (roughly, set-oriented) language can work.
My point is that I understand that Go offers you some compelling advantages. We're just saying that other languages offer some pretty amazing things too, and they are even better designed (as languages) than Go.
Check out this fantastic talk by Scott Wlaschin to get a sampling of truly different language paradigms and how they approach problems: https://youtu.be/0fpDlAEQio4
⬐ hellcow> We're just saying that other languages offer some pretty amazing things too, and they are even better designed (as languages) than Go.I agree that many languages have interesting features.
Your point however is not at all the argument the GP was making, which was that Go suits only Google, junior developers, and huge teams.
⬐ zxcmxBased on who designed it, it seems to me that go was primarily designed to meet the needs of "senior developers", because they are the ones who have to read way more code than they write (whether by juniors or seniors or whoever).Those people are going to tradeoff writability for readability every time.
Seniors need to be able to read an arbitrary MR and quickly figure out what it is actually doing and that is way easier when the language does not have e.g. surprises hiding in innocent looking operators (looking at you c++) or culturally encourage towering abstraction.
The error handling thing improves locality which is also super useful when reviewing changes.
Rust, Go, Julia, Nim are all cruly braced, procedural, mutable, object oriented languages.I think we need languages that bring new paradigms. All that you quoted fail in this respect.
⬐ SkinneyNeither Go nor Rust has objects or inheritance.⬐ apta⬐ gonzus> Neither Go nor Rust has objectsWhat's an "object" anyway? A collection of data fields bound to a method is what most people would probably consider. In which case, both golang and Rust have objects.
Nim is not curly braced, it uses Python-like indentation.⬐ mratsimJulia and Nim don't have curly braces.Nim isn't object oriented either, it's procedural oriented just like C. Experienced Nim devs avoid methods and inheritance and only use them after very careful considerations.
Mutation is needed to implement low-level stuff and have deterministic memory usage.