Looking back, I learned various flavours of BASIC, and many other languages too. I noticed things like
LOGO (or maybe Logo, we'd have to ask a grammar freak who needs us to speak proper like, but yeah, but no... but), which is a fine language, but it suffered from less code examples compared to BASIC, and I think this is why it was used less.
Any language which can do arithmetic and looping and symbolic abstraction is fine as a first language, but the 'need' for un-necessaries will make it harder to learn. A few examples follow.
Java: An immense amount of code is needed to display a window, considering the simplicity of the description. This is more of a fault with the standard libraries and not
java.lang, even though it also should be made nicer and cleaner to code with (public main args[] for example, instead of extends Main). Especially with the default
package modifier not having to be typed in. No Java programmer seems to have released an easy abstraction layer providing these package simplicities. Maybe ask Oracle for a nice
javax.simplicity.
C: #include and friends and a not so simple debugging process. I hate C++ as it's a perverse idea to extend C that way. Use a function pointer or Java and gcj or a nicer object language. C also needs a lot of boilerplate code for anything interesting to be done in a GUI.
Pascal: Try Modula-2 or 3 instead. After all that's what Pascal's designer did.
There have been a few calls for
Lua, and it's not bad, and is a very small system (lacks bloat which is a good thing). But the batteries included effect of a larger code base is perhaps more important when people are learning.
I have started on a language design myself, and it has no bloat, but it has no IO yet, and no code examples. Many languages never become anything more than research tools. It's most important feature so far is that all variables are active, and so function calls and data recall are the same process. This makes sense as an inversion of the "code as data" principal, to become "data is just literal code" . (should this dot not be inside the quotes, and correctly called a full stop)?

Or thought of as "how can stopped progression ever be started if nothing is progressing to be able to reference and start the thing to be started?"
The language also has a postfix stack model, as well as a list model, and also a method of fetching the upcoming program parse stream, so as to allow definition of prefix and infix words defined by the user. The preference is for using postfix functions, with prefix parsing when un-evaluated things are needed.
There is no best. All trade-offs lead to a difference of understanding. A million minds of the same form are not as adaptive as a million minds free to form into many lingual groups.
p.s. the idea of swearing as a bad thing, is because control fascists can't stand criticism.
Pi=B256R0USB CL4SD8GB Raspbian Stock. 13D https://dl.dropbox.com/u/1615413/Own%20Work/Dimensions.pdf ... Looking for an interesting project to hold my attention.