The creation of the C programming language was a massive milestone for classical computing. Developed by Dennis Ritchie and Ken Thompson at AT&T Bell Laboratories in the early 1970s, C was an easy programming language for would-be computer coders to learn. At the time, most computer programs were written in what is called assembly language, which communicates directly with the computer’s hardware. But while assembly programs gave users unparalleled control over their machines, they were long, complex, and difficult to debug. C was different. It was easy, intuitive, and helped open up computer programming to an entirely new audience. It was nothing short of a revolution in computing.
Now, nearly 50 years after C was created, computer scientists have reached a similar milestone: A new programming language that brings the same level of coding simplicity to quantum computing.
Drawing parallels between the development of classical computers and the state of quantum computing today is difficult. Quantum computers, for those unfamiliar with them, represent the future of computing as we know it. Unlike a classical computer, which encodes information as a series of ones and zeroes, the “qubits” in a quantum computer can be either a one, a zero, or both at the same time. Quantum computers operate under different, quantum rules to classical computers — and promise to eventually be almost unimaginably fast when it comes to crunching data and carrying out calculations.
They are, needless to say, a very different beast from classical digital computers. But if such a timeline comparison was to be made between present-day quantum computers and the evolution of classical computers, the 1960s or early 1970s probably isn’t too far off as an analogy. Modern quantum computers fill entire rooms, just like the mainframe computers in the 60s and 70s before personal computers became the norm.
Today, close to a quarter-century has passed since the creation of the world’s first actionable 2-qubit quantum computer in 1998. In the 60s and 60s, a similar period had elapsed since the switching on of ENIAC, the first general-purpose digital computer, in 1946. Heck, the world of quantum computer games is even starting to open up here in 2020. Just like it did with games such as Spacewar! in the 60s. In both cases, there was, or is, a whole lot of promise ahead for both modes of computing.
What we haven’t had until now has been quantum computing’s answer to C: a programming language accessible to the masses that allows said computers to be programmed simply, reliably, and safely. Perhaps until now, that is.
All roads lead to Silq
This is where Silq, a new quantum programming language developed by researchers at ETH Zurich in Switzerland, comes into play. Silq is, its creators claim, the world’s first high-level quantum language. It aims to bridge the conceptual gap that currently exists between classical and quantum languages. In doing so, the freely available language will hopefully help to lower the entrance barrier for non-expert quantum programmers. You know, kind of like what C did for classical computers all those years ago!
“It is tempting to claim that existing quantum languages are roughly as expressive as assembly languages,” Benjamin Bichsel, one of the researchers who created Silq, told Digital Trends. “[That’s because] they force the programmer to explicitly provide every single operation that should be performed by the computer. However, existing quantum languages are [really] more low-level than assembly languages in some aspects: They typically describe operations on individual quantum bits, which is more in line with low-level hardware description languages like VHDL or Verilog.”
The level of abstraction provided by Silq, Bichsel said, is closer to that of C. It directly supports subexpressions, like (a+b)+c, which can’t be easily written in existing quantum languages. Unlike existing quantum languages, Silq enables a descriptive view on quantum algorithms for expressing the high-level intent of programmers. The compilation of these algorithms to low-level quantum circuits becomes a second-order concern that can be handled by a specialized compiler. Bichsel believes that analyzing Silq programs will be easier than analyzing programs in existing quantum languages because Silq programs are less focused on low-level details. This could help facilitate the developments of analysis tools supporting developers.
“Currently, the main approach to quantum computation is at the machine code level, or by using and adapting tools that others have already built,” James Wootton, an IBM researcher specializing in quantum computing, who was not involved with the Silq project, told Digital Trends. “This is the best way to ensure that it will be able to run on the devices available over the next decade. All current frameworks, like Qiskit from IBM Quantum, are set up in this way. Quantum programming in this way is much like the classical logic circuits that I used to assemble in my shed as a kid, so it is more intuitive than some might assume. But it is certainly not the method that all the quantum programmers of the future will want to use.”
For those who want to design their own quantum algorithms, rather than relying on pre-made quantum algorithm frameworks, solutions like Silq could be very interesting.
“It is good to see that more computer scientists are becoming interested in this problem, and implementing their ideas as software that people can actually use,” Wootton said. “This could allow people from outside the field of quantum computing to come up with new ideas for how to use these devices. It would be great to see that happen, and get new perspectives.”
Cleaning out the garbage
Of course, as noted up top, the comparison with programming languages like C isn’t exact. Quantum computers work fundamentally differently to classical computers, meaning that there are different problems to be addressed and solved.
One of the main ideas behind Silq involves dealing with so-called “garbage” created during computation. This is something that classical computers are not so sensitive to, but which can cause errors for quantum computer calculations. The “garbage” finds its way into quantum programming because of the way that quantum computers calculate tasks using several intermediate steps; creating intermediate results or temporary values in the process. The process of getting rid of these superfluous values is made more difficult as a result of a phenomenon called quantum entanglement. Silq eliminates these values automatically.
“Silq addresses a fundamental problem that significantly complicates the development of quantum programs, compared to classical programs,” Bichsel said. “The key benefit of Silq is that it automatically handles uncomputation of temporary values. Unlike in the classical setting, where we can simply forget about temporary values that are produced during a computation, discarding temporary values in the quantum setting requires explicit operations to remove these values from consideration.”
Silq is already publicly available on code repository GitHub, licensed under the free and open-source Boost Software License 1.0. Because most of us don’t have a quantum computer at our disposal, there’s an extension available for Visual Studio Code, thereby allowing developers to type-check and simulate Silq code on classical computers.
After all, if quantum computing’s as big as many predict, you never know when you’re going to be able to use it!