What is the best programming language to start with?
Written and compiled by Bauke Roesink.
To get an answer to this question, I started by researching programming languages and there are a lot programming languages out there. Every programming language is developed for a certain purpose. Simply picking one you like and trying to learn it isn’t the best way to go because first you need to find a problem to solve. But how do you find the best programming language that not only fits your needs but more importantly, lets you solve the problems you’re facing?
If you want to learn to program, you will first need to ask yourself what the problem is that you want to solve and what the best programming language is to solve that problem with. If you don’t ask yourself these questions and just pick one of the various programming languages and learn programming in that particular programming language, you’ll probably won’t persevere for a long time since learning a programming language can be hard. Once you’re building something with that programming language that you think is cool, you’ll most definitely won’t stop until you’ve solved your problem and mastered at least the basics.
The best programming language
To find the best programming language, I asked 83 professionals and web developers the following question, which resulted in a great programming languages list:
If a novice developer asked you which programming language to learn, what would you say?
The best programming languages based on the answers I received from the 83 professionals and web developers are listed below in the programming languages list top 10. Before you jump right in to one of the best programming languages, make sure you read the advice given by the professionals and web developers and think of a problem that you want to solve, or something like a web application or a game that you’ve always wanted to build. Create something that you’ll actually want to create so the learning process becomes fun and instructive at the same time!
Find below an alphabetically ordered list of all professionals who have participated in this roundup.
4 American professors and lecturers and their advice
Prof. Todd A. ProebstingThe University of Arizona
For children, I'd suggest starting with Scratch.
Dr. Andrew HarringtonLoyola University Chicago
For older or more motivated learners I recommend Python. I am not claiming this is the only language that should be learned, just a first one that is likely to continue to get a lot of use by many learners. There is good research data that intro programming in Python followed by data structures in C++ or Java works well.
I have taught intro programming along with higher level courses for 32 years, from Basic and Pascal through C, C++, Java, and C#. Through all of this I have found that with Python students can get right into the central ideas without distraction from a bunch of peripheral issues.
For a newbie, extra boilerplate syntax that you cannot really explain gets in the way. Python has a very simple, clean syntax. Although everything is an object underneath, you do not need to expose that at all in the beginning. The Python shell is excellent for testing and playing with little snippets. There are great tools: IPython notebooks build on the ida of the Python shell to allow easy combinations of text, code, and graphics, sound and animation, and to share it all over the web.
There is a great deal of free resources linked to a very supportive community. It can be done successfully on minimal hardware, like a cheap Raspberry Pi.
Richard McKennaStony Brook University
Prof. Robert BurnsDiablo Valley College
I would recommend learning in Python. It’s easier than C or C++ or Java, because there are not so many requirements for containers, like main functions and public classes, and not so many library includes. There are no semicolons and no curly braces. And there are online IDEs, so no software installation is required.
At DVC we offer our introduction to programming class in C++, Java, or Python — student choice. We use a book series that presents the material in the same way for each language, with code samples plugged in. The Python edition is the shortest.
The 79 web developers and their programming language advices
David Heinemeier HannsonWebsite
I'm going to be pretty obvious: Ruby. The distance from thought to result is so low, it's so readable, and it's so friendly to learn. Learn To Program is a great book to follow this path with.
It depends entirely on what you're trying to do. If you want to do something on the web, I'd recommend learning HTML and CSS first. Don't be afraid to learn design techniques as the years go on.
If you want quick and dirty, up and running (education-wise) within a super short period/without having to learn *anything* then I'd recommend using PHP.
The important thing to learn with any programming language is the correct approach and methodologies. It is important to learn how to work in a scalable fashion and work within an industry standard coding style. Once you have a grasp for quality programming, these base skills can be transferred easily between any language.
I would recommend a novice starts with a cheap to setup language such as PHP and a framework such as Codeigniter or Symfony to learn the basics of MVC and object orientated programming. I would recommend they only learn to work with a CMS such as Wordpress after this initial learning process.
Above all - a novice should enjoy the learning process as much as they can and take full advantage of resources such as StackOverflow and good coffee :)
Many people ask this question at some point in their career, myself included. At the time I wanted to learn the most in the shortest time possible or at least in the most efficient way possible.
Experience with any programming language will teach you valuable lessons that can be applied to other languages. I would recommend first choosing a project that inspires you, then choosing a language (and framework, etc.) that is suitable for building that project. You may want to ask a more experienced developer for help with this choice.
Having something you just can't wait to build is ideal. It is hard to overstate the value of having the motivation to get through the initial learning curve and frustration that every developer experiences when they are first starting out.
If a developer asked me which programming language I'd advise them to learn, I would advise them to study C and C++. While C and C++ are not typical web programming languages, and are not necessarily 'hip' they are used in a wider range of fields from embedded programming to kernel and driver development to GUI programs such as web browsers. After learning C and C++, one will have a greater appreciation for the features in higher level languages. Lastly, several other languages borrow many of the syntax ideas in C/C++, thus these other similar languages will be easier to pick up after being familiar with C/C++.
If you're going in the way of the front-end, I suggest you also learn some CSS preprocessor, Sass to be more specific. I suggest Sass because he has a huge community and the learning curve is a bit short if you're using SCSS. Almost everything of all logic you do can do with JS you also can apply in Sass but more in the visual way.
Or, if your want to work as a back-and developer, I suggest you study about Ruby on Rails. This framework is one of the most popular in the startups market and you have a bunch of possibilities to integrate with AngularJS and Sass is the default preprocessor. I'm not a back-end developer, but I already done some stuff with RoR and is a crazy powerful framework.
But for any language you choose, I recommend you study JS because i believe it is the language of the future. ;)
Pachito Marco CalabreseWebsite
Jennifer de la FuenteWebsite
If it's someone who knows front-end already, it would depend on what he or she wants to do. If you want to work in WordPress, definitely learn PHP and how to work with a database, learn how to deconstruct a WordPress theme and put it back together. If you want to build web apps quickly, learn Ruby and Rails. It's a little easier syntax to learn as a back-end language, and it's powerful. The key though is to get the logic down because that's what trips everyone up in programming. I was self-taught and learned some PHP first, but once I got the hang of that, I found it easy to learn another back-end language because I understood what went into programming logic.
Obviously if your goal was to develop for a particular platform, then choose what’s best for that purpose.
My advice is to start learning a language that will let you achieve whatever you find fun. Learning anything is hard and requires persistance, so if you're learning something just because it's popular, or because someone told you to learn it, you won't have a passion or any investment in it.
Just don't listen to me. Follow your heart, and start learning something that will let you achieve fun.
Every programming language will teach a programmer general concepts of programming, such as variables, types, subroutines, abstraction, control flow, iteration, and debugging. But depending on what language is chosen, the programmer might learn specific concepts that don't necessarily apply to every language, like compiling, scope, closures, recursion, memory allocation, or garbage collection. (These lists are by no means comprehensive!)
Each language a programmer learns brings them closer to understanding how different languages implement features differently, how an approach taken in solving a problem in one language might be applicable to solving a similar problem in another language, what concepts are more generally applicable to programming (and thus more valuable to learn, as knowledge of them will aid future learning), and what concepts are more specific to a subset of languages (and thus less valuable to learn, in general, but probably critically important in helping solve a current problem).
For example, my experience has taught me to delineate general vs specific concepts as I have above, but as I learn more languages and more about the languages I already use, I might actually realize that a concept I thought was more general should be more specific, or vice-versa.
I will tell them to learn css and then make courses to learn less or sass, because this helps to create the website and to reuse code easily.
And last, to learn Angular.js because it is the future, allowing you to interact at the moment without having to refresh the page.
I'd recommend trying to get a taste of a lot of different programming languages. It's easy to specialize in one language but gaining an understanding of the overall landscape will make you a better all around developer.
If a novice developer would ask me which language I'd advise him or her to learn I would tell this:
First: Figure out something you want to build or a problem you want to solve. Something that would be really useful to you or to your family or to your team or to your boss.
Then: figure out which language(s) you need to use to build that thing. Figure out the most straight-forward, lightweight and productive way to build this. You may have to ask some experienced programmers here and / or do some research online.
Then: start learning the language(s) you need for your thing and start building it while you learn. This will keep you motivated to keep going. Don't be afraid to build a shitty first version. If it works, it works. Take the little problems within the problem you are solving as guidance on where to dig deeper and what to learn next.
I would recommend this approach because the field of software development is vast. It ranges from building a simple website with a little HTML to programming robots for space exploration. But at the end of the day it is about solving *problems* for *people*. So the problem that you want to solve most and care most about has to be one of the absolute best ways for a novice developer to find their place in that field.
And after that: *always* be learning.
Let me preface this answer with this: it doesn't matter. As long as you pick something, start building things and have fun with it. Programming isn't all about knowing the latest framework or language, it's the ability to create things and solve problems with the tools at hand. Don't stress out and jump around trying to chase the latest hottest framework - pick one that looks nice and master it. If you like it - great. If not - try another one!
Honestly, I don’t have a particular language that I would recommend a novice programmer set out to learn.
If they are at a novice level, this assumes that they already have some level programming proficiency and when you get that far into programming, it’s usually much easier to pick up on new languages rather than starting from the complete beginning.
But to that end, I’d ask what type things they want to build?
iOS applications or OS X applications? Then Objective-C
iOS applications? Objective-C or Swift
Web Applications: Frameworks like Ruby on Rails, Laravel in PHP, .NET, and more
Desktop Applications for Windows: .NET
There are also plenty of scripting languages such as PHP, Ruby, Python, and more.
And so on. I don’t really have a strong answer to which is next in line as it greatly depends on what they hope to achieve out of what their ultimate goal is.
Hopefully the above suggestions help provide some guidance!
PHP gives you the proper starter point to understand both procedural and object oriented programming. I also suggest to avoid the use of any type of framework and code everything from scratch. Knowing the basics of PHP will give a newly developer the proper understanding to jump on whatever future framework he chooses and open his brain to the basics of backend development.
For anyone starting out I’d suggest the key is beginning with something that will give you quick results. If its web based technologies your looking to get into HTML / CSS will give you quick wins. Then set your goals high, build up your knowledge till you reach them.. and repeat :)
I think that's a great question. It depends on what the developer is looking to do. If you are looking to build a WordPress site, then I'd recommend mastering HTML and CSS first so you have an understanding of how the web works. Once those two are mastered, then you can move on to PHP. If you are a programmer, then I'd recommend starting with PHP and then learning HTML / CSS to make the plugin aesthetically pleasing.
It's simple to get up and running with zero cost, you don't need a fancy IDE or environment, and there is a wealth of knowledge online to help.
Rather than setting out to learn a language, come up with something you are excited to build and build it. The fundamentals of development - things like understanding syntax, research and problem solving - apply to any language (and life in general, of course).
I would advise these people learn PHP. Simply because we live in a world where content management systems power the biggest sites online. Wordpress is probably the most popularly used CMS and without PHP knowledge you're not going to utilize it to its full potential. Sure Wordpress comes with tons of enhancements at your fingertips by the way of plugins, but creating your own plugins and being able to customize these sites from the core makes the opportunities endless.
My other choice, again from personal experience would be PHP, many still will find a lot of problems with it but it is used by many open source platforms like WordPress and is quite easy to start building things with it. I know there is a hype with Ruby and for a good reason but I don't have a personal experience so I can't really say my opinion.
My world is totally web centric. The web isn't going anywhere soon. The web is device agnostic and it's continually evolving.
There are a lot of resources out there to help a dev pup learn... but get your hands dirty and just build stuff. There is no better way.
It is hard to pick a language to focus on, because eventually you will need to know several of them. My best advice would be, make sure you walk before trying to run.
Same thing goes in something like WordPress development. Some do not want to take the time to realize that WordPress is built on PHP, so having at least a passing knowledge of PHP is vital to WordPress develpment, and should not be passed over because WordPress has its own functions, a lot of which are just PHP wrappers.
So my biggest piece of advice is to learn to build a solid foundation before climbing up to the roof :)
It doesn’t matter. Pick a language that seems interesting to you (view some sample code and see which one looks appealing to you), and start learning.
The only thing that’s important is that you learn the basic programming techniques, which pretty much any programming language allows you to do.
Find something you want to build; a game, an app, a website and then let that be the thing that guides you to the programming language to learn. It's easy to become paralyzed by indecision trying to decide upfront which language to learn, but if you align your passion and desire to create and let that be your guide the language to learn becomes a tool to achieve a goal instead of the goal itself.
If you're just starting out, start with HTML + CSS. Read tutorials, build silly fun things, and just play with the languages. When you feel like you have those two down, jump into preprocessors - SASS, LESS, HAML, and a wide variety of others! Learning how they function and differ from one another is a great way to push your HTML/CSS knowledge one step further.
I got my start writing PHP and definitely would recommend it for others without classical CS backgrounds. On the whole, I found it much more forgiving than other scripting languages and it has very mature built-ins to do almost anything you'd need. The language also has the benefit of an unfathomable amount of code samples and online tutorials.
Ruby is also an excellent choice to get started, though I've found it can become confusing to the novice developer because there are often 3+ ways to accomplish the same task.
At the end of the day though, it all comes down to what type of development you want to get into; if you aren't so interested in the web, C++ or Java might make more sense for your first coding adventure.
Although not technically a programming language, I think MIT's Scratch is a great place to begin. It's designed for primary school children, but equally fun for adults!
I don't think there's any one programming language a new developer should learn. Ultimately if you want to be a developer you should learn multiple languages. Which you learn first depends on what you want to do.
One way I decided what to learn first was to look at classified ads. I wasn't looking for a job, but I was looking at ads for jobs I thought I might like and looking at the required skills. Enterprise jobs looked for different skills than start ups than someone running a two person business.
Decide what you want to do and then find out what programming languages the people doing that thing use.
My advice will be to learn Node.js because:
By the other hand, maybe, I said "maybe"... Microsoft .NET could become like important technology. Because, the last week they released the core as "open source". "Watch it". I don't know but the time will tell us.
Thanks for contributing!
I’d like to thank all professionals who have contributed to this roundup and I hope this roundup helps starting- and experienced programmers to find new programming languages to learn, you’re never too old to learn programming, just make sure you find something fun to create.
Please don’t hesitate to share this roundup on your website, blog or on social media.
This roundup has been written and compiled by Bauke Roesink.
Please find below once again the 10 best programming languages:
The 10 best programming languages
Based on the insights of 83 professionals and web developers
Get new articles, interviews and roundups delivered to your inbox:
We'll send you our non-commercial newsletter a few times per year.
No SPAM ever, we value your privacy.