GATE Material Search

Tuesday, April 18, 2017

Programming languages to learn



Computer Science students tend to be in a lot of confusion over which programming language to choose as their primary language. With new languages being introduced every now and then, the confusion only increases. They get to hear conflicting things from teachers, seniors and others that adds to the confusion.

In this post, I take a shot at explaining my views on this topic. Listed below are the languages I feel a CS student should know, in the decreasing order of priority. As usual, this is just an advice, and the views are completely personal.


C, because, duh!

A lot of people think that in today's world of dynamic languages, functional programming and fancy Web frameworks, learning C would do no good. Plus you must have heard from your seniors that no company has code in C. Naturally, it leads to the conclusion that C as an option could be easily discarded. 

In my opinion, C is the most important language you need to learn, not because every company is programming in C, but because C is the most basic and the most low level programming language available. Its in C you will learn how memory is laid out, how its allocated and de-allocated, how interrupts are generated and handled, how sockets work, how programming constructs affect the byte code and so on. Most other languages hide these details under the carpet and you never learn the intricacies of a computer system. People who have only programmed in Java or scripting languages seriously lack this understanding.

In feel, you should write at least a few thousand lines of code in C while you are in college. Once you master C, learning any other language is just a matter of learning new syntax.

One of OOP Languages

Popular choices in OOP languages are Java, C++, C# etc. Java is undeniably the most popular among these three and that is what I would recommend. Since almost every company has work in Java, learning it is going to be a very handy skill. 

Note that learning Java goes hand in hand with learning OOP. OOP is a vast topic in itself and is independent of which language you choose. It is also much harder to master and I have seen people with years of experience getting their OOP wrong. Still, knowing the basics and being able to implement simple programs in an OOP way is absolutely essential.


One of Scripting Languages

Scripting languages like Python and Ruby are very popular now a days. These languages don't have the efficiency of C or the type safety of Java, but have a very fast time to market, i.e. things can be built very fast with very little code. Most things that take a screenful of code in Java to implement, will probably require a line in Ruby. These languages, especially Python, are very popular in start-ups. I would recommend every student should know at least basic Python.

One UI framework (Optional)  

Knowing a UI framework is not strictly required unless you specifically want to be a web developer, hence I am marking this as optional. Knowing some basics of UI framework will give you the advantage that you will be able to build working prototypes of your ideas. Good UI can make your ideas presentable and hence could be a useful skill. So have a handy knowledge of HTML/CSS, JavaScript, JQuery etc.

Functional Programming (Optional)

Functional Programming is also gaining a lot of popularity with languages like Haskel, Scala etc. Ruby and JavaScript, though not purely functional, take a lot of inspiration from them and are very functional in nature. Even Java 8 has introduced some functional constructs in Java. Functional programming can be very hard to master as it is a different paradigm and requires a different way of thinking. But if you can get some understanding of functional style of programming, it will be immensely helpful. 



Conclusion

I feel knowing one language each from the above sets should be sufficient. Don't worry about how many other languages are being used out there. If you know C, you know OOP and you know how to program in a scripting language, any other language will feel like a combination of these techniques.


Like my facebook page below to keep in touch with me. I will keep posting any links/resources relevant to M. Tech. You can also ask questions you might have on the Facebook page, and I will try to answer.

No comments:

Post a Comment