A common question in many computer programming forums is “Which is the best programming language to learn first?”
There seem to be three common answers:
- What do you want to do?
- It doesn’t matter.
- Someone’s favorite programming language.
Some recommendations are obviously going to be biased, but the answer should be based on what you want to do as a programmer.
Are you into games?
Many young programmers are aspiring game programmers, usually ignorant of the game developer’s lifestyle, or at least that’s what I hear in forums and articles. Game programming is not gaming any more than racing cars is the same as mechanical engineering.
That being said, any budding programmer aspiring to get into games should learn C++. There are recommendations against it since it is such a huge and daunting language. But for a couple of reasons I disagree.
First, it was my first language. I did have a hard time, but then again I had a hard time learning the piano and the guitar. Being hard is not a reason not to do it. What really set it off was Joel Spolsky’s article on the Perils of Java Schools.
Joel’s article is his old-man-curmudgeonly complaint that universities teaching Java as an introductory programming language doesn’t do a good job of weeding out the bad programmers from school, and after a few months of programming I could see why.
There is nothing wrong with Java, but there are inherent qualities that don’t force the new programmer to think about what’s going on inside the machine. No pointers. No memory management (Java takes care of that for us). No crusty old programmer barking over our shoulder about the good old days of C and Lisp.
What if you want to develop Android applications?
Then start with Java. There’s also some XML but you can learn that as you go.
What about iOS?
If you want to develop mobile apps, but would rather code for iOS, then you’ll want to learn Objective-C (you’ll need a Mac for this).
While I do agree that you should code with the language(s) you’ll need to build the programs you want, I do have a couple of caveats with that advice.
First, after getting your feet wet with your first programming language, I recommend learning at least one more—if not two or three or more—programming language.
You might never use that language once you learn to write some simple programs, but learning new languages teaches you to think about the computer and software in new ways, much like introducing a new exercise to you workout routine will challenge your muscles in ways they haven’t been tested before.
All that said, here are some of my recommendations for choosing a specific programming language:
C++: While it goes against many recommendations as a first programming language, many young programmers will choose it simply because it is the preferred choice of many game developers. Or they might approach it as I did—as a complex, difficult language—and so choose it for just that reason. I recommend C++ Primer (5th Edition) as an introductory text. There are also several online resources, such as cplusplus.com.
Python: This is MIT’s language of choice for their introductory computer science and programming course. Think Python: How to Think Like a Computer Scientist is another great introductory text.
Lisp: For the pure sake of learning a great language which you will likely never use—unless you plan on getting into artificial intelligence—Lisp is a good start. I recommend the free courses offered by MIT. There is also more recent Berkeleyversion of the course.
Linux: Linux isn’t a programming language, but an operating system. The first place I would play around with Linux is the command line, specifically theCommand Line Crash Course by Zed Shaw.
Objective-C: I didn’t forget about the Mac enthusiast. You will need a Mac computer to do it. Check out iDeveloper to get started. There is also a free Stanford class on iPhone application development.
In the end, choosing your first language shouldn’t be a big deal. If you feel you have chosen the wrong language, you can always switch, and learning a new language will get easier and easier.
Programming isn’t about languages; it’s about using the tools available (and making new ones) to get the computer to do what you want.
Just pick one a stick with it for a few weeks. It will likely make you a better programmer in the long run just knowing the language, even if you don’t use it ever again.
What are your suggestions for choosing a first programming language?
An interesting article caught my eye at jobstractor.com — the programming language trends review. The company analyzed more than 60,000 job vacancies during 2012 to produce a chart of the most sought-after technologies:
Despite developer complaints, demand for PHP and Java (server/Android) remains strong. You would also expect those jobs to require some SQL knowledge although that has a strong showing in its own right. ActionScript is a dying art so it’s rapidly falling off the chart.
But there are a number of surprises:
- Even if we combine ASP.NET and C# figures, why is Microsoft’s technology stack so low?
- Why is Objective C demand almost double that of Android when iOS devices are less popular?
Part of this can be explained if we look at the relative changes in demand from the beginning of 2012 to the end:
Before you make too many judgments, consider how this data is collated. Jobs Tractor searches Twitter for developer jobs so results may be skewed. For example, I suspect Twitter is used by more web start-ups than blue-chip corporations — this could partly explain the lower .NET figures.
In addition, there can be significant regional differences. Ruby skills are highly-prized in Australia but less well-known in the UK.
If you were expecting this article to recommend the most lucrative language of 2013 you’ll be disappointed. This is the only fact you need learn:
Never use job vacancy statistics as a reason for learning a language!
If demand for a particular technology is low, fewer developers are willing to learn it and the market adjusts accordingly. QBasic and COBOL developers may earn more than Objective C colleagues because their skills are increasingly rare!
Ultimately, pick technologies which interest you and never stop learning. Programming skills are always transferable and it’ll make you a better candidate when a suitable job eventually arises.
With thousands of programming languages out there, it can be daunting to find a language to start with and a good course that assumes no prior knowledge. Especially if you are someone who is busy and wants to learn on their own time and don’t have the flexibility to take an in-person class, getting started with programming can be difficult. This post highlights programming languages that are good for beginning programmers and some resources to get started.
For those with no experience
These courses have been designed for people who have little or no programming experience.
C is one of the most widely used programming languages and often used as an introduction to programming. It has influenced many languages that came after it, and knowledge of C will make learning later languages, such as Objective-C (used by Apple), easier. It influences many later languages you could want to learn, so starting with C will give you a deeper understanding of how computers work.
Java is a higher level language which is designed to be compatible with any operating system. It has similar syntax to C and C++. It’s a great programming language to start with because it is widely used and practical, however it won’t give you as deep of an understanding of computer operation as a lower level language like C will.
C++ bridges the gap between a language like C and Java as it has features of both low-level and high-level languages. It’s another commonly used language that has a wide range of uses and compatibility. It’s based off of C and adds object-oriented features. It has also influenced many other languages such as C# and Java.
Python is a language that was designed with human readability in mind. Because of this, it doesn’t take as much code to execute programs as other languages. It’s a great, easy way to learn recurring concepts in computer science and has real world use in the creation of scripts.
Ruby has similar function to Python but is less readable. It’s more object-oriented than Python and is similarly designed with simplicity in mind. It has many applications, but is most often used for web applications.
HTML and CSS
HTML and CSS are used for webpage design. While these languages won’t really help pave the way for learning more traditional programming languages, they are essential for webpage design. HTML (HyperText Markup Language) is a “markup language” which allows you to put content into a webpage whereas CSS (Cascading Style Sheets), is used to format and define the layout of a page.
MIT App Inventor for Android
If you aren’t interested in programming as a profession (at least at the moment) it may be worth looking at using the MIT App Inventor for Android. It requires no coding, but will teach you how programmers think and provide knowledge on some concepts in computing. Plus, you’ll end up being able to make Android apps once you’ve mastered it!
If you already have knowledge of another programming language then these are great follow-up languages.
C# is primarily used for Windows applications in the .NET Framework. Learning C# is easy if you have experience in C, C++, or Java. The syntax is similar. It’s popularity has been increasing as C# is used for third-party apps on Windows 8 or Windows Phone.
Objective-C is primarily used for Apple’s operating systems, OSX (for Macs) and iOS (for iPhone and iPad). If you are looking to develop for Mac, Objective-C is the way to go. Apple provides lots of support for learning Objective-C through their developer program.
Where to learn online?
If you are just beginning to learn, we recommend that you stick to one language until you are extremely comfortable with it. Once you’ve picked a language, check out these resources to find courses:
OpenSesame is a corporate elearning course seller that hosts content from a variety of sellers. It’s the best option if you would like to have your employees learn and track them through your own learning management system. If you are an individual however, they allow for the purchase of single licenses and a learning management system is not required. They offer courses in all the languages listed on this page and more from InfiniteSkills, Learntoprogram.tv, Webucator, Stone River, Compuworks, Pearson and more.
Online college courses
Many free online college courses are also available. Some of them are only available for a certain amount of time or require you to stay at the pace of the course, among other things, so they may not be for everyone. To see if the language you want to learn is offered, check out Udacity or Coursera.
Daniel Chen is a marketing intern at OpenSesame, the world’s largest marketplace for buying and selling corporate elearning courses. He is currently a sophomore at Dartmouth College.
These are just opinions and some of my findings. The conclusion would be simply, its up to you. Based on what you’d like to do and what you’d liked to accomplish. Follow that path first. Remember, Once you learn one, YOU’LL BE ADDICTED!