What languages should I learn? |
That entirely depends on what you would like to do as a programmer. Think of a language as a tool, a weapon or a shield. Depending on your situation you will use a tool that is designed for that job.
For this I'd recommend a couple of languages.
C -
When we're all living through a nuclear winter salvaging old tech, C compilers are able to compile for many processor architectures. It is a fast, robust language built for telling the computer what to do. Unix and Linux were built using C. It can be hard to grasp sometimes, but being a C guru there is always someone who will need you.
C++/Java -
When you want to build modular or general code these are ideal languages (IMO). Many games are written in C++ and much firmware is run through a JVM on things such as TV boxes and mobile phones(So the installation waiting window says). Although I would take C++ over Java, both of them can accomplish the same tasks.
Python -
An easy to write dynamic language, there are extensive libraries that add on to Python, things such as networking, graphics and even systems programming IIRC. You can develop code fast in Python, making it ideal as a test bed or sandbox for projects.
Some type of web language, HTML, JavaScript, PHP etc -
You want your programming to be dynamic, don't leave an area untouched. The Internet generates billions of money, learning to control the web can make sure you get a piece of it.
Assembly -
The back bone of programming, the syntax is a translation of real machine code instructions. I think all(?) compiled languages are translated into Assembly then linked to create the executable format. It is a very tedious language, can get error prone and can get very (very) hard to follow. When you master this, you become a God of computer world, disassembling and redesigning code, reverse engineer encryptions and DRM.
A wild card, SQL -
SQL is well known language in the business and e-commerce areas, primarily used for data management on servers. Learning SQL won't go amiss when handing in your CV for a database programmer or sysadmin job for a company who's network is built upon .NET and MySQL.
Something to remember:
Although a language is a primary use to make software, many companies will have you using a fair few external libraries for a specific language. When learning a language try finding and playing around with external libraries, like SFML/SDL for graphics rendering, or something like Boost for C++.
I have no real world experience as a programmer, most of my knowledge comes from reading texts from the Internet. As we all know and love the Internet, take it with a grain of salt.