Option 1: the intention is to create something specific right now (start with the end in mind)
- Web developing: HTML, CSS, JavaScript, PHP
- App developing: Java for Android, or Objective C for iOS
- Mainstream programming, various uses: C, C#, Java, Perl, Python, Ruby
Option 2: the intention is to become a programmer, we can worry about what to create later (eat, sleep, code)
- To learn to code efficiently, at machine-level, choose C
- Advantages: you learn the fundamentals of coding; see how the language interacts with the hardware; requires discipline so teaches you to code efficiently
- Disadvantage: strict; not really beginner-friendly; longer learning time than some other languages; can be frustrating (e.g. debugging for errant semicolons)
- To learn the principles of Object Oriented Programming (OOP), choose Java
- Advantages: highly practical language; learning Java means you’re learning the OOP principles – allows for easier/faster learning of more modern languages like C++, Perl, Python, PHP; taught for free via Stanford Uni’s open-access Programming Methodology course; used extensively across many platforms; used in Android app development; long history of use means lots of standard examples available
- Disadvantages: ??
- For a fun and fast way into programming, choose Python
- Advantages: simple yet capable language so great for beginners; code is easy to read; reinforces good programming style; not syntax-heavy; faster to learn, and faster to code (line for line) than other languages (BASIC, C, J, Java)
- Disadvantages: ??
With thanks to LifeHacker.com for the above info (source)
Option 3: the intention is to make a career out of this (show me the money)
The following table lists main uses by language as provided by DevCodeHack.com (source):
Language | Popular Use |
---|---|
Python/Ruby/PHP | Server-side for websites and mobile apps |
Objective-C | IPhone |
HTML | Client-side for websites. Markup language for building web sites |
CSS | Client-side for websites. Presentation language for HTML |
JavaScript | Client-side for websites, used to manipulate HTML/CSS. Also jQuery |
Java/.Net | Android programming. Server-side for websites, more popular with big businesses |
C/C++ | High performance (stock trading) or graphics (video games) |
A similar list as provided by LifeHacker.com (source):
Back-end/Server-side Programmer:
Python, Ruby, PHP, Java or .Net. Has database knowledge. Possibly has some sysadmin knowledge
Front-end/Client-side Programmer:
HTML, CSS, JavaScript. Possibly has design skill
Mobile Programmer:
Objective-C or Java (for Android). HTML/CSS for mobile websites. Potentially has server-side knowledge.
3D Programmer/Game Programmer:
C/C++, OpenGL, Animation. Possibly has good artistic skill.
High-Performance Programmer:
C/C++, Java. May have background in mathematics or quantitative analysis.
——
Taking into account all the above suggests I should focus on learning Java first then move to C/C++. (More info on C vs. C++ here: 5 best programming languages.)