I have got this question hundreds of times from many people around me. What should a person new to a computer related bachelor course or a hobbiest go for if he wants to take a peep in programming world before hand. Today there are just so many languages so the question always remains where to start?
First there is C and C++. Few people don’t know that C and C++ is different so for them look here for a start please and than carry on. If one wants to take a real deep bath in programming world and actually like to explore core concepts of how things really works and how really we can talk to computers and make them do our bidding. If you are going to be a electronics guy(As I am :P) and going to code any micro-controller in near or far future this is the language that you are most likely to use. As i live in india and most used controllers here are ATmega 8-16 (or mini / Arduino), PIC at learning level or a hobby level project. You will need C to program them.(few java based controllers are exceptions). You learn C and than add classes to your knowledge and there you have C++ and a bit (JUST a BIT) taste of what is OOP (Object Oriented Programming). When you start with this languages you learn about data-types , How you get a complex data type from basic data types,what are pointers , function return values/different types of parameter passing and how basically program flow works.
Than there is python. When you start python after you have basic knowledge of other language like C/C++ it just looks like blessings. Forget semi colons,No curly braces (many people dislikes that don’t know why), Don’t bother with any variable type , Don’t bother with any function return types and most important thing is you import most of the code (i.e. you just use code written by others). As my personal experience if you want to run just few simulation code , want to do some data analysis or just fetching few links/stuff from few web links you can just write a python script in no time. On the other hand it is interpreted language (i.e program is compiled and run line by line rather than like C where whole program is compiled first and than you run it). One advantage of that is you can test your code line by line in your console or other applications (like Enthought and other packages like it) but it also make it slower. After introduction i will like to say that if you just want light swim in programming world than this is just the language for you. It don’t take much time for you to learn and you can nearly do anything in this language where few examples will be : Machine learning , web backend design(Django) , NLP (Natural Language Processing ), Image Processing , Artificial Intelligence,GUI based application for any platform(Windows / Linux / Mac), and you can also develop games in this language. Python has libraries ready to be imported into your code at any time.
Lastly lets look at java. Certainly i will not recommend any one to START with java. As it will be a tragedy. Java is totally OOP based programming language. You are just dealing with bunch of classes in this languages. It resembles to C++ where all program lives in a class (easily said). But once you tame this beast you open new gates to heavens. You will see java every where around you this days. One of the most used mobile OS android’s apps are written in java. Java basically runs on a java virtual machine(JVM) and so is operating system independent.
There are still plenty more languages to talk about but these are the once i am most familiar with so i will stay loyal to them. So finally for a CS student who wants to be some thing different between all other students or a learning enthusiast who wants to dive deep in this wild and marvellous sea i will recommend to start with C than upgrade to C++ and when you get the core concepts and want to go for hard core OOP approach you may go to java. About python (My most favourite language) i will say you will need only a week to learn if you know any of above language and if you fall in love with it you may never go back to any other languages. Well its after all your free choice and likings in this free and wonderful world. Happy coding and if you are just a beginner best of luck you have a great journey ahead of you.