In this post, I will talk about four programming languages that I am interested in right now: Python, Rust, Go, and Julia. I will compare the benefits of each language for beginners and discuss where each language is best suited to solve problems. I'll save Java for another post.

Python

Of the four languages that I will be discussing, Python is the one that I am most comfortable with, and I work with it regularly in my daily work. Guido van Rossum created Python in 1991. It is an interpreted, general-purpose programming language that focuses on code readability and has multiple purposes.

Python has been used in the following areas:

  • System administration
  • Web Development
  • Scientific Computing
  • Machine Learning
  • Data Science

It's also an excellent choice as a first language. Many colleges and universities use it as the basis for an introduction to programming.

My primary use of the language has been to write scripts that automate some repetitive tasks. Ansible is built on top of Python and is an excellent tool for managing a large footprint of systems and applications in this area.

There are several frameworks in the web development space that will allow you to build web applications quickly, and Flask and Django are two that stand out for this purpose.

SciPy and Pandas are two libraries that help programming solve advanced problems in science and even data science. These libraries have functions that make math easy.

Scikit-learn is the most well-known library for machine learning and data science. This library contains tools that make predictive data analysis more manageable, and it's built on SciPy and some other libraries.

It's the machine learning applications that intrigue me the most right now, and I'd love to spend more time learning about machine learning.

A good distribution of Python to install is Anaconda. It's primarily focused on data science practitioners, but it's my preferred way to install Python for day-to-day usage. Anaconda comes complete with package management so that you can easily keep up-to-date with updates to the various libraries.

Python programs may not be the fastest, but they are probably the easiest to develop due to Python's easy-to-understand syntax. It's this tradeoff that makes it great for quickly validating an approach and then iterating to improve it.

Here are some excellent resources to get started with Python:

Rust

Rust is an open-source programming language that Mozilla created in 2010. It's primarily focused on security and performance, but it also provides the benefit of memory safety. This means you won't have to worry about buffer overflows or other problems that lead to vulnerabilities in programs written in dynamically typed languages like Python.

StackOverflow readers have voted it the most loved language for the past few years, surprising as it also has a reputation for being difficult to learn.

One of Rust's sweet spots is system programming. That isn't to say that you can't use it in the web development space, but its strength is writing low-level tools.

Rust is used in the following areas:

  • Web development (with Servo and WebAssembly)
  • Game Development (using Rust's FFI interface with Unity, Unreal Engine, and more low-level libraries like gfx)
  • Embedded Systems

Like Python, it also has an excellent package manager that makes it easy to discover and install new libraries from the community.

Rust has a lot of momentum right now, so more jobs are available than developers who know how to program in it. Even though there is a bit of a learning curve, it may be worth your time to learn this language.

Rust Resources:

Go

Go (also known as Golang) is a statically typed programming language created by Google in 2009. It's also an open-source project so that anyone can contribute to its development.

One of its primary benefits has been concurrency support. This allows developers to write programs that use multiple processors simultaneously without worrying about shared memory and other pitfalls associated with parallelism.

Go is most commonly used in the web development space. It's long been a popular language for writing servers, with companies like Google, Dropbox, and Heroku adopting it early on.

Its package management system makes it easy to find high-quality libraries that you can use within your project or application. One of its main benefits is that Go programs compile to a single binary.

The Go programming language is getting more and more popular day by day. So we can say that this programming language is worth learning today as there are over 37,000 Github projects written with Golang at the time of writing this article.

Go resources:

Julia

Julia is a high-level, dynamic programming language created in 2012. It's gained popularity since its inception because it can compete with languages like Python without sacrificing speed or ease of use.

It contains features similar to MATLAB, including an interactive environment that allows you to write code line by line and see the results immediately.

It's an excellent language to learn if you want a language suit for multiple problem domains, from finance or science to machine learning.

In my opinion, it combines the clean, simple syntax of Python with the performance of C++. Hence, it has all of the capabilities needed for high-performance applications without having too steep of a learning curve.

The best way to get started is by following the documentation on Julia's website and then reading through some of their tutorials.

Julia resources:

Conclusion

These are all great languages that you should consider learning. I'd suggest starting with Python due to its popularity and ease of use, especially if this is your first programming language. From there, I would move on to Rust if performance is your top priority or Go for web development.

Julia has a lot of potential, so it's worth checking out as well for any scientific or numeric computing purpose, like data science (Julia might give Python a serious challenge).

If you were wondering why I didn't mention anything about Java...not to worry...I'll be covering it in another post.