
The distinct working principles and powerful computational capabilities of quantum computers, compared to classical computers, hold the potential to shape the future of technology. However, understanding and programming quantum computers require grasping complex subjects such as quantum mechanics. This article aims to provide a deeper understanding of the topic by explaining fundamental concepts of the quantum world, examples applicable in daily life, and the basics of quantum programming. Additionally, practical insights into popular tools like Qiskit and quantum computing methods will be offered, encouraging readers to comprehend and take interest in this innovative technology.
1. FIRST STEP INTO THE QUANTUM WORLD
Quantum computers are a type of computer that operates fundamentally differently from traditional computers, based on the principles of quantum mechanics. While classical computers operate on electronic units called bits, quantum computers process quantum bits known as qubits. Classical bits can only hold values of 0 or 1, whereas qubits can exist as 0 and 1 simultaneously, meaning quantum computers have the potential to perform many more operations at once compared to classical computers.
Quantum computers are specifically designed to solve certain problems and can solve some problems much faster than classical computers. For example, they can use quantum algorithms like Shor's Algorithm to solve complex mathematical problems.
The hardware characteristics of quantum computers focus on how they store and process quantum bits. These characteristics involve topics such as how qubits are physically represented, manipulated, and how connections between qubits are established. Physical qubits typically utilize quantum properties like the spins of electrons or the nuclear spins of atoms.
Examples of Quantum Algorithms for Everyday Use:
Since quantum computers are still in the development stage, the quantum algorithms that can be directly used in everyday life are limited. However, their potential applications may expand in the future.
Optimization Problems:
Optimization problems used in fields such as logistics, transportation, and supply chains can be solved more quickly with quantum computers. This can have a direct impact on daily life by reducing transportation costs or optimizing delivery times.
Chemical Simulations:
Quantum computers can be used to simulate chemical reactions and the behavior of molecules more accurately. This can have a significant impact in areas like drug development and materials science.
Machine Learning and Data Analysis:
Quantum computers can improve machine learning models by processing complex datasets more quickly. This can be used, for example, in the development of personalized medical diagnoses or recommendations.
Cryptography and Security:
Quantum algorithms can be used to develop strong encryption and security protocols. This can help enhance online security in everyday life.
Time Series Analysis:
Quantum computers can assist in making more accurate predictions in areas such as weather forecasting or financial data analysis by analyzing complex time series.
These examples demonstrate the potential future applications of quantum computers. However, further research and development are required to advance these applications and integrate them into everyday life.
2. DIFFERENCES BETWEEN QUANTUM AND CLASSICAL COMPUTERS
Quantum computers can offer significant advantages over classical computers, especially in fields such as solving complex mathematical problems and analyzing chemical and molecular structures. However, they are not widely used yet as they are still in the developmental stage.
a- Basic Processing Units:
-
Classical Computers: process information using electronic units called bits. Each bit can hold only a value of 0 or 1.
-
Quantum Computers: operate on quantum bits known as qubits. Qubits can be in a state of superposition, being both 0 and 1 simultaneously, not just 0 or 1.
b- Processing Capacity:
-
Classical Computers: can perform only a limited number of operations at a given time. Their parallel processing capabilities are restricted.
-
Quantum Computers: can perform many more operations simultaneously due to properties like superposition and entanglement. This allows them to solve certain problems much faster than classical computers.
c- Algorithms and Processing Methods:
-
Classical Computers: operate using traditional logic and processing gates. They establish specific logical relationships between bits when processing data.
-
Quantum Computers: use quantum gates for processing. These gates enhance processing power by creating entanglement and superposition among qubits.
d- Data Storage and Processing:
-
Classical Computers: store and process data in bits. The state of bits can only be 0 or 1.
-
Quantum Computers: store and process data in qubits. The superposition and entanglement properties of qubits allow data to be processed in much different and more efficient ways.
e- Uncertainty and Accuracy:
-
Classical Computers: Classical computers can process a specific value precisely at any given moment, meaning there is no uncertainty.
-
Quantum Computers: Quantum computers operate according to the principle of uncertainty, and the state of a qubit cannot be precisely determined at any given moment. This allows them to achieve more accurate results for certain problems.
3. QUANTUM MECHANICS: FUNDAMENTAL PRINCIPLES AND CONCEPTS
Quantum mechanics is a theory that explains the behavior of subatomic particles and surpasses the limits of classical physics. Developed in the early 20th century, this theory is used to describe the microscopic world of matter and light.
a- Wave-Particle Duality: Quantum mechanics suggests that particles possess both wave and particle characteristics. Therefore, particles sometimes spread like waves and sometimes behave like particles at specific points.
b- Uncertainty Principle: Proposed by Werner Heisenberg, the uncertainty principle states that it is impossible to precisely determine both the position and momentum of a particle simultaneously. This principle demonstrates that there is inherent uncertainty in the microscopic world.
c- Quantum Superposition: The state of superposition, where a qubit can be both 0 and 1 simultaneously instead of just 0 or 1, is a fundamental feature of quantum mechanics. This means qubits can exist in multiple states at the same time.
d- Quantum Entanglement: Entanglement is a special relationship established between two or more qubits, meaning the state of one qubit can instantly affect the states of other qubits. This phenomenon plays a crucial role in fields such as quantum communication and quantum computing.
4. INFORMATION ABOUT QUBITS (QUANTUM BITS)
Qubits are the fundamental building blocks of quantum computers and allow them to overcome the computational limitations of classical computers. Understanding and utilizing the properties of qubits correctly is essential in quantum programming.
a- Differences Between Classical Bits and Qubits:
-
While classical bits can only take values of 0 or 1, qubits can be both 0 and 1 simultaneously. This condition is known as superposition.
-
Another important feature of qubits is entanglement. Through a special relationship established between two or more qubits, the state of one qubit can instantly affect the states of other qubits.
b- Qubit States:
The state of a qubit is represented as |0⟩ and |1⟩. These states are like the states of classical bits, but qubits can also exist in a combination of these two states simultaneously. For example, a qubit state expressed as a|0⟩ + b|1⟩ can take the value of 0 with a probability of a and 1 with a probability of b.
c- Physical Representation of Qubits:
-
Qubits can be represented in various physical systems. Electron spins, nuclear spins of atoms, or photon polarizations can be used as qubits.
-
These physical systems provide the properties of superposition and entanglement for qubits and are used to store and transfer information between qubits.
d- Qubit Operations:
-
Quantum gates are used to perform operations on qubits. These gates are used to manipulate qubit states and are the fundamental building blocks of quantum circuits.
-
Example quantum gates include Hadamard, Pauli, and CNOT gates. These gates are used to transform qubit states and perform specific operations in quantum circuits.
e- Measurement and Classicization:
-
When a qubit is measured, it classicalizes to a specific state (0 or 1). This transition allows the qubit to exit its superposition state and take on a definite value.
-
The entanglement feature between qubits becomes apparent during measurement, allowing the determination of the relationship between qubits.
5. QUBITS AND COMPUTING POWER
Qubits (Quantum Bits) are the fundamental building blocks of quantum computers and allow them to overcome the computational limitations of classical computers. The properties of qubits, such as superposition and entanglement, enhance the parallel computing capabilities of quantum computers and enable them to solve certain problems much faster than classical computers.
a- Parallel Computing Capability:
The superposition property of qubits allows them to process multiple states simultaneously. This increases the parallel computing capability of quantum computers and enables them to solve complex problems much more quickly.
b- Quantum Parallelism:
Quantum parallelism allows a quantum computer to explore numerous computational paths simultaneously, quickly finding a result. This provides a significant advantage over classical computers, especially in certain optimization and search problems.
c- Superiority Over Classical Computers:
In some problems, quantum computers demonstrate superiority over classical computers. For example, quantum algorithms like Shor's Algorithm can factor large numbers rapidly.
d- Data Processing and Analysis:
Qubits can process and analyze data differently, producing results distinct from classical computers. Their characteristics offer a significant advantage in complex data analysis and simulation problems.
The computing power of qubits can enable quantum computers to have a significant impact in various fields in the future. Therefore, efforts to understand the potential of quantum computers and to develop this technology are ongoing.
6. INTRODUCTION TO QUANTUM PROGRAMMING
Quantum programming requires a different approach than traditional programming paradigms and is fundamentally based on the principles of quantum mechanics. To work in quantum programming languages, proficiency in certain topics like mathematics, matrices, statistics, and probability is important. These subjects are essential to understand and correctly apply quantum computations.
a- Mathematics:
-
Basic Algebra: Linear algebra is a fundamental branch of mathematics for quantum mechanics and quantum programming. Understanding linear algebra is necessary to comprehend qubits and quantum circuits.
-
Complex Numbers: Complex numbers are frequently used in quantum computations. Therefore, the ability to operate on complex numbers is important.
-
Quantum Operators: Quantum operators are matrices representing operations within quantum circuits. Understanding and correctly applying quantum operators require mathematical knowledge.
b- Matrices:
-
Quantum circuits and qubits are often represented using matrices. Therefore, the ability to work with matrices is crucial for quantum programming.
-
Matrix Multiplication and Inversion: Quantum programming frequently utilizes matrix operations such as matrix multiplication and inversion.
c- Statistics and Probability:
-
Quantum Superposition and Uncertainty Principle: Quantum superposition and the uncertainty principle are fundamental concepts based on quantum mechanics. Understanding these concepts requires knowledge of statistics and probability.
-
Qubit States and Probability: The state of a qubit can be 0 with a certain probability and 1 with another probability. Understanding probability in the context of quantum programming is important for grasping this concept.
Quantum programming requires a different perspective from traditional programming, incorporating mathematics, matrices, statistics, and probability. Thus, understanding and applying these topics well is essential when learning quantum programming languages.
7. QISKIT AND LOGIC GATES
Qiskit is a Python library developed by IBM used for quantum computers. It enables the design, simulation, and execution of quantum circuits on real quantum computers. While logic gates represent logical operations in classical computers, quantum gates represent logical operations in quantum computers.
a- Using Qiskit:
-
Qiskit is a fundamental tool for creating quantum circuits. These circuits are constructed using quantum gates and are used to implement various quantum algorithms.
-
One advantage of Qiskit is its ease of use, making it accessible to those familiar with the Python language.
b- Logic Gates:
-
Quantum gates are used in quantum circuits to perform specific operations. For example, the Hadamard gate puts a qubit into superposition.
-
Other popular quantum gates include Pauli-X, Pauli-Y, Pauli-Z, CNOT (Controlled-NOT), and SWAP gates. These gates represent different logical operations.
c- Example Usage:
-
For instance, you can use a Hadamard gate to put a qubit into superposition and then use a CNOT gate to create entanglement between two qubits. This operation is a simple example demonstrating the parallel computing capabilities of quantum computers.
Qiskit and logic gates are fundamental tools in the field of quantum programming and play an essential role in the design and implementation of quantum circuits.
8. QUANTUM LOGIC GATES
Quantum computers have logic gates like those in classical computers, but they operate according to the rules of quantum mechanics. Some basic quantum logic gates and their functions are as follows:
a- X (NOT) Gate:
-
Flips a qubit to the opposite state. It turns a qubit in the |0⟩ state into the |1⟩ state and vice versa.
-
For example, if you input a qubit |0⟩ to the X gate, you get |1⟩; if you input |1⟩, you get |0⟩.
b- Hadamard (H) Gate:
-
Puts a qubit into superposition, bringing it into a state that includes both 0 and 1.
-
For example, if you input |0⟩ to the H gate, you get (|0⟩ + |1⟩) / √2.
c- Z Gate:
-
Changes the phase of a qubit. Specifically, it inverts the phase of a qubit in the |1⟩ state.
-
For example, if you input |1⟩ to the Z gate, you get -|1⟩ (due to the phase change).
d- CNOT (Controlled-NOT) Gate:
-
Creates entanglement between a control qubit and a target qubit. If the control qubit is |1⟩, it flips the state of the target qubit.
-
For example, if the control qubit is |1⟩ and the target qubit is |0⟩, the target qubit becomes |1⟩.
e- SWAP Gate:
-
Exchanges the states of two qubits. The state of the first qubit becomes the state of the second qubit and vice versa.
-
For example, if the first qubit is |0⟩ and the second qubit is |1⟩, after applying the SWAP gate, the first qubit becomes |1⟩ and the second qubit becomes |0⟩.
These quantum logic gates are the fundamental building blocks used to perform operations in quantum computers. Various quantum algorithms and operations are designed and implemented using these gates.
9. MATRICES AND BRA-KET NOTATION
Matrices and ket notation (ket vectors) are frequently used in quantum mechanics and are important for mathematically expressing the state and evolution of a qubit. The main reason for introducing ket notation is to simplify complex matrix representations in visual depictions. To better understand the relationship, it's essential to explain ket notation and its relationship with matrices.
a- Ket Notation (Ket Vectors):
-
Ket notation is a vector notation used in quantum mechanics to represent the state of a qubit. For example, |0⟩ and |1⟩ represent the basic states of a qubit.
-
Generally, the state of a qubit is expressed with a ket vector as follows: ∣ψ⟩=α∣0⟩+β∣1⟩ Here, α and β are complex numbers that define the state of the qubit. They are normalized such that |α|² and |β|² add up to 1.
b- Matrices and Qubit State:
-
Matrices used to mathematically express the state of a qubit are related to ket vectors. For example, the matrix of a Hadamard gate is as follows:
-
When this matrix is applied to a qubit, it changes the state of the qubit. For example, when a Hadamard gate is applied to the |0⟩ ket vector, the transformation occurs as follows:
This relationship is used in quantum mechanics to mathematically express qubit states and operations. The relationship between matrices and ket vectors is a fundamental building block for the design and analysis of quantum computers.
c- Ket Vectors:
Ket vectors are a special notation used in quantum mechanics and quantum computing. These vectors are used to represent the states and evolution of quantum systems. Ket vectors are typically expressed with notation such as |ψ⟩, where ψ is a symbol representing the name or information contained within the vector. Below are examples of ket vectors:
c1. Basic States:
|0⟩ and |1⟩: Represent the basic states of a qubit. The |0⟩ state corresponds to the "0" state in a classical computer, while the |1⟩ state corresponds to the "1" state.
c2. Superposition State:
|+⟩ and |-⟩: Represent the superposition states a qubit can take after applying a Hadamard gate. The |+⟩ state is mathematically expressed as (|0⟩ + |1⟩) / √2.
c3. Entanglement State:
|00⟩, |01⟩, |10⟩, |11⟩: Represent the entanglement states between two qubits. For example, the |00⟩ state represents the entangled state where both qubits are in the |0⟩ state.
c4. General States:
|ψ⟩: Represents the general state of a qubit. For example, a general state expressed as (α|0⟩ + β|1⟩) uses complex numbers α and β to define the state of the qubit.
10. Quantum Teleportation
Quantum teleportation is a phenomenon that enables the transfer of information between quantum computers. It involves "transporting" a qubit from one location to another, but this transfer does not occur through classical communication methods. Quantum teleportation allows a qubit to be transferred from one place to another, yet this process does not involve physically moving the qubit. Instead, a copy of the qubit's state is created and "written" onto another qubit. An example of how quantum teleportation works is detailed below:
a- Preparation Phase:
-
The quantum teleportation process involves three qubits: A, B, and C.
-
Qubit A is the one to be teleported. This qubit is located between qubits B and C, which are in an entangled state.
b- Creating Entanglement:
Initially, qubits B and C must be in an entangled state. This means that an entangled state is created between B and C, indicating that the states of B and C qubits are interconnected.
c- Measurement and Communication:
-
Qubit A represents the state that needs to be teleported.
-
Qubit A is measured to share its state between qubits B and C.
-
The data obtained from the measurement is sent to B via a classical communication channel.
d- Transferring the Qubit:
-
B adjusts its state based on A's measurement result. This adjustment becomes B's new state.
-
This step does not change the state of qubit C because qubit C is unaware of A's measurement result.
As a result of these steps, the state of the qubit in A is "teleported" to B. This process uses a classical communication channel, but the transfer of the qubit's state occurs according to the rules of quantum mechanics.
Example Application:
For instance, suppose there is a qubit in state |ψ⟩ at A. This qubit is among those qubits that are entangled between B and C. The qubit at A is measured, and the result of this measurement is communicated to B. B then changes its state based on the measurement result from A, thereby transferring the state of the qubit from A to B.
11. SIMULATION ON IBM'S QUANTUM COMPUTER
IBM Quantum Experience is a platform where you can use IBM's quantum computers and simulators online. On the Quantum Experience platform, you can run quantum circuits written with Qiskit on real IBM quantum computers or simulators. Below is a step-by-step example of how to perform a simulation on IBM Quantum Experience:
a- Log In to IBM Quantum Experience:
-
Go to the IBM Quantum Experience website: https://quantum-computing.ibm.com/.
-
Log in with your IBM account or create a new account.
b- Creating a Quantum Circuit:
-
Go to the "Circuit Composer" section.
-
Click on "+ New Circuit" to create a new circuit.
-
In the Quantum Composer interface, drag and drop the desired quantum gates to build your circuit. For example, you can create a 3-qubit Hadamard gate circuit.
c- Simulation Selection:
-
Click on your created circuit to view its details.
-
Click the "Run" button to see the options for running your circuit.
-
Select the "Simulator" option to simulate your circuit.
d- Simulation Results:
Once the simulation is complete, a screen will open where you can view your results. This screen shows the outputs and probabilities of your circuit.
e- Analyzing Results:
-
Go to the "Results" section to analyze your results.
-
You can view your results with histograms or other visualizations.
The simulators on IBM Quantum Experience can be used to test various quantum circuits and algorithms. If you want to run them on real quantum computers, you may need to have or purchase a certain number of credits. The response from the code snippets you write and send to the simulation on your computer may take some time as you are queued. For the most up-to-date information, you can always check IBM's own website. Information may vary over time.
You can find instructions related to Qiskit at the following link: https://docs.quantum.ibm.com/start
12. CODING EXAMPLES (PYTHON AND QISKIT)
Example 1:
from qiskit import QuantumCircuit, Aer, execute
# Create a quantum circuit with 2 qubits
qc = QuantumCircuit(2, 2)
# Apply Hadamard gate
qc.h(0)
qc.h(1)
# Apply CNOT gate
qc.cx(0, 1)
# Perform measurement
qc.measure([0, 1], [0, 1])
# Run in the simulator
simulator = Aer.get_backend('qasm_simulator')
job = execute(qc, simulator, shots=1000)
result = job.result()
# Display the results
counts = result.get_counts(qc)
print("\nTotal count for 00 and 11 are:",counts)
This code creates a circuit with 2 qubits, applies a Hadamard gate and a CNOT gate, performs measurement, and simulates the result.
Example 2:
This time, let's tackle a basic data analysis problem and try to find the correlation between the data. In this example, we will work on a simple dataset and create a quantum circuit to measure the correlation between the data:
1. Load Required Libraries and Dataset:
import numpy as np
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram
2. Creating a Sample Dataset: Let's create a simple dataset consisting of 3 features:
np.random.seed(0)
data_points = 100
feature1 = np.random.rand(data_points)
feature2 = np.random.rand(data_points)
feature3 = np.random.rand(data_points)
3. Creating a Quantum Circuit: We will create one qubit for each of the 3 features and design a circuit to measure the correlation between these qubits:
qc = QuantumCircuit(3, 3)
qc.h(range(3))
qc.measure(range(3), range(3))
4. Performing Simulation: Let's run the created circuit on a simulator:
simulator = Aer.get_backend('qasm_simulator')
job = execute(qc, simulator, shots=1000)
result = job.result()
counts = result.get_counts(qc)
5. Visualizing the Results: Visualize the obtained results in the form of a histogram:
plot_histogram(counts)
This example demonstrates a basic quantum approach for data analysis. However, when working with real data, more complex and effective algorithms may be required.
Details:
1. qc = QuantumCircuit(3, 3): This line creates a quantum circuit with three qubits (QuantumCircuit(3)) and three classical bits (QuantumCircuit(3)). The first parameter specifies the number of qubits, and the second parameter specifies the number of classical bits.
2. qc.h(range(3)): This line applies the Hadamard (H) gate to all three qubits, putting them into a superposition state. The range(3) expression selects the three qubits corresponding to indices 0, 1, and 2.
3. qc.measure(range(3), range(3)): This line connects the quantum circuit to classical bits by performing measurement. The first parameter specifies which qubits will be measured (range(3) selects all qubits), and the second parameter indicates the order in which the measurement results will be written to classical bits (range(3) selects all classical bits).
4. job = execute(qc, simulator, shots=1000): The shots parameter specifies how many times a quantum circuit will be executed. By running the quantum circuit multiple times, different measurement results can be obtained and analyzed statistically. For instance, shots=1000 means the quantum circuit will be executed 1000 times, obtaining a measurement result with each execution. This ensures that the obtained results are more reliable and statistically significant.
Example 3:
Grover's Search Algorithm: This algorithm is used to quickly find a target item in a database.
from qiskit import QuantumCircuit, Aer, execute
n = 3 # Number of qubits
qc = QuantumCircuit(n)
# Create superposition
qc.h(range(n))
qc.cz(0, 2)
# Invert
qc.h(range(n))
qc.z(range(n))
# Simulate the circuit and visualize the results
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1)
result = job.result()
counts = result.get_counts()
print(counts)
Example 4:
Deutsch-Jozsa Algorithm: This algorithm is used to determine whether a function within a black box is constant or balanced.
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram
n = 3 # Number of qubits
qc = QuantumCircuit(n+1, n)
# Preparation: set all qubits to |0⟩ and the last qubit to |1⟩
qc.x(n)
qc.barrier()
# Create superposition
qc.h(range(n+1))
qc.barrier()
for qubit in range(n):
qc.cx(qubit, n)
qc.barrier()
# Flip the last qubits
qc.h(range(n))
qc.measure(range(n), range(n))
# Simulate the circuit and visualize the results
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1)
result = job.result()
counts = result.get_counts() => print(counts)
Example 5:
Vernam Cipher: Encrypts by XORing each character with a random key. In this example, we can perform a simple Vernam Cipher encryption using a quantum circuit with 2 qubits.
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram
import random
# Create key
key = [random.choice([0, 1]) for _ in range(2)]
# Create text
message = 'hello'
binary_message = ''.join(format(ord(char), '08b') for char in message)
# Create Qiskit circuit
qc = QuantumCircuit(len(message)*2, len(message)*2)
# Apply key to the circuit
for i, bit in enumerate(key):
if bit == 1:
qc.x(i)
# Apply message to the circuit
for i, bit in enumerate(binary_message):
if bit == '1':
qc.x(i+len(key))
# XOR operation
for i in range(len(message)*2):
qc.cx(i, i+len(key))
qc.measure(range(len(message)*2), range(len(message)*2))
# Simulate the circuit and visualize the result
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1)
result = job.result()
counts = result.get_counts() => print(counts)
Result
Quantum programming, while still in its developmental stages, offers potentially revolutionary applications. This article provides information on how quantum computers operate differently from classical computers, the fundamentals of quantum mechanics and qubits, and the tools and technologies for quantum programming. Additionally, with examples of simulation environments provided by IBM and how to write quantum algorithms, one can take initial steps into the world of quantum programming. Discussions on how quantum programming can be applied in daily life and its possible future applications suggest that developments in this field will rapidly gain momentum. In conclusion, it can be said that quantum computing will hold a significant place in the computing world in the coming years and has the potential to transform daily life in many areas. My opinion is that within 3-4 years, all sectors will experience a significant transformation, and particularly, the banking sector should urgently begin working on information security.
References:
-
Quantum computation and quantum information. Nielsen, M. A., & Chuang, I. L. (2010). Cambridge university press.
-
Introduction to quantum mechanics. Griffiths, D. J. (2005). Pearson Education.
-
Quantum Computing: From Linear Algebra to Physical Realizations. (2018). CRC Press.
-
Quantum computing: From linear algebra to physical realizations. Nakahara, M., & Ohmi, T. (2008). CRC press.
-
Quantum Computing for Computer Scientists - Noson S. Yanofsky, Mirco A. Mannucci
-
Quantum Mechanics Demystified – McMahon D.
-
https://www.udemy.com (Atil Samancioglu)
-
https://qiskit.org/documentation
-
https://medium.com/duzensiz/kuantum-bilgisayarların-matematiği-üzerine-a787df82a8ce
-
https://quantum-computing.ibm.com/
-
https://docs.quantum.ibm.com/start
-
https://www.linkedin.com/pulse/qiskit-next-generation-os-quantum-worth-debadip-deb-
-
Supported by ChatGPT 3.5 in code samples