Beginner Programming Languages?

Hey, I've been thinking about learning programming, but... I have like no idea where to start. So, seeing as quite a few smogoners have some experience in programming, I'd like to ask for help - what would be a best language for a complete newb to learn to get the basic knowledge before moving onto more complex languages?

I've heard some people say that learning XHTML first would be a good idea, and since I'm quite open minded (and surely wouldn't mind learning a thing about two about web design :P), that would be a possibilty, as well as any other web languages or whatever might be useful

Thanks in advance :nerd:
 
If you're looking into web, learning HTML and CSS first is important although they aren't really programming languages; they're markup languages. From there, move onto Javascript which will leverage your HTML knowledge and introduce some programming concepts to you.

Once you've got those basics down, look at Python or Ruby with a web focus. Ruby on Rails is a web framework using Ruby that's quite popular. RailsTutorial is a good free tutorial for it. Python is also very popular for the web and is the language that Smogon's framework is built on.

You can skip Javascript and come to it after Python or Ruby as well.
 
It's not the case that you start with beginner languages and move on to expert languages. I use Python pretty exclusively these days, and it's a language that is great for both beginners and experts.
 
i hope suggesting Visual Basic doesn't make me a dick.

Yeah, that.

Visual Basic serves as an excellent introduction into object-oriented programming and some fundamental concepts therein, such as loops, logic trees, inheritance, encapsulation, etc.

You could always try JavaScript and Python, which are languages that allow you to build websites and servers and things (VB and Java are application-based programming languages)
 
C

It will be frustrating, but it will teach you not to be a horrible programmer.

Or if your interest is exclusively web based, what Firestorm said.
 
Python is also good for applications. It's a great language for beginners and instills some good practices due to its syntax being formatting based. It's a very versatile language.
 
Visual Basic serves as an excellent introduction into object-oriented programming and some fundamental concepts therein, such as loops, logic trees, inheritance, encapsulation, etc.

Seconding this. Though the transition from event-driven, GUI based VB to a non-graphical, imperative C will be difficult, learning VB will give you a basic idea about programming. Also, you can develop useful applications relatively fast with it. This positive feedback loop of results will help later when you start learning other languages which might have a longer learning curve to achieve the same type of results.
 
While starting with a simple language and moving on to a harder one sounds all well and dandy, proactive interference could mess with that plan very easily. It is very easy to get hung up on a particular language's syntax and way of doing things, when the harder language almost definitely has more concepts to learn that it isn't a simple matter of changing the syntax. This is made even worse by the fact that most beginning programmers only learn syntax and not the fundamental concepts of that language. I keep meeting programmers in my classes who don't understand how the Java heap works, or even worse what Pass by Value means in the Java language. These programmers managed to pass Data Structures.

In other words, I am denouncing the very common Java to C/C++, and the much more extreme Visual Basic to C/C++ which has been recommended in this thread. It is much easier to go from a language with more concepts to one with less than the other way around. Java/Visual Basic hide the nitty gritty details that you need to be aware of in C++, and remove some of the other nitty gritty stuff from C++. As an example, take the very common Swap routine:

Code:
// given a, b
MyClass temp = a;
a = b;
b = temp;
In Java and I presume Visual Basic, this code is fine. In C++, however, this code works, but instead of changing references as what would normally happen in Java, you just copied a twice and b once. Congrats, if the objects are large you're wasting performance.

I am speaking this from personal experience mostly. I learned Visual Basic first, then Java, and then I was so hung up on Java that I wasn't able to learn C++ right for 6 years no matter how many times I tried. I needed to first learn C# then Python before I had enough experience in "abstract differences between programming languages" to tackle C++.
 
While starting with a simple language and moving on to a harder one sounds all well and dandy, proactive interference could mess with that plan very easily. It is very easy to get hung up on a particular language's syntax and way of doing things, when the harder language almost definitely has more concepts to learn that it isn't a simple matter of changing the syntax. This is made even worse by the fact that most beginning programmers only learn syntax and not the fundamental concepts of that language. I keep meeting programmers in my classes who don't understand how the Java heap works, or even worse what Pass by Value means in the Java language. These programmers managed to pass Data Structures.

This happens because people learn a language for the sake of learning the language and not to gain knowledge and understanding. And the cause of this is that there is no motivation to learn as they do not provide quick results. They fail in shorter term even though they would be excellent tools to learn in the longer run.

I started with VB and went to C->C++->Java/C#. If I had started with C instead, no doubt I would have learnt to program better but I do not think I would have the interest to move forward. It does not me help in creating interactive graphical programs which as a beginner was my goal and I assume is the goal of many who take up CS.
 
Back
Top