This is the NG version of a article I have been writing. You can find the full version that is updated all the time at: Coder Profile
Many times on forums and in chat rooms I hear the same question over and over. "What programming language should I learn?" The answer is different for every person out there that wants to pick up programming. These tips are here to help people who would like to start programming pick out there first language. So go grab a pen and some paper and get ready to think and jot down some notes.
First you must really sit down and think about what you want to accomplish when programming. Do you want to make cool web apps, or maybe a quick windows app to calculate the amount of paint needed for a room? How about creating video games, or your own operating system. Maybe you want the option to try all these things, and if you want any of these things there is a programming language for you. You just need to figure out what your needs and wants are. Do some of your own research on some popular languages and find out what they offer.
Next you must decide on the level of difficulty you are willing to try. Never be afraid to try something harder then you think you can handle. If it is too much for you, you will know early enough to pick out a new language and not waste too much time. Most languages are the same at there roots anyways. You will find this out once you learn how to program.
Another thing you want to consider before picking out a language is compatibility. Do you need or want your app to work on Windows, Linux, and Mac? Or are you comfortable with just running on Windows or another environment? Most of the time this will be an easy choice. Since you are just starting out you will most likely just pick a language that will run on your current operating system.
Are you going to be able to find a lot of information about your language? What types of books, web tutorials, and documentation are there available for your language? You are going to need something to learn from and documentation is the main thing you will be looking to. Though it is always nice to have a good community around the language as well, most on-line communities are on forums or IRC. Remember that Google is your friend. Just look up your language on Google to find tutorials, and on-line community's, check Borders or Amazon dot com for books.
Type of language is also important. There are three main types of languages (there maybe more). First is web languages. Web languages are the code that makes up the web. When you open your Internet browser such as IE or FireFox it reads this code and then displays the sites based on the instructions that are written behind the scenes. Next are interpreted languages. Many web languages also fall in this category. When a language is interpreted it means that the code is read by the computer as it is executed. This is unlike our next type called a compiled language. When a language is compiled it means that you must first pass the source code threw a special program called a compiler. The compiler takes the human readable source code and turns it into computer readable code of ones and zeros. The program can now be ran and tested.
We will talk quickly about the level of a language. Computer do not understand source code they only understand 1s and 0s. When a language is said to be a low level language it means that the source code is more closely related to the ones and zeros. If a language is high level it means it is closer to human readable language. The benefits of a lower level language is speed and power. The problem is you wouldn't want to write an entire game in a low level language because it would be large and hard to understand.
Also do not stress to much over what language to pick. If you are just a hobbyist then pick whatever language you enjoy the most. Don't worry about what's cool or the newest thing go with what works for you. If you want to become a programmer or get into the information technology field pick a language that is going to let you learn the most about programming. Odds are you are going to be learning new languages later on anyways. So as long as you have programming basics, and techniques down you will be able to learn a new language very easy. The most important part is to have fun! Enjoy what you are doing or why do it at all?
Now I will give some language reviews for some popular languages out there. To be noted this is not a full review of these languages. You should do more research on a language that might interest you in order to find out more. There are also many other languages other then the ones listed
Type: Interpreted - Scripting
level: Very High
Geared for: Everything
Documentation: Great Documentation, many books, and on-line tutorials.
Side notes: easy to learn, and very powerful. You can do just about anything with this language. Great for beginners.
Geared for: General Purpose, Text Processing, CGI scripts, Automating Tasks
Documentation: Many books, and on-line tutorials.
VB / VB.net
Geared for: Windows applications
Documentation: Well supported by Microsoft and many books.
Links: http://msdn.microsoft.com/en-us/vbasic /d efault.aspx
Side notes: Not a great language, but easy to use and whip up a quick app. Not well respected by other programmers. Dot net is compiled differently. Research the dot net platform for more information.
C / C++
Geared for: Everything
Difficulty: Mild - Hard
Compatibility: Cross Platform
Documentation: Tons!! Books, on-line, people, just tons!
Side notes: Well respected language. Take the time to understand this language, it will pay off. There is a reason it is the industry standard.
Geared for: General, The Dot Net Platform
Compatibility: Native to Windows, Cross Platform
Documentation: No lack of books or developers to speak with.
Links: http://msdn.microsoft.com/en-us/vcshar p/
http://www.microsoft.com/express/vcsha rp /
Side notes: Not directly compiled to machine code. The mono project is working on making the language cross platform but does not have all features of the Microsoft dot net platform.
Geared for: Everything and portablity
Difficulty: Mild - Hard
Compatibility: Cross platform
Documentation: Well documented
Links: http://java.sun.com/docs/books/tutoria l/
Side notes: I have heard good and bad things about this language. Not a choice I would pick for a beginner.
Geared for: Special niches when needed
Difficulty: Very Hard
Compatibility: Each processor architecture has Its own version.
Side notes: Has a big purpose in the programming of embedded systems (you name it, anything from washing machines to tv's). If you learn assembly for one architecture, than it isn't too difficult to code on different ones. You just have to learn a new instruction set.
Remember to have fun and learn all you can. This is the most important part of life.