

Programming languages for beginners - brox
http://blog.borud.no/2010/07/programming-languages-for-beginners.html

======
EatenByGrues
I originally learned to code with QBASIC and then C but if I had to do it all
over again I would pick a language with a REPL (so ruby, python, lisp etc.)
That speeds up the understanding of the language dramatically in my opinion.
Being able to instantly experiment and get results is priceless.

~~~
Avshalom
I wonder if a REPL might be counterproductive in a first language. Everyone
seems to agree that the ability to produce a "thing" quickly and easily is
important. In contrast every time I see an tutorial or introduction to a
language with a REPL making a thing is always de emphasized in preference for
showing off the language facilities.

Well except Logo which was all about making art "things."

~~~
ippisl
Research has shown that rapid feedback is a needed element in rapid learning.
this has been proven true in many fields. REPL gives you this.

And from my experience , with a REPL , making things is easier and faster.

And in languages without a REPL , the barrier to explain something is
bigger(you have to write a lot of cruft code) , so it might make more sense to
build something rather than showing language features.

------
xtho
An evaluation of the usual suspects would have been more interesting. I'd also
suggest: start with a small language that doesn't surprise people -- like lua
maybe.

Anyway, I personally learned much from my early exposure to Pascal (after
having learned BASIC as first language), which was designed as a teaching
language that doesn't meet any of those requirements.

~~~
bborud
I did a (very shallow) evaluaton of the usual suspects in a private email not
too long ago, but these things tend to be...well, shallow and very subjective.
Great for creating flamewars, but not great for figuring out what to
emphasize.

Also an observation I have made is that a lot of people who give advice on how
to learn programming didn't learn programming the way they recommend. Well, at
least not the programmers I know -- which may or may not be representative of
larger populations.

For instance, I learned ver low level languages early; after basic I learned
Z80 and x86 assembler and I regularly wrote whole sections of programs in
inline assembly (well, hexadecimal op codes) when i learned Pascal later. I
understood things like pointers, registers, stacks and clock cycles.

Today most people (including me) will say that people should focus on higher
level languags first. To spend more time focusing on very basic language
concepts and develop an understanding of algorithms and structure. But during
job interviews I've come across candidates that make me doubt this. It is
quite common to come across people who can't, say, do a back-of-the-envelope
calculation of how much memory a given data structure will consume for N
elements of average size M. One candidate even said that he believed that an
object reference in Java was "about one byte long". (And yes, I did ask how
many bits in case he confused it with "word length").

(Of course, with "high level" I am not suggesting that you should start
introducing closures, type inference and various scoping types the first week.
People need a bit of background to find those concepts meaningful)

------
effigies
My first two were Logo and VBA. (I don't really count the tiny bits of
dabbling in Basic. I got bored by hello world.)

I'd say both of these meet his criteria. But neither of them got me hooked. It
wasn't until I started on Perl to help a friend parse chat logs that I really
started getting into programming.

~~~
bborud
It Logo and VBA meet "my criteria" I must be terribly bad at getting my point
across.

Kinda suprised to see a random blog post by me end up on Hacker News. If I had
known I would have made more of an effort :-)

~~~
effigies
Woops. I totally missed this one:

> It has to be a "real" language. As in: a language that is actually used by a
> significant number of people in paid jobs.

Either way, as first languages go, they're not bad, as they let you get those
immediate results. There's pretty minimal fluff. (I think. To be honest, I
couldn't write anything in either of them, anymore.)

I suppose you could call them oddball, though.

------
shalmanese
aka php

~~~
bborud
PHP certainly is instant gratification, but its marriage to the web server
sort of makes it a bit domain specific (though, it is possible to use it
outside the web sever. it just never caught on). mostly I do not recommend PHP
because it is messy. there are far better languages that share similar syntax
that are cleaner, more consistent and have both better libraries an better
mechanisms for managing libraries.

one of the languages I specifically was thinking of as a bit annoying is Java.
before you are good to go, you need to set up the JVM, sort out your classpath
("help! what's a classpath!?"). then, when you are ready to program you
instantly have to think in terms of classes and you are thrust head first into
what "static" means etc. and dear god what a bucketload of frustration you are
in for if you ask for advice and end up trying to make heads or tails or
Eclipse or, god forbid, Maven.

