When I was in college I had a course on Principles of Programming Languages.
-
When I was in college I had a course on Principles of Programming Languages.
A solid two thirds of the class was focused on one language in particular: prolog.
See, for a bunch of imperatively minded students who were mostly familiar with C++, Mathematica, and Matlab the prof had decided that the focus should be on the thing that was most likely to get you fully outside of that mindset.
It took about a third to a half of the semester to get the language to actually "click" for me.
1/
-
The course wasn't a "prolog course" but it applied prolog in circumstances for the applications in the domain (grammars? prolog! etc)
It was one of the single most valuable courses I had in my time there.
Not because I use prolog all that often—I do far more with functional programming than logic languages—but because it changed my entire perspective on what a programming language _could be_.
Not that prolog is the pinnacle, but because it is _different_: what else can be done?
2/
-
I take a variety of lessons from that class, even today.
One is: the things that they are teaching you are often not the things that they say they are teaching you.
They aren't _just_ teaching you physics, or calculus, they are teaching you how to think about and deconstruct problems. How to analyze systems.
People get very hung up on "will the tech they are teaching you be useful in a career?"
But that's not the goal or the point of those classes. Those classes are there to open doors.
3/
-
Nothing that I used in school is still relevant from a tech perspective. Not one thing. Not because they weren't relevant when I graduated, but because looking back 20+ years later the field has changed.
* I rarely write in C++, and the C++ I use is nothing like the C++ I used in school.
* I didn't use Java in school, but I do daily today. It's also changed.
* I never took a databases class, I've spent the majority of my career in data engineering.
* IDEs, versioning, tooling? all different4/
-
The discrete math courses have stuck with me and come up surprisingly often, but not on a daily basis. My public affairs minor _does_ come up daily, but not always in terms of specific classes but rather just because that's part of how I learned how to analyze power structures and deal with hierarchical systems.
But to go back to prolog: I don't use it but rarely, and always of my own volition.
Yet I can say with certainty that it has helped me tremendously in my career, throughout it.
5/
-
Yet when I've talked to interns and grads my advice isn't "learn prolog, it will open your mind" (though yes, I do recommend learning prolog for most engineers at some point) it is instead:
* Keep learning. Through your career. Keep at it.
* Know what you know and what you don't. Learn your areas of competency and when you are outside of them.
* Try to see things that are "irrelevant" as "teaching you how to think and how to adapt quickly."
* Don't get hung up on specifics, those change.6/6
-
@hrefna learning haskell broke my brain in the right ways to start seeing language concepts as the isomorphisms they are, and I'm very thankful for it. it helps me every day I'm writing OO code because now i *get* what structure I'm building.