Following on from a chat during yesterday’s virtual meetup, when Haskell got a mention, I’ve been thinking about programming languages, and in particular, what might motivate someone to learn a new one…
- to add to one’s toolbox
- to gain a widely marketable skill
- to contribute to a specific project
- to work in a specific narrow field
- to expand one’s understanding of how programming can be done
I think there might be a sliding scale of practice compared to theory, in there.
My own inclinations are more towards computer science than software engineering, so the very popular languages such as Java, C++, php don’t hold a lot of interest for me. Whereas languages with particular features, such as Lisp, Scheme, APL, Haskell, Erlang, do hold interest, but not quite enough for me to try to learn them. It’s the tinkerer in me that likes to use awk, python, C, assembly language, JavaScript. But while python and JavaScript are sophisticated languages, my use of them isn’t sophisticated.
I haven’t even mentioned ruby, perl, Go, R, Cobol, C#, Oberon…
Which programming languages can you use, and why did you learn them?
2 Likes
In order of learning:
-
MATLAB - Because it was compulsory and engineering at university made it seem like the only language you would ever need. They were wrong.
-
C++ - I needed computer vision packages for my UAS project and OpenCV was the most popular. Happy coincidence the autopilot (Ardupilot) was also C++.
-
Python - Needed a simple way into machine learning and computer vision. Most of OpenCV was now available in python with greater support/tutorials and Keras was recommended to me. It made my dis easier as well as it forced me to format nicely making debugging easier. Got me out of bad habits.
-
VBA - Needed to automate my job in procurement before I was an engineer but I wasn’t trusted with admin privileges (even though I worked in IT at the same company less than a year earlier).
Played with Arduino, HTML, JavaScript and more but haven’t built anything much more complicated than hello world!
so cant say I’m competent.
I guess my main reason to learn a language is as a tool to enable me to do something.
2 Likes
I once read that programming languages are as close to alchemy as we get in the modern world - an interesting take.
I’ve never actually sat down and learned a language properly, I’ve typically only learned what I needed to to achieve some personal or business goal. When I was at school, the internet was an escape from the real world and I wanted to contribute and get involved, so I learned HTML, then later CSS, then later PHP and now Javascript. I did once buy a massive book on VBA from PC World but I don’t think I got very far, it was far too daunting to learn a whole language from scratch from this epic tome.
The languages I am interested in learning are also about their utility.
2 Likes
I believe I’m similar to you, @kerrance, as I’ve never tried to learn a language with any structure.
I just smash things together and try to find a fix when it inevitably breaks. This does mean I often find out on the subtleties of languages when they look like bugs to me.
1 Like
I should probably confess my own history - I’ve never been terribly competent or had much by way of training. I think I started with Basic and Fortran - maybe even Fortran first - both only on paper. At school I did some Cobol, remarkably enough, and something else, possibly Fortran, but maybe Basic. At Uni I did get some training: a one week intro to C, and a term on Pascal. Imp I think I was expected to just pick up and use. At work there was DCL, PL/I, and in my second job a colleague introduced me to awk, and the famous awk book. At one point TCL was the thing, at one point perl. Later on there was python. There was some embedded language in a tool which bore a relationship to Lisp, I think. JavaScript I think I tinkered with only at home.
Somewhere in there must be various assembly languages - I did have a one week course on 8051 once, but otherwise it’s all from books.
I’ve never studied or magically picked up object orientation, although I’ve read about it - all my programming is Algol-like at best, and spaghetti at worst.
2 Likes
This 20 min talk comparing functional with object oriented languages might be of interest:
(I rather like a downbeat Midlands accent for this, despite the click-baity thumbnail. And, as is obvious, I like a bit of a historical approach too.)
I’m pretty sure I watched that video the other day.
I believe he’s one of the the authors of the Reactive Manifesto.
I definitely like the reactive/event-driven approach, particularly in distributed/service oriented design - keeping the interfaces/boundaries strict and clean, and getting away from awaits & thread pools or polling towards callbacks via a neutral transport. Just a bunch of individual ‘things’ that consume specific messages perform work & emit other messages.