The Best Programming Language
The age old question: “What is the best programming language to learn?” I have asked this question too when I first started learning programming. However, before I answer this question, let me share a short story about myself regarding this topic.
When I was 14 years old, I became very interested in the software development process. I always wanted to know how software came to be. I started consuming a lot of media that had any kind of programming/hacking in it. This led me to believe that there was one programming language for any and every purpose out there. When I finally decided to get serious and learn how to code, the first book I picked up was “C Programming Absolute Beginner’s Guide” by Greg Perry and Dean Miller. After I had finished the book, I thought “Well, I know how to program, now I can build apps and websites!” So I began searching for ways to convert my knowledge into real software with search queries such as: “How to create web pages in C” and “How to build iOS apps in C on windows.” I was quickly met with a lot of articles suggesting several markup and programming languages that I barely knew about. This discouraged me at first but I was determined to do what it took to make sure I developed the skills necessary to be able to build websites and mobile apps.
What I realized when I started learning these other languages is that they were so much easier to pick up and grasp than my first programming language. The biggest differences between programming languages seemed to mainly reside in syntax, conventions and paradigms. I quickly realized that picking up programming languages and frameworks as I needed them was going to be an integral part of my software development career.
Now back to the question. The question itself has an answer that many people do not like to hear and I used to be guilty of this myself. That answer is: “It depends.” There are many types of software out there and each serves its own purpose and runs in an environment which will determine the kind of technologies used to develop it. Embedded software, web apps, mobile apps, console video games and mobile video games are just some of the types of software that we use everyday and there are hundreds more. In fact, if you are going to be employed, it is very likely that you will be working on projects that are already in development and will need you to work with the technologies being used whether or not you prefer them.
As mentioned before, the type of application will heavily affect your decision on which technologies to use. For example, I would use python over C to develop a web app due to python’s simpler syntax and the availability of popular web frameworks like Django. However, if Iwanted to develop embedded systems, I would pick C over Java due to the overhead of running the JVM. If your decision on which language/framework is not swayed by the purpose of the software or the platform that you’re developing for, then you’re probably going to run into some problems.
The biggest issue with this question, however, is the fact that it actually isn’t the right question to ask at all. Whenever someone asks me which programming language to start with I either suggest C, Python or Java but this is only because I’m biased towards these languages due to personal preference. These are not objectively the best programming languages by any means. Besides, even if there are multiple choices that are suitable for a specified project, languages differ in strengths and weaknesses. Whether you prefer simpler syntax or a language with a larger community than a smaller one will also factor into your decision.
Whatever language you pick up in the beginning, make sure you use it as a medium to learn about basic programming concepts and develop positive programming habits that will be beneficial to you going forward. Put more emphasis on learning about algorithms, data structures and programming paradigms more than you do in the language itself.
If there’s one thing to take away from this post, it’s that you should not have an unshakable attachment to the programming language that you are currently using or interested in. Putting more emphasis on the result and using the most suitable approach is more important as a software developer. Focus on learning concepts, they have a large carry-over between languages and frameworks. Once you’ve learned a few languages and have experience building apps, learning new languages will not be too difficult. The best programming language is the one that you can be productive with right now.
In the next post, I’ll be talking about the benefits of using micro-frameworks for development of php web applications over plain php.