Originally posted by: GodlessAstronomer
As a totally unqualified programming noob (talking about myself, not you!), I would suggest Java for a couple of reasons. It's a strongly-typed language that gives useful compile-time errors. It will require you to learn the object oriented paradigm which by most accounts is where the field is going. I have heard it is a language that is easy to learn but it is also very powerful and widely used.
While Java is a useful tool to have in your repertoire, I wouldn't recommend it as a first language (this is coming from someone whose first language back in High School was Java). A great deal of learning Java is voodoo coding; you start with "Hello World!" and nobody explains what public static void main(String[] args) means, and copy a lot of stuff from the book or the teacher or the website. Yes, no matter what you do, you will copy a lot of stuff. But with many other languages, you'll understand what the stuff you're copying is doing. If I were to do it over, Java would be my second language, but not my first.
Originally posted by: TheEarthWillShake
VB.NET and ASP.NET to start, then maybe C# and ASP.NET.
I would also suggest taking a intro to C++ or any course to help get you into the programming mindset.
I'm a noob too but I got a internship at a company as a .NET programmer.
School wise C++ was my first language I learned. Then VB.NET for a lot of courses. I jumped into C# pretty easily.
VB.NET is a terrible first language for a number of reasons. As GodlessAstronomer noted, one of Java's advantages as a learning language is that it is strongly typed. VB, on the other hand, is 'optionally typed,' meaning that it is extremely forgiving. It's becoming popular as a teaching language because it is easy and people stay around to take courses, not because it is a well-suited teaching language. VB was designed as a rapid application development language for developers who needed to write a simple app quickly; it is a poor teaching language and has very little in common with any other development tool. Again, this is a useful tool to have, but a poor first language. (My university's CS101 course is Visual Basic. It is taught by grad students who themselves learn VB only for the class and then forget it, to students who will almost certainly drop out as soon as they realize that the other classes are much harder).
ASP.NET is not a language. It is a development framework. Stacking it with VB, you get a whole lot of "ooh look what I can do" and very little knowledge of what you are actually doing. Given that this is one of the criticisms of modern CS education, this is a poor place to start.
C# is, to all intents and purposes, Java.NET. If you're going to learn C#, just learn Java. Again, C# insulates you from a great deal that you really ought to be learning; especially when used in conjunction with ASP, it will allow you to create very pretty web pages with absolutely no idea how anything works.
C++ is as bad as Java as a first language, but not as bad as VB. A major problem with trying to learn C++ first: it was designed for C programmers who wished they could do other things. As such, it is almost a superset of C, with a great deal of additional syntax and language features. For reference, "The C Programming Language" by Kernighan and Ritchie, who developed the language, is 274 pages. "The C++ Programming Language" by Stroustrup is 911 pages. Trying to learn C++ first, you put yourself in danger of information overload.
This article, while a bit dated, makes points that are still valid. (There's a small typo [it says if x=1, should say if x==1] under "Regularity"). The author concludes that C is an appropriate first language, passing over Pascal because Pascal doesn't support object object orientation or polymorphism. I tend to agree.
Learning any of the .NET languages will make your life easier in a course that teaches said .NET language. However, you're hurting yourself in the long term by insulating yourself from what your code is actually doing. I advise you to learn C; pick up a copy of
K&R.
Finally, there are more considerations than "what language should I learn." A good CS education barely touches on learning languages; usually, they explicitly teach a single language, and then teach you how to learn other languages quickly. Languages come and go; there are no more entry-level COBOL jobs. The theory, though, stays the same. The best thing for you to do, right now, is not to learn to program much beyond "Hello World" and flow control. The best thing is to learn some discrete mathematics and some data structures. You ought to walk in to your first day at class knowing what a stack is, what a queue is, and how to calculate n choose k. I wish I had known these things, and I'd trade having known how to program for having known some theory in a heartbeat.