What programming language should you learn?

MATLAB is what scientists use to do special scientist things. R is what scientists use when they can't afford MATLAB.

Cute, but a little bit out of date now.
(Scientist who does special scientist things, and is totally over MATLAB, even though it was my first programming language.)

1 Like

Apologies in advance if this sentiment has already been expressed in these threads.

When I’m interviewing someone for a job, about the least important thing is what languages they know. I’m far more interested in finding someone who actually knows how to write code, rather than finding someone who knows every last detail of every operator and every obscure syntactic detail of language X.

So much of what passes for programming today is so damnably trivial. People load some packages, connect some ins and outs, and voila! Look ma, I’m a programmer too!

For my money, the title of Niklaus Wirth’s book Algorithms + Data Structures = Programs, says it all. (Though I’d put data structures first, because they come first in my book. Yes, chicken/egg. But still.)

Bring me someone who understands how to transform the available data into the data we need. That person will be capable of learning whatever language we’re using, probably in a week or less. Because, y’know, we have a palette of available languages. And when events change the shape of our solution space and the right-tool-for-the-job principle means we choose a different language, I don’t need to look for a new flock of programmers.

I will add the caveat that my comments about the universality of skills may well be limited to to the mainstream programming paradigms. I have not tried newer “niche” languages like Haskell, where the approach to coding and the skill set might be qualitatively different. (Frankly, they frighten me a little bit. I’m probably afraid to learn that my lifelong love for and mastery of programming has left me unprepared for some new and more powerful paradigm in which I will never excel.)


Enh, The usual high school BASIC and Pascal as it was the early 80s. FORTRAN while I was an engineering major. Taking some summer classes I took PASCAL again and assembler which got me an internship doing programming at which I learned at least for a day job I really really hate coding.
Assembler was pretty cool fun though with all the steps to move things in and out of registers before doing operations and such.
That said I do make the odd .bat script and am boning up on Powershell.

I see this gif used often. I do not understand its meaning. Can you explain, please?

…is there some sort of an animation dictionary where one could look up the meanings? It is way easier with textual mode of communication…


i personally dislike spiral bar charts because if you straighten out the lines the outside lines gain extra length which defets the significance put on bars, you are expected to just measure the degree they reach, but then it makes the chart kinda pointless and inefficient. I feel it is a poor way to represent data.


Half hour or so spent reading the whole thread. Still no idea what the gif means. :open_mouth:

(I find the trend with gifs-as-responses somewhat annoying because of the inability to read the expressions. I love the text-mediated communication and people insist on cramming nonverbal crap into it too. Grumble. One area where I have some advantage (albeit of one of a blind man in a dark room), and it is being taken away from me. Oh well. More grumble…)

Well, back to OpenSCAD/laser experimentation (with text() and stencil-able fonts) for me. :smiley:

You’re too good for a for loop!? My grandaddy wrote for loops, and he liked it!

(I find that good algorithm people arent great programmers, and good programmers aren’t great algorithm people. Team coding for critical areas where there is contention between the two is awesome)


Saying it’s popular is deceptive, though. A lot of people use Java because they have to, or because their predecessors did.

It’s the cobol of 21st century. Unsexy to the extreme.

For loops are ok, but list comprehensions are more useful.

for (Object item : items)


(apply prn items)

or less sexily:

items.each{|item| puts item}

If I don’t have $i I get lost and have to press my emergency button. :wink:

1 Like

Wait, slurping noodles is perfectly apt for talking about lisp.

As long as we’re not posting barfing gifs then I’m cool.


If there’s a general question of what language someone should learn, with no other parameters, then Python does seem to be the obvious one to recommend. It’s designed to be relatively easy to learn and use, and there are more free texts and other learning resources for self-study available online that feature Python than any other language.

A few years ago, I was looking for resources for my stepsons, to encourage them to learn programming. I saw Scratch warmly recommended, but aside from a few short introductory tutorials, there were few resources available online. It seemed like it was mostly pitched at schoolteachers who would be expected to purchase expensive textbooks from academic publishers. Also, Scratch was obviously a “toy” language, and I was told it wasn’t Turing complete – I couldn’t figure out if it had a general looping structure – so it seemed like a dead-end.

As an alternative to Python, perhaps Lua would be a good choice. The documentation is somewhat limited, but it’s fairly simple. It’s designed to be embedded, and a lot of games use Lua for scripting, which seems like something that would appeal to kids.

1 Like

I’d rather suggest javascript, it’s easier to do “impressive” things quicker.

Also, doesn’t @CodingHorror have some sort of saying about how anything that can be written in javascript will be?


I am of the opinion that coding patterns and structures should be taught first. So in my opinion JS is a great place.

What if undefined was a function?


Javascript. It is FREE. Low bar of entry. No need for any fancy software or complicated setup, any browser can run it. Covers and has a surprising number of features and concepts that other languages use. Things like CodePen and JSFiddle are great for playing, learning, and getting feedback. Tons of libraries, most also free. You can use javascript in a lot of situations and jobs it is a very practical swiss army knife. You can program server side, client side, mobile apps, etc all with Javascript.

I know a lot of languages but if I were starting all over again today that is where i’d start.


Are you familiar with mobile apps (primarily for Android) in javascript? If possible without the monstrosity of the Android SDK? Would you have any pointers, please? If possible with access to sensors and bluetooth serial ports?


Android sdk

That’s exactly the answer I hoped to not hear. :stuck_out_tongue: :frowning: :cry: