Автор: Mingsheng Ying
Издательство: Morgan Kaufmann/Elsevier
Год: 2024
Страниц: 400
Язык: английский
Формат: epub
Размер: 22.5 MB
Quantum computers promise dramatic advantages in processing speed over currently available computer systems. Quantum computing offers great promise in a wide variety of computing and scientific research, including Quantum cryptography, Machine Learning, computational biology, renewable energy, computer-aided drug design, generative chemistry, and any scientific or enterprise application that requires computation speed or reach beyond the limits of current conventional computer systems.
Foundations of Quantum Programming, Second Edition discusses how programming methodologies and technologies developed for current computers can be extended for quantum computers, along with new programming methodologies and technologies that can effectively exploit the unique power of quantum computing. The Second Edition includes two new chapters describing programming models and methodologies for parallel and distributed quantum computers. The author has also included two new chapters to introduce Quantum Machine Learning and its programming models – parameterized and differential quantum programming. In addition, the First Edition's preliminaries chapter has been split into three chapters, with two sections for quantum Turing machines and random access stored program machines added to give the reader a more complete picture of quantum computational models. Finally, several other new techniques are introduced in the Second Edition, including invariants of quantum programs and their generation algorithms, and abstract interpretation of quantum programs.
Programming Languages and Systems is a huge field of Computer Science. Early research on quantum programming focused on the design of quantum programming languages. Several high-level quantum programming languages had been defined in the later 1990's and early 2000's; for example, the first quantum programming language, QCL, was designed by Ömer; he also implemented a simulator for this language. A quantum programming language in the style of Dijkstra's guarded-command language, qGCL, was proposed by Sanders and Zuliani. A quantum extension of C++ was proposed by Bettelli et al., and implemented in the form of a C++ library. The first quantum language of the functional programming paradigm, QPL, was defined by Selinger based on the idea of classical control and quantum data. A quantum functional programming language QML with quantum control flows was introduced by Altenkirch and Grattage. Tafliovich and Hehner defined a quantum extension of predicative programming language that supports the program development technique in which each programming step is proven correct when it is made. These early researches played an important role in helping us to understand some basic differences between classical programming and quantum programming.
The second wave of research on quantum programming languages occurred in early 2010's. For example, two general-purpose, scalable quantum programming languages, Quipper and Scaffold, with compilers were developed by Green, Lumsdaine, Ross, Selinger, and Valiron and Abhari, Faruque, Dousti, et al., respectively. A domain-specific quantum programming language QuaFL was developed by Lapets, da Silva, Thome, Adler, Beal, and Rotteler. A quantum software architecture LIQUi|> together with a quantum programming language embedded in F# was designed and implemented by Wecker and Svore. A series of researches on quantum computer architecture have also been carried out in this period of time.
Stimulated by the rapid progress of building quantum hardware since the middle of 2010's, quantum programming languages and compilers have become a very active research area with the emphasis on practical applications, and many new research results have been reported, from instruction sets and intermediate representations (e.g. OpenQSAM, Quil, QIR) to languages for the description of quantum circuits (e.g. QWIRE), high-level programming languages and frameworks (e.g. Q#, Quipper, Silq, Quingo) and software stacks (e.g. Qiskit, tket, Cirq, isQ). A quantum programming language Qunity was designed in [401] in order to treat quantum computing as a natural generalisation of classical computing. Also, data structures were recently introduced into quantum programming languages by Yuan and Carbin.
It seems that the Noisy Intermediate-Scale Quantum (NISQ) era will last for a while in the future, in which hardware is too resource-constrained to support error correction, and running long sequences of operations on them is impractical. So, a particularly important research topic is optimising quantum compilers. A large part of a classical optimising compiler target the optimisation of high-level program constructs, e.g. loop optimisation. But the current research on optimising quantum compilers mainly considers the optimisation of quantum circuits because at this moment high-level program constructs cannot be executed on quantum hardware. Since we aim mainly at dealing with the foundational issues, the compilation techniques for quantum programs are not covered in the main body of this book but will be briefly discussed in the final prospect chapter.
Formal semantics of a programming language gives a rigorous mathematical description of the meaning of this language, to enable a precise and deep understanding of the essence of the language beneath its syntax. The operational or denotational semantics of some early quantum programming languages were already provided when they were defined; for example qGCL, QPL, and QML mentioned in the above subsection.
Demystifies the theory of quantum programming using a step-by-step approach
Includes methodologies, techniques, and tools for the development, analysis, and verification of quantum programs and quantum cryptographic protocols
Covers the interdisciplinary nature of quantum programming by providing preliminaries from quantum mechanics, mathematics, and computer science, and pointing out its potential applications to quantum engineering and physics
Presents a coherent and self-contained treatment that will be valuable for academic and industrial researchers and developers
Adds new developments such as parallel and distributed quantum programming; and introduces several new program analysis techniques such as invariants generation and abstract interpretation
Скачать Foundations of Quantum Programming, 2nd Edition