4 ms·
There are a couple considerations. First, you want a language that is not too intimidating or difficult to start with, or you may fall off the bandwagon. Many
by cullenking 17y ago
There are a couple considerations. First, you want a language that is not too intimidating or difficult to start with, or you may fall off the bandwagon. Many programmers broke their ground on languages which allowed them to quickly get something tangible (a reward), like BASIC. Some people don't need this, and can jump straight into a language like C and love it, however only you will know if this suits your personality.
The other consideration is to pick a language that has some sort of structure and encourages a good understanding of underlying concepts. Working with C for example, really forces you to know and understand how a computer works. Something like Ruby (my favourite) allows you to easily ignore these inner workings. This has a speed and ease of development advantage, but could be detrimental to your core understanding of CS.
I personally love programming with Ruby, however from personal experience I can say the large amount of different programming styles which Ruby can encompass can cause you to write some really odd and sloppy code while you are learning. Additionally, there are an infinite amount of crappy examples of Ruby code, and relatively small amounts of good code. My recommendation if you go the route of Ruby is to ignore many of the articles/blog posts on beginning Ruby (they are drumming up ad traffic), and dig around in the source code.
Additionally, you can writ Ruby in a multitude of styles. Flexibility is always good, however, it can lead to some real serious slop. My first year or two of writing programs that were more than simple scripts were with Ruby, and they are some awkward and sloppy programs. However, the pleasure of producing those programs was probably greater than if I had tried to struggle through with something like C.
I am lately leaning towards suggesting javascript or actionscript for a first learners language. First off, both have an awesome ability to quickly get you something tangible. They have a really good layout system (mxml or html/css), and you can easily share your creations with others. Both can can be written in a C style, or can be very object oriented. Neither require crazy development environments.