The good news is that all popular languages are pretty fair in terms
of compensation. The median pay today with 3-5 years of experience is
around $60-80k/year, but that number can vary wildly, and can be much
higher, particularly for folks on the east or west coast, or in
consulting. YMMV.
The popular languages today are: Ruby, Python, PHP, Objective-C, HTML, CSS, JavaScript, Java, .Net, C/C++. Google all of those.
Each language has its popular uses:
Which programming language should you learn to make money? The bad
news is probably not just one. The good news is you don't need to learn
everything about every language, just enough to accomplish your goals.
In the job market, you would not likely not be using all the languages I suggested, rather jobs are generally broken out by skills:
Typically, there are folks who deal with the back-end and folks who
deal with the front-end. These days there is a new crop of people who do
mobile. Sometimes you can find people who do all of the above, but
generally when you look for a job you will fill just one of those
roles.
The popular languages today are: Ruby, Python, PHP, Objective-C, HTML, CSS, JavaScript, Java, .Net, C/C++. Google all of those.
Before we go into comparing programming languages, let’s first take a look at the languages we’re going to be covering.
Dynamically Typed Languages
Dynamically typed languages are
generally thought of as easier for non-coders to learn because they’re
flexible. You can quickly build an app from scratch with less lines of
code, and there is no hard rule on how to write things to behave in the
way you want them to. Dynamically typed languages are often interpreted
(non-compiled), which means your running application can quickly reflect
the changes you make, which can save you time.
In general, web applications are usually written in dynamic languages.
JavaScript
Not to be confused with Java, JavaScript
is a primarily client-side scripting language used for front-end
development. JavaScript is compatible across all browsers and is used to
create interactive web apps, often through libraries such as jQuery and
front-end frameworks such as AngularJS, Ember.js, React, and more.
JavaScript can now also be used as a
server-side language through the Node.js platform, and while Node.js is
relatively new, the community is gaining a lot of momentum. You can also
build hybrid mobile apps with JavaScript through using frameworks such
as phonegap, while Facebook’s React Native aims to allow you to build
native mobile apps with JavaScript.
On a side note, Facebook’s React also supports JSX, a JavaScript syntax extension that would compile as JavaScript.
Ruby
Developed to make developers have fun
and be productive at the same time, Ruby was made popular by the Ruby on
Rails framework, a full-stack web framework optimized for programming
happiness. As Ruby reads like English and Rails has tools that make
common development tasks easier “out-of-the-box”, many would recommend
learning Ruby as your first programming language.
Ruby is mostly used for backend
development, and popular sites such as Airbnb, Shopify, Bloomberg, Hulu,
Slideshare, and more have been built with Ruby on Rails.
Python
Python is another highly recommended language for beginners, and is the most popular introductory language at Top U.S. Universities.
Developers have used Python to build desktop apps and web apps alike,
and it has great tools for data mining. In addition, Python is
particularly popular with the academic community for scientific
computing, data analysis, and bioinformatics.
Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, Civilization IV, and more have been built with Python.
PHP
PHP is a server-side scripting language
and is usually considered beginner-friendly because it’s easier to
conceptualize what the PHP code will do, so it’s not difficult to pick
up. Most websites have been built with PHP because the language is
heavily specialized for the web.
Facebook, Wikipedia, Yahoo!, Tumblr, WordPress, and more have been built with PHP.
Statically Typed Languages
Apps built with statically typed
languages are known to be more scalable, stable, and maintainable.
Static languages are usually more strict with catching errors through
type checking, and it takes more code to build a prototype. Game
engines, mobile apps, and enterprise-level backends are usually built
with statically typed languages.
Java
As a general-purpose language, Java is
used to build Android apps, desktop apps, and games. Java is also
commonly used as a server-side language for enterprise-level backend
development – 90 percent of Fortune 500 companies use Java.
Furthermore, Hadoop
is a popular Java-based framework used for storing and processing big
data, and is implemented by enterprises such as Yahoo, Facebook, and
Amazon Web Services.
C
C is often used to program system software and is the lingua franca of Operating Systems.
C has influenced almost all programming
languages we’ll be examining in this article, especially Objective-C and
C++. So, if you know C well, you’d probably have less difficulty
picking up other popular languages. Since C takes more complex code to
perform simple tasks, beginners may find it tough to keep themselves
motivated if they choose it as their first language. However, knowledge
of C will definitely help you as a programmer.
Objective-C / Swift (for iOS development)
Objective-C is a layer built on the C
language, making it static, but it can also be used for dynamic typing.
Apple’s Swift is a static language designed to be compatible with
Objective-C, but its static-typing makes it more resilient to errors.
Inspired by Python, Swift aims to be
easy for coding newbies to pick up. We will mostly be examining
Objective-C in this article as Swift is relatively new.
C++
C++ is a powerful language based on C.
It is designed for programming systems software, but has also been used
to build games/game engines, desktop apps, mobile apps, and web apps.
C++ is powerful and fast, so even Facebook has developed several high
performance and high reliability components with it.
Many pieces of software have been built
with C++, including Adobe Systems, Amazon, Paypal, Chrome, and more.
Much like C, C++ is generally considered harder
for beginners to learn on their own, so if you decide to learn C++ as
your first language, feel free to look for a mentor via Meetups or find a C++ Codementor.
C#
C# (“C Sharp”) is developed to be used for Microsoft’s .NET framework, which runs primarily on Microsoft Windows.
C# is used for web development, game
development, and general Microsoft development. Although Microsoft was
not known for being cross-platform compatible in the past, Xamarin is
also working on an open-source project called Mono, which aims to port
C# to other platforms and bring better development tools to Linux
developers. Recently you can also use C# to build native mobile apps for iOS and Android through Xamarin.
Other
SQL
SQL (“Sequel”), or Structured Query
Language, is a query language used to communicate with databases.
Although SQL cannot be used to build apps, it is used to manage the data
in apps that use relational database manage systems (RDMS).
Each language has its popular uses:
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, the 'building block' of websites. |
CSS |
Client-side for websites. Presentation language for HTML. |
JavaScript |
Client-side for websites, used to manipulate HTML/CSS. jQuery is what you need to know here. |
Java/.Net |
Android programming. Server-side for websites, more popular with big businesses. |
C/C++ |
High performance (stock trading) or graphics (video games). |
In the job market, you would not likely not be using all the languages I suggested, rather jobs are generally broken out by skills:
Job Role | Skill Set |
---|---|
Back-end/Server-side Programmer |
Usually uses one of the following: 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. |
No comments:
Post a Comment