TITLE: Which Language Next?
AUTHOR: Eugene Wallingford
DATE: January 04, 2022 2:54 PM
DESC:
-----
BODY:
I've never been one to write year-end retrospectives on my blog, or
prospective posts about my plans for the new year. That won't change
this year, this post notwithstanding.
I will say that 2021 was a weird year for me, as it was for many people.
One positive was purchasing a 29" ultra-wide monitor for work at home,
seen in
this post from my Strange Loop series.
Programming at home has been more fun since the purchase, as have been
lecture prep, data-focused online meetings, and just about everything.
The only downside is that it's in my basement office, which hides me
away. When I want to work upstairs to be with family, it's back to
the 15" laptop screen. First-world problems.
Looking forward, I'm feeling a little itchy. I'll be teaching
programming languages again this spring and plan to inject some new
ideas, but the real itch is: I am looking for a new project to work
on, and a new language to study. This doesn't have to be a new
language, just one that one I haven't gone deep on before. I have
considered a few, including Swift, but right now I am thinking of
Pharo and JavaScript.
Thinking about mastering JavaScript in 2022 feels like going backward.
It's old, as programming languages go, and has been a dominant force
in the computing world for well over a decade. But it's also the most
common language many of my students know that I have never gone deep
on. There is great value in studying languages for their novel ideas
and academic interest, but there is also value in having expertise
with a language and toolchain that my students already care about.
Besides, I've really enjoyed reading about work on JIT compilation of
JavaScript over the years, and it's been a long time since I wrote
code in a prototype-based OO language. Maybe it's time to build
something useful in JavaScript.
Studying
Pharo
would be going backward for me in a different way. Smalltalk always
beckons. Long-time followers of this blog have read many posts about
my formative experiences with Smalltalk. But it has been twenty years
since I lived in an image every day. Pharo is a modern Smalltalk with
a big class library and a goal of being suitable for mission-critical
systems. I don't need much of a tug; Smalltalk always beckons.
My current quandary brings to mind a dinner at a Dagstuhl seminar in
the summer of 2019 (*). It's been a while now, so I hope my memory
doesn't fail me too badly. Mark Guzdial was talking about a Pharo
MOOC he had recently completed and how he was thinking of using the
language to implement a piece of software for his new research group
at Michigan, or perhaps a class he was teaching in the fall. If I
recall correctly, he was torn between using Pharo and... JavaScript.
He laid out some of the pros and cons of each, with JavaScript winning
out on several pragmatic criteria, but his heart was clearly with
Pharo. Shriram Krishnamurthi gently encouraged Mark to follow his
heart: programming should be joyful, and programming languages allow
us to build in languages that give us enjoyment. I seconded the
(e)motion.
And here I sit mulling a similar choice.
Maybe I can make this a two-language year.
~~~~~
(*) Argh! I never properly blogged about about
this seminar,
on the interplay between notional machines and programming language
semantics, or the experience of visiting Europe for the first time.
I did write
one post
that mentioned Dagstuhl, Paris, and Montenegro, with an expressed
hope to write more. Anything I write now will be filtered through
two and a half years of fuzzy memory, but it may be worth the time
to get it down in writing before it's too late to remember anything
useful. In the meantime: both the seminar and the vacation were
wonderful! If you are ever invited to participate in a Dagstuhl
seminar, consider accepting.
-----