A Coders Toolbelt: Python vs Java vs C++ vs Javascript

Have you ever asked yourself should I learn Python or Java. Is C++ better then Python. Am I more likely to get a job if I learn javascript then if I learn python.

Well hopefully in this article I can answer some of those questions for you based on my experience and observations with all four of these languages.

If you would like to join our new community of like minded python developers join our facebook group.

So which programming language should I specialize in?

This was a question I ran across on /r/learnprogramming where the original poster was concerned that during his university classes they did a little bit of each of the languages but the classes didn’t go deep enough that he felt he could say he was well skilled in a specific one of them. I’ve seen this question in many other forms on Quora as well so I wanted to give my perspective based on working in the financial industry and for working for big internet.

Selecting a coding language is similar to selecting a specific tool to finish a project. For some things you might use hammers and nails, others might be screws and a screw driver, and some projects might just require a shovel and some concrete. The language you specialize in should be determined by what kind of problems do you like to solve and what kind of applications are most interesting to you.

Apple iPad (Wi-Fi, 32GB) – Space Gray (Latest Model)

Please help this site by purchasing through our Amazon links

If you read some survey that says the average python developer makes more then the average java developer that shouldn’t be your motivation to learn python if you don’t like the kind of work that python is generally used for.

Problem solving ability trumps choice of language

I have worked on teams where the majority of the software was written in one language and the majority of the engineers they hired had experience exclusively in other languages. Why would a large team hire such people, because the people showed strong leadership skills in the soft skills such as communication ability, customer obsession, productivity management, conflict resolution, and of course problem solving ability.

Good problem solving ability for developers does not only include being able to create algorithms to solve coding challenges that you would find on hackerrank or leek coder. It also includes being able to recognize business and consumer problems and being able to envision a piece of software that can solve this as well as driving the proposal process and design of the components of the system that will solve that problem.

Instead of focusing on the tool think through design problems and practice solving these. If you can recognize an application would require a java back end, a react javascript front end, a c++ library driving your latency sensitive logic that does task a in 52 milliseconds, and python will be used to automate extracting specific data from logs and a nosql database for business intelligence, then you are further along then someone going through analysis paralysis on learning a language.

What programming language solves what kind of problems

Now that we see a single organization might have pieces of their applications in all of the languages lets dive a little deeper into the specific languages and their strengths and weaknesses.

C++

Created in: 1979 by Bjarne Stroustrup from Bell Labs
Average US Salary: $117,000
Strengths: Low latency, custom memory management
Cons: Complex Syntax that is difficult to learn, Building and linking can get tricky
Popular Uses: Optimized business logic libraries, embedded systems, gaming physics and 3d engines, operating systems

Java

Created in: 1995 by James Gosling from Oracle

Average US Salary: $102,000

Strengths: Platform cross compatibility, general use syntax,

Cons: Garbage collection can generate memory leaks, Java Virtual Machine requires more memory then C++ applications

Popular uses: Web applications with spring, android native applications, Nasa World wind desktop application, games such as minecraft

Javascript

Created in: 1995 by netscape
adopted by Microsoft internet explorer in 1996

Average US Salary: $111,000

Pros: Enables you to code client side web site logic, NodeJS gives you the ability to use the same language for front end, back end, and desktop software, community support is huge

Cons: Requires extra vigilance in ensuring client-side security, Different browsers support different features, many different frameworks to pick and choose from (Angular, React, JQuery, Backbone, Ionic)

Popular uses: Internet web sites, cross platform phone applications using cordova, Web servers such as Paypal and Netflix

Python

Created in: 1991 by Guido van Rossum
2000 release of 2.0 (list comprehension and garbage collection)
2008 release of 3.0

Average US Salary: $123,000

Pros: Very simple human like syntax that requires less code to do similar tasks such as input/output and file management, simple to use library management system with lots of available libraries for common tasks. Cross platform support. Enables people of all skills to automate common tasks at their jobs.

Cons: Slower runtimes then the other languages, Python Global Interpretter lock causes problems making multi-threaded applications that require shared memory. Duck typing can lead to difficult to manage code as applications get large. Not used in mobile programming

Popular uses: Corporate automation, Web servers and backends with flask or django, Artificial Intelligence and Machine learning general applications, data science with pandas and scypi, command line interfaces

Next Steps

Now that you have the breakdown on the most popular coding languages of 2019 this should help you make a better choice of what languages you want to focus on. Here at BeAPython.dev, I personally am working on learning more about Artificial Intelligence, Machine Learning, and general purpose Web Applications. Because of that I choose to focus on Python since I love the simplicity of the language that could enable anyone to learn it in a way to focus on core concepts of coding and less on figuring out the syntax to get things to work.

However, if more general purpose isn’t your thing and you want to create highly tuned and efficient algorithms that will run on resource light embedded boards then you should lean towards C++.

Ultimately, my recommendation is to do a few projects in all of the languages as well as working on being a better problem solver and application designer.

Anything I missed? Comment below and hope to see you come back for my other Python and Software development articles!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s