BASIC, more specifically, TI99/4A BASIC, was my "first language". That was back in high school. Went on to college and started learning "real" languages (read: they actually do things). First was Pascal, as an intro to CompSci, then, the following year, COBOL. Pascal I'd recommend simply because it makes learning structured programming and a pantheon of algorithms like sorting and database manipulation quite easy for the uninitiated. (COBOL I wouldn't recommend to anybody!)
From there I went on to a semester of C, and failed it with flying colors. I tripped-up on the most basic concept of the language: pointers. I couldn't understand them, couldn't understand the indirections, the referencing, couldn't keep it all straight in my head. None of the other languages we went over dealt with this concept. I gave up on the language and took an F.
Fast forward a few years. I pick up Perl because a friend contracts me to design her website and incorporate a few features. Excited at the prospect of finally being able to write CGI, I dove in head first. Boy, was I ecstatic.
Now, two and a half years later, I'm understanding, writing, and using advanced Perl techniques like OO, modules, references and regex. Recently I've been bitten by the bug to return to C and C++ so I can write natively-compiled apps which run fast and handle GUI's and whatnot (yes, I know there's Perl adaptations for these), and here's what I found to my surprise: after dealing with Perl, I finally understand C's deal with pointers! I'm able to draw parallels to my experience with Perl, and it all goes down like water.
I really wonder if my experience would've been better had we been taught Perl in the intro to CompSci class instead of Pascal. Both are good languages; Pascal is good as a compiled language (a useful concept to teach the learning), but Perl has so much more potential for more advanced programming and more usefulness down the road.
After changing my neural pathways for the better, it helped me to understand.
In reply to Re: Learning Perl as a First (programming) language