Well except Logo which was all about making art "things."
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.
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.
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)
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.
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 :-)
> 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.
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.