πŸ€“ Baited into PL talk again πŸ—£

Tuesday, April 28, 2020 :: Tagged under: blurb culture pablolife. ⏰ 4 minutes.


Hey! Thanks for reading! Just a reminder that I wrote this some years ago, and may have much more complicated feelings about this topic than I did when I wrote it. Happy to elaborate, feel free to reach out to me! πŸ˜„


🎡 The song for this post is Time's Scar, by Yasunori Mitsuda for the game Chrono Cross. 🎡

Blathers from Animal Crossing.

Just call me Blathers, I'm going to talk about PL again.

Hillel Wayne wrote The Hard Part of Learning a Language, which I read and enjoyed. The lobste.rs thread, as any aggregator comment thread will do, contains a mix of productive conversation and people completely missing the point (one guy got mad enough to suggest that since Hillel is on Windows, he can't seriously expect anyone to write tools that work for him…?).

My first reaction is that it's reminiscent of (and overlaps with) this list I wrote out a few weeks ago, which is a bit more on "brass tacks" practical things missing from most learning materials.

The PL class I took in college is likely the largest influence on how I think about programming as an activity, and it came from the observation that languages can be understood as a collection of semantic features that provide different tradeoffs in expressivity. It was a revelation! But the mistake was to conclude too strongly that "a language's semantics are its most important element" and subsequently underplay everything else. People really like things like syntax and familiarity. With that come communities, libraries, and everything else that makes us still use Python everywhere.

A comment that provoked some reactions in me was:

And this, kids, is why β€œpolyglot programming” is the biggest scam perpetrated on the American public since the invention of the carpet sweeper!

Learning a language to true proficiency – which includes everything listed here and more – is hard, takes a lot of time, and should be a pre-requisite for writing production code.

A few things:

In any case, the article got me thinking. These topics are dear to my heart. I don't normally link my older stuff (oof I was a different Pablo), but here's me in 2013 trying to invent language servers before they were a thing. We still have so much work to do.


On those notes, I was reading the OCaml news and saw opam's newest alpha blog post, which mentions:

To share a project for development, it is often necessary to be able to reproduce the exact same environment and dependencies setting β€” as opposed to allowing a range of versions as opam encourages you to do for releases.

For some reason, most other package managers call this feature "lock files". Opam can handle those in the form of [foo.]opam.locked files, and the --locked option.

I've read a million OPAM docs and this is the first I heard of this lol. Meanwhile, elsewhere, someone asked about why Jane Street removed polymorphic equals, which you'll recall bit me in the ass. I'm going to add this to my core toolbelt, but good lord is it a challenge (that many great people work tirelessly to make better, I know!).

Thanks for the read! Disagreed? Violent agreement!? Feel free to join my mailing list, drop me a line at , or leave a comment below! I'd love to hear from you πŸ˜„