What programming language should you learn?

It is certainly very interesting to plot popularity of various languages over time.

Unfortunately, that doesn’t tell you anything useful for answering the question “Which programming language should you learn?”.

The vastly more critical consideration for someone who hasn’t yet learned a programming language is which programming language is easiest to get started with. Perhaps even more important than that is some introspection on what one’s goal actually is. There are many different types of programming. It is a “long tail” occupation-- people achieve success and career satisfaction in many different ways using technologies/platforms/lanuuages which are far away from appearing on any kind of popularity index.

Sometimes it is better to work in a niche than to join an ocean of similarly skilled workers doing an “in-demand” job.

3 Likes

http://crashworks.org/if_programming_languages_were_vehicles/

2 Likes

Hay!! Just cause I used to be a hippy and used to have a beard doesn’t mean I…

Shit I also learned to drive in a vw bus. I’m so derivitive.

2 Likes

VHDL is straight-up awful. the people who do use it (europeans) completely love it, and i understand why (lots of abstraction) but IMHO it’s just way too much abstraction for hardware design. the language was designed by committee and is a US government standard… here in the US VHDL is really only used in universities.

verilog has a lot of problems, but people first made up for them with verilog-mode in emacs, and later the verilog2000 and system verilog languages appeared which fixed a lot of the syntactic issues with verillog97. system verilog put in lots of object oriented stuff and data structure support that makes writing testbenches a lot easier. up until that point VHDL had a huge advantage in the testbench department.

another issue with VHDL is that since the user base is so small, when you really start pushing the language features you run into all kinds of fun bugs in synopsys (logic synthesis tool). getting those fixed is hit or miss, so you end up coding around the compiler bugs.

2 Likes

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.)

3 Likes

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…

2 Likes

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.

2 Likes

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)

2 Likes

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)
  System.out.println(item)

vs.

(apply prn items)

or less sexily:

items.each{|item| puts item}
2 Likes

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.

2 Likes

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?

2 Likes

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?

3 Likes