5 ms·
Hello Many Worlds in Seven Quantum Languages (2021)
- fouc 5y ago> But today, as quantum computers with dozens of qubits are being built, and systems with hundreds or even thousands of qubits are on the horizon, the complexity of programming a quantum computer requires a more structured approach. This has led to the birth of a large number of quantum programming frameworks and languages, ranging from fully-fledged programming languages like Microsoft’s Q#, to Python frameworks like IBM’s Qiskit, to basic assembly languages like QASM. I'm guessing this is QASM https://www.quantum-inspire.com/kbase/cqasm/ https://www.quantum-inspire.com/kbase/cqasm/ Interesting graphics there. Seems like programming for quantum computers is an act of building "circuits"
- nilslice 5y agoYes, at a low (assembly-like) level, "circuits" define how a series of gate operations are applied to qubits. Various abstractions make this easier, including the languages and frameworks mentioned in the linked article. Interesting to note is the recent formation of the Linux Foundation's QIR Alliance[0], which has specified a quantum intermediate representation within LLVM to bridge the quantum software/hardware ecosystem. [0]: https://www.linuxfoundation.org/press-release/new-quantum-intermediate-representation-alliance-serves-as-common-interface-for-quantum-computing-development/ https://www.linuxfoundation.org/press-release/new-quantum-in...
- wzeng 5y agoThe cQASM that you link to is one of the flavors of QASM. Another commonly used one is openqasm whose 2.0 and 3.0 specs are here: https://github.com/Qiskit/openqasm https://github.com/Qiskit/openqasm Along with QIR like as is listed in the comment, these are two open assembly specs with collaborative governance. Another is Quil: https://github.com/quil-lang/quil https://github.com/quil-lang/quil While quantum computing has a history of using circuit diagrams (which are still very useful) to represent programs. These languages have representations under the hood that look a lot more like assembly. For example: https://github.com/Qiskit/openqasm/blob/master/examples/adder.qasm https://github.com/Qiskit/openqasm/blob/master/examples/adde...
- rackjack 5y agoFirst we build circuits, then we build languages, then we build everything else
- 2fast4you 5y agoIs there a good resource for learning about programming for quantum computers? I'm looking at this and realizing just how much I don't know.
- quaintquant 5y agoI think this talk is an excellent 'foot in the door' intro. Should provide a solid foundation, and plenty of insider jargon to follow up on! https://www.youtube.com/watch?v=F_Riqjdh2oM https://www.youtube.com/watch?v=F_Riqjdh2oM
- rpmuller 5y agoThe "Mike and Ike" book is the standard introduction to the field: https://en.wikipedia.org/wiki/Quantum_Computation_and_Quantum_Information https://en.wikipedia.org/wiki/Quantum_Computation_and_Quantu...
- da-bacon 5y agoIBM has a nice online resource for learning quantum computing using their framework (Qiskit) https://qiskit.org/textbook/preface.html https://qiskit.org/textbook/preface.html
- sundarurfriend 5y agoNot about programming for quantum computers in the sense of the article, but for understanding quantum computing itself and learning to create combinations of gates to solve problems, I recommend "Quantum computing for the very curious": https://quantum.country/qcvc https://quantum.country/qcvc
- thatcherc 5y agoInteresting - 6 of the 7 languages discussed are Python libraries. Must be going for the more DSL type of language. Of the ones mentioned, looks like only Q# and QASM aren't Python-based.
- da-bacon 5y agoLot's of reasons for this. Mostly having to do with the minimal size and sophistication of current quantum programs, and the background that many of these efforts arose from Physics teams where python is heavily used. One of the most popular non-Python based version of these sorts of frameworks is https://yaoquantum.org/ https://yaoquantum.org/ which is in Julia.
- gowld 5y ago> minimal size and sophistication of current quantum programs, For that, I'd expect a simple standalone like Verilog or ASM.
- da-bacon 5y agoWell you also want to run the program and process the data, so for that later step it’s nice to stay in one language that has support for the data analysis.
- Smaug123 5y agoQ# originated as a DSL in F#, which has extremely strong DSL-creating capabilities in its [computation expressions](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/computation-expressions https://docs.microsoft.com/en-us/dotnet/fsharp/language-refe...). See https://devblogs.microsoft.com/qsharp/why-do-we-need-q/ https://devblogs.microsoft.com/qsharp/why-do-we-need-q/ for its history.
- rpmuller 5y agoWhat? No Jaqal? https://www.sandia.gov/quantum/Projects/QSCOUT_Jaqal.html https://www.sandia.gov/quantum/Projects/QSCOUT_Jaqal.html
- da-bacon 5y agoWrite a Jaqal IonQ API interface, and I'm sure they will add it (I no longer work for said company)
- sundarurfriend 5y agoI guess the Yao Julia package you mentioned in another comment also doesn't have a IonQ API yet, and that's the reason it isn't part of the article?
- da-bacon 5y agoYep! This was PR for IonQ SPACing so totally focused on running via their API or APIs they integrate with (Azure, AWS)
- da-bacon 5y agoOh this looks familiar! I left off my favorite https://github.com/dabacon/qsel https://github.com/dabacon/qsel (have never used this to run against a real device).
- kingcharles 5y agoThe fact that all the major cloud providers have their own PAYG Quantum Computing setups, and I can sit here in my underwear and write quantum code, is quite frankly mind-boggling. BRB, going to put my cat in a box...