7 ms·
Some memories of Niklaus Wirth
- moomin 3y agoModula-3 (not designed by Wirth, but tangentially mentioned in the article) was a practical disaster. Phenomenally verbose, and with a type system implementation that could easily confuse a complex class with an int. It also had go-like structural interfaces, if that floats your boat. Pretty much everyone I knew hated working with it.
- pjmlp 3y agoI liked it, have almost all published books, and enjoy that Swift, Java and C# have taken several ideas from it, even better now that AOT is finally part of the whole package instead of commercial offerings. D as well, but nowadays they are fighting with a dwellig community.
- kragen 3y ago'fighting with a dwellig community'? i thought i spoke english but maybe i was wrong
- cjohnson318 3y agoI think it's a "dwindling" community.
- pjmlp 3y agoNot everyone is a native English speaker on the Internet, what a surprise.
- kragen 3y agoi thought i was, but this sentence is too advanced for me
- panzagl 3y agoDwellig you know, where the bandersnatch is
- santiagobasulto 3y agoFor the unaware: Odersky himself is a “modern day Wirth”. Amazing language designer. He’s responsible for generics in Java and the Scala language.
- nickpeterson 3y agoIt’s interesting that odersky helped put generics in Java and also made Scala. Don Syme helped put generics in .net, and then made F#. It feels like two people on a very similar trajectory.
- mjburgess 3y agoThe question, "how do we make functional languages popular, (useful?) in the enterprise?" was a question in the air for, i'd, say decades. The 00s answer was to create a merger between enterprise langs (Java, C# etc.) and functional langs in a new language. The net result, as we know now, was to push those langs to adopt functional features -- rather than to shift to others. I suspect the question for the niche programming community, of the next decade, will be "how do we make effect systems popular?" or some such thing. Or, "how do we make AOT metaprogramming popular?" etc. (cf., jai, zig... carbon, circle, ...) I suspect if a post-C++ new-wave gets popular, with structural typing and ct metaprogramming, we might see the same in C# quite easily
- pjmlp 3y agoYou already get them with code generators and Rosylin, but it is a bit painful to use.
- SideburnsOfDoom 3y agoThere is also a new compiler feature, "interceptors" that swaps in calls at compile-time. https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#interceptors https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs... This looks very hard to use well, but that's because "it's not for you" to use directly in app code, rather it's a low-level building block for such AOT and code generation patterns and toolkits.
- jll29 3y agoBeautiful semi-obituary + personal impact report. Odersky has done very impressive work (I only recently learned about his work on TurboModula-2 - cool!), but his work is not focused on simplicity as Wirth's was - I wonder if he tried hard to adopt Wirth's simplicity mantra or not (given how he praises it in the article)? Scala's type system is quite complicated, for instance, and the notion of "object-functional" itself, as a hybrid concept, lacks simplicity.
- zokier 3y agoYeah, I too found the praise for Wirthian ideals funny in the context of Scala. But on the other hand I believe Scala 3 did clean up lot of things, so maybe there is still something there?
- pohl 3y agoInteroperating with Java was a requirement. That immediately takes simplicity off the table if the goal is to bring FP to the JVM.
- macintux 3y agoAdmittedly this is from a distance, having only toyed a bit with each, but Clojure always seemed much simpler than Scala.
- pohl 3y agoThat follows from Clojure being dynamically typed, though. Different design constraints lead to different results.
- bigbillheck 3y agoWhy's that?
- switchbak 3y agoTypes interop on a VM that wasn't designed for a more complex one like Scala has. Collections interop between Java<->Scala. Scala's (immutable/mutable) collections are not built on the Java ones, and they provide helpers to translate between the two. Calling conventions, name mangling, Java to Scala issues, etc.
- mjburgess 3y agoI remember having just left a scala event I was running in a cab, and seeing Martin on a london bridge with a gaggle of guys following him. I wasnt aware he was the student of Nikalus Wirth -- but it makes a lot of sense. It's a shame though, that Wirth's philosophy was, imv, ditched from 90s-00s (where we get: python, js, ruby, ...scala). It seems now language design is rediscovering Wirth and his techniques (see, eg., google's carbon which iirc, seeks to be ast-free single-pass).
- 7thaccount 3y agoEverything is a balance. Can you have the power of Python in a Wirth-like language? Pascal compiles fast into executables that are easy to distribute. Python is extremely flexible and easy to use for a wide array of problems, but is a packaging nightmare. Languages like C are blazing fast and easy to distribute, but require a lot of code to do what I can do in a few lines of Python. I haven't used Swift, but hear it may be a bit of a compromise in that it compiles (albeit not in a single pass I don't think) and using it is not that much more verbose than Python. I know Nim and Crystal are similar attempts, but Nim doesn't seem as easy to use to me.
- archargelod 3y ago> ... but Nim doesn't seem as easy to use to me. Hm... Can you elaborate why? For me, Nim is the easiest language to work with. It really feels like Python with static typing. This one is probably a hot take, but I believe that static typing is vastly superior and easier to think about than dynamic typing. In languages like Python or JS, Lua, etc. it's not like they don't have types, types are merely hidden, you still should be aware of types. They just move responsibilty for handling type errors from compiler to the programmer. Or maybe because Nim is extensible? I know that big point of Nim is macros, and macros in general are hard. But in my experience I've never felt that I need to write one, when using Nim.
- mjburgess 3y agoThe jai, zig, etc. approach is compile-time metaprogramming; make the compiler available to program, make the build system plugging into the compiler. Then I think you can do it. The compile-time is "a Wirth" and the runtime is "a Wirth". You get 95% the benefits of a python, since 95% of the dynamics you want are actually just static transformations of the program.
- playingalong 3y agoI learned programming mostly with Wirth's Pascal quite a few years ago. Now I am employed in a company whose primary language for backend is Odersky's Scala. I have fond memories of the former and greatly enjoy the latter. It's only now that I learn Odersky was Wirth's student. It clicks.
- playingalong 3y agoIt'd be interesting what was the other five PhD students did. I kind of guess most of them being successful, not necessarily in the domain of programming language design.
- throw_pm23 3y agoIt's easy to check, they seem to have done well: https://www.genealogy.math.ndsu.nodak.edu/id.php?id=61847&fChrono=1 https://www.genealogy.math.ndsu.nodak.edu/id.php?id=61847&fC...