The programming languages I learned in my Quantum Computing job
Tags: python, quantumcomputing, programming, julialang
Published: 2024-03-15 05:35:22

If you want to feel like you will never stop learning then join a Deep Tech startup. I did. And I haven’t had a day that didn’t feel like I was learning more each day then entire months in my college degree. It’s an amazing feeling and a lot of hard work.

As a junior developer I learned the langugaes and tools of the things I found interesting and could work on for fun. Although I’m not sure that I would call Javascript and an infinite amount of frameworks anything remotely resembling “fun”. It wasn’t until I joined a company that has quantum computing projects that I really took this side of things seriously, and tackled a few “new to me” coding languages.

Turns out this was a good idea. Because quantum computing is an interesting use case for some of the Machine Learning roles out there, and it might be lucrative in the future. This is exactly what I’ve been working on lately! So if that’s interesting to you too, here’s what I recommend you learn, what you might expect to learn, and a summary of what I had to learn. All rolled in one.

## Python

Python is probably the most popular coding language used in quantum computing. It’s a versatile language that’s pretty easy to learn and has a wide range of applications in this area. You will quickly come to find that Python is used in many quantum computing frameworks, including Qiskit, Cirq, and Q#.

Python’s popularity in quantum computing is due in part to a mix of simplicity and readability. It’s also an excellent language for data analysis and visualization, which are crucial skills in quantum computing. This is all helped immensely where Python has a lot of libraries and tools that make it easy to work with data, scientific workloads, and as a result, a lot of quantum computing frameworks.

### Here’s what I used to learn Python

- Codecademy: Interactive lessons and practice problems. - https://www.codecademy.com/learn/learn-python-3
- LearnPython.org: A comprehensive tutorial site. https://www.learnpython.org/
- “Automate the Boring Stuff with Python”: A practical, project-based book. https://automatetheboringstuff.com/

## Julia

Julia is another popular coding language used in quantum computing. I wasn’t familiar with this until I started my job, and it seems to be a relatively new language that’s designed to be fast and efficient in the fields of science and analysis. Julia is particularly useful for quantum computing because it can handle complex numerical computations quickly and accurately.

Julia has a number of advantages over Python. It’s designed to be faster and more efficient than Python (although I can’t speak to this yet given the project work I use it on), but this in theory makes it ideal for large-scale quantum computing applications. Julia also has a number of libraries and tools that make it easy to work with quantum computing and other scientific frameworks.

### Here’s what I used to learn Julia

- JuliaAcademy: A dedicated learning platform with a range of Julia courses on various topics. https://juliaacademy.com/
- ThinkJulia.jl: An adaptation of the book “Think Python”, this resource uses a similar approach to teach programming fundamentals with Julia. https://juliapackages.com/p/thinkjulia
- JuliaLang.org “Getting Started” Guide: The official Julia documentation provides a concise introduction to the language and syntax. https://julialang.org/learning/
- MIT Computational Thinking with Julia and Pluto.jl: Uses interactive Pluto notebooks for a highly engaging learning experience. https://computationalthinking.mit.edu/Spring21/

## C++

Okay don’t go running away screaming. It’s not as intense as it sounds. We all know that C++ is a powerful programming language and it’s no surprise that it’s also pretty commonly used in quantum computing. It’s particularly useful for developing quantum computing frameworks and libraries. C++ is a high-performance language that’s well-suited for applications that require low-level memory management and high-speed computation. This might not be what you work on day to day, but it’s always a good skill to have.

C++ is used in many quantum computing frameworks, including Qiskit and Cirq. It’s also used in a number of quantum computing libraries, such as the Quantum Toolkit and the Quantum Computing Toolkit. I’m sure there’s many others out there as well, but these are just the ones that I’ve used.

I’m not going to lie, C++ is a more challenging language to learn than Python or Julia, but it offers a number of advantages for quantum computing applications. It’s particularly useful for developing high-performance quantum computing algorithms that require low-latency computations. Or in my case, for being able to understand what my senior team leaders who are working on these use cases are doing, which in turn makes the quantum workloads that I’m contributing make more sense, and give more room to adapt and align with that “lower level” work.

### Here’s what I used to learn C++

- LearnCpp.com: A comprehensive site with tutorials covering everything from basic syntax to advanced concepts. https://www.learncpp.com/
- Codecademy: Offers beginner-friendly interactive lessons on C++ basics. https://www.codecademy.com/catalog/language/cpp
- HackerRank: Solve coding challenges and compete with others while honing your C++ skills. https://www.hackerrank.com/
- Effective Modern C++: Considered essential reading for mastering modern C++ practices. https://www.oreilly.com/library/view/effective-modern-c/9781491908419/

## And that’s just a start…

Working in Deep Tech feels like a balance between excitedly pursuing the unknown, and a stress of not knowing enough to be able to effectively do so. Thankfully it’s mostly the first feeling, and we have so many resources now to help us in our learning journey.

Hopefully this helps others who are looking to make careers either in Deep Tech or quantum computing in particular, and even if you are a master of Python, Julia, and C++ you’ve always got Java and MATLAB and others to master too. The journey is never over. But today is a good day to start!