To help the understanding and development of quantum algorithms there is an effort focused on the investigation of new semantic models and programming languages for quantum computing. Researchers in computer science have the challenge of deve loping programming languages to support the creation, analysis, modeling and simulation of high level quantum algorithms. Based on previous works that use monads inside the programming language Haskell to elegantly explain the odd characteristics of quantum computation (like superposition and entanglement), in this work we present a monadic Java library for quantum programming. We use the extension of the programming language Java called BGGA Closure, that allow the manipulation of anonymous functions (closures) inside Java. We exemplify the use of the library with an implementation of the Toffoli quantum circuit.
To help the understanding and development of quantum algorithms there is an effort focused on the investigation of new semantic models and programming languages for quantum computing. Researchers in computer science have the challenge of deve loping programming languages to support the creation, analysis, modeling and simulation of high level quantum algorithms. Based on previous works that use monads inside the programming language Haskell to elegantly explain the odd characteristics of quantum computation (like superposition and entanglement), in this work we present a monadic Java library for quantum programming. We use the extension of the programming language Java called BGGA Closure, that allow the manipulation of anonymous functions (closures) inside Java. We exemplify the use of the library with an implementation of the Toffoli quantum circuit.
To help the understanding and development of quantum algorithms there is an effort focused on the investigation of new semantic models and programming languages for quantum computing. Researchers in computer science have the challenge of developing programming languages with high level abstraction of quantum algorithms. Based on previous works that use monads inside the programming language Haskell to elegantly explain the odd characteristics of quantum computation (like superposition), in this work we present a monadic Java library for quantum programming using the new features of anonymous functions (closures) available in the developers preview of the JDK 8 (Java Development Kit).
Quantum computing is an emerging technology that, currently, has the challenge of developing programming languages, according to the rules of quantum mechanics, to support the creation, analysis, modeling and simulation of high-level quantum algorithms. Particularly, the focus is on the investigation of new semantic models to develop programming languages for quantum computing. In this context, one alternative is to use the semantic model of monads and arrows that abstracts both pure and mixed quantum states and also can express measures. This model however, was originally implemented as a library for the functional language Haskell, which not every programmer is family. This way, this study aims to provide a universal tool for high-level quantum programming, providing a library for Java. This library was implemented using the new features of closures present in the version 8 of the JDK (Java Development Kit), already available in developers preview. In addition, we present a specific syntax for the library to facilitate the development of quantum algorithms with a clearly structured notation. This syntax is described in a notation similar to the do-notation of Haskell and operates in conjunction with a parser implemented by ANTLR tool.
With the approaching end of Moore’s Law, where will not be possible to improve the capacity of silicon based processors, the quantum computing appear to be a good choice to provide a new era of computation. Quantum computing can be understood as the art of transform information encoded in the state of a quantum physical system. This encoding is through the quantum bits (qubits), which can be on superposition or entangled states, enabling to explore the property called quantum parallelism. In this work is discussed the creation of a quantum programming language implementing the object-oriented paradigm (OO), allowing manipulation of classes and objects, where the quantum effects are handled through a monadic approach, extending the Featherweight Java (FJ) proposal. This language is formally defined through the operational semantics, which allow the implementation in any language that provides closures. That language formalization enables us to create an interpreter, implementing the steps of lexical, syntactic and semantic analysis, focusing in the type system to embedded quantum computing concepts in a classical language. Several examples are provided in the text, showing ways to handle the monadic layer in order to perform transformations in quantum information.
This thesis looks at the development of a framework for a functional quantum programming language. The framework is first developed in Haskell, looking at how a monadic structure can be used to explicitly deal with the side-effects inherent in the measurement of quantum systems, and goes on to look at how a dependently-typed reimplementation in Agda gives us the basis for a formally\nverified quantum programming language. The two implementations are not in themselves fully developed quantum programming languages, as they are embedded in their respective parent languages, but are a major step towards the development of a full formally verified, functional quantum programming language. Dubbed the “Quantum IO Monad”, this framework is designed following a structural approach as given by a categorical model of quantum computation.
It is now clear that the use of resilient encoding schemes will be required for any quantum computing device to be realised. However, quantum programmers of the future will not wish to be tied up in the particulars of such encoding schemes. Quantum programming languages and libraries are already being developed, one of which is the Quantum IO Monad. QIO, as it is often abbreviated to, provides an interface to define and simulate quantum computations via a library of functions written in Haskell, a purely functional programming language. A solution is presented that takes an arbitrary QIO program and returns an equivalent program incorporating some specified quantum error correction techniques.
Quantum programming languages provide necessary constructs to program quantum computers. To write such programs, one needs to understand the characteristics of quantum computers such as superposition and entanglement, which are novel as compared to programming with classical computers. Understanding these characteristics requires an understanding of quantum physics. Thus, there is a need to build high-level modeling abstractions of quantum programs for software engineers who are used to program on classical computers to understand and model quantum programs at a high-level of abstraction and independent of quantum platforms. To this end, we present some ideas for developing such quantum software modeling languages, by presenting a conceptual model of quantum programs and an example of modeling the state-based behavior of quantum entanglement program. Moreover, we present some open issues in the area of modeling quantum programs.