Προγραμματισμός

Q # γλώσσα: Πώς να γράψετε κβαντικό κώδικα στο Visual Studio

Το μέλλον του υπολογιστή δεν είναι πυρίτιο. βρισκόμαστε ήδη στα όρια του Νόμου του Μουρ όσον αφορά την απόδοση που μπορούμε να πάρουμε από τα παραδοσιακά τρανζίστορ. Εργαζόμαστε επίσης σε πολύ μεγαλύτερα προβλήματα, ειδικά όσον αφορά την κρυπτογραφία και τη μαθηματική μοντελοποίηση. προβλήματα που απαιτούν ημέρες υπολογισμού ακόμη και στους μεγαλύτερους υπερυπολογιστές.

Λοιπόν, πού πηγαίνουμε από εδώ; Η Microsoft Research, όπως η Google και η IBM, πραγματοποίησαν μεγάλες επενδύσεις στον κβαντικό υπολογισμό. Μεγάλο μέρος της έρευνάς της ήταν στη βασική φυσική, σε συνεργασία με πανεπιστήμια σε όλο τον κόσμο για την παραγωγή αποτελεσματικών περιβάλλοντος χαμηλής θερμοκρασίας και σταθερών κβαντικών υπολογιστικών περιβαλλόντων. Αλλά η δημιουργία ενός qubit - το πιθανό κβαντικό bit που ουσιαστικά αντικαθιστά τα 0 και 1 του παραδοσιακού bit - είναι μόνο μέρος της ιστορίας. Αυτό που χρειάζεται επίσης είναι ένας τρόπος προγραμματισμού ενός κβαντικού υπολογιστή και η ερμηνεία της πιθανότητας του qubits.

Κατασκευή κβαντικών υπολογιστών

Η αρχιτεκτονική ενός κβαντικού προγράμματος είναι σχετικά απλή: Ένα παραδοσιακό πρόγραμμα λαμβάνει τιμές από την είσοδο του χρήστη ή από άλλο κώδικα. Στη συνέχεια μεταβιβάζει αυτές τις τιμές σε μια κβαντική εφαρμογή που ορίζει τα qubits σε έναν κβαντικό επεξεργαστή, χρησιμοποιώντας έναν από πολλούς αλγόριθμους κβαντικής, προτού περάσει τα αποτελέσματα πίσω στη μητρική εφαρμογή.

Είναι μια διαδικασία πολύ παρόμοια με αυτήν που χρησιμοποίησα στην πρώτη μου εργασία προγραμματισμού, γράφοντας τον κώδικα ανάλυσης πεπερασμένων στοιχείων Fortran που χρησιμοποίησε έναν επεξεργαστή φορέα συνδεδεμένο σε έναν υπερυπολογιστή για να χειριστεί τη μήτρα άλγεβρα. Οι διανυσματικές βιβλιοθήκες που χρησιμοποιούσα για να φτιάξω και να λύσω τα τρισδιάστατα ηλεκτρομαγνητικά μου μοντέλα δούλεψαν τόσο σε αυτό το εξειδικευμένο υλικό είτε σε έναν μαθηματικό συνεπεξεργαστή σε έναν επιτραπέζιο σταθμό εργασίας, οπότε μπορούσα να δοκιμάσω τον κωδικό μου πριν χρησιμοποιήσω ακριβό χρόνο υπερυπολογιστών.

Η Microsoft κυκλοφόρησε πρόσφατα το Quantum Development Kit, που δημιουργήθηκε γύρω από τη νέα γλώσσα Q #. Σχεδιασμένο για να χρησιμοποιεί γνωστά κατασκευάσματα για να βοηθά τις εφαρμογές του προγράμματος που αλληλεπιδρούν με qubits, ακολουθεί παρόμοια προσέγγιση για τη συνεργασία με τους συνεπεξεργαστές, παρέχοντας βιβλιοθήκες που χειρίζονται τον πραγματικό κβαντικό προγραμματισμό και ερμηνεία, ώστε να μπορείτε να γράψετε κώδικα που παραδίδει τις λειτουργίες qubit σε έναν από τους κβαντικούς υπολογιστές της Microsoft. .

Η γεφύρωση των κλασσικών και κβαντικών υπολογιστών δεν είναι εύκολη, οπότε μην περιμένετε το Q # να είναι σαν τη Visual Basic. Μοιάζει περισσότερο με τη χρήση αυτού του συνόλου βιβλιοθηκών μαθηματικών Fortran, με την ίδια υποκείμενη υπόθεση: ότι καταλαβαίνετε τη θεωρία πίσω από αυτό που κάνετε.

Ένα στοιχείο του Quantum Development Kit είναι ένας εκκινητής κβαντικών υπολογιστών, ο οποίος διερευνά ζητήματα γύρω από τη χρήση προσομοιωτών, καθώς και την παροχή ενός εκκινητή σε γραμμική άλγεβρα. Αν πρόκειται να προγραμματίσετε στο Q #, είναι απαραίτητη η κατανόηση των βασικών γραμμικών αλγεβρικών εννοιών γύρω από διανύσματα και πίνακες - ειδικά ιδιοτιμές και ιδιοδιανύσματα, τα οποία είναι βασικά στοιχεία πολλών κβαντικών αλγορίθμων.

Ξεκινώντας με το Q #

Το κιτ ανάπτυξης λαμβάνεται ως επέκταση του Visual Studio, ώστε να μπορείτε να το χρησιμοποιήσετε με όλες τις εκδόσεις του κύριου περιβάλλοντος ανάπτυξης της Microsoft, συμπεριλαμβανομένης της δωρεάν έκδοσης κοινότητας. Το πρόγραμμα εγκατάστασης περιλαμβάνει τη γλώσσα Q #, έναν τοπικό κβαντικό προσομοιωτή και βιβλιοθήκες που υποστηρίζουν την ενσωμάτωση ενοτήτων Q # στον κώδικα .Net. Μόλις εγκατασταθεί, μπορείτε να συνδεθείτε στο αποθετήριο Q # Github της Microsoft για κλωνοποίηση και λήψη δείγματος κώδικα και πρόσθετων βιβλιοθηκών. Είναι μια γρήγορη διαδικασία. Ο εγκαταστάτης διαρκεί μερικά λεπτά για να κατεβάσει και να τρέξει σε έναν αρκετά ισχυρό υπολογιστή ανάπτυξης. Οι βιβλιοθήκες φιλοξενούνται στο Nuget, ώστε να μπορείτε να ενημερώσετε γρήγορα τις πιο πρόσφατες εκδόσεις.

Με έναν κβαντικό υπολογιστή που λειτουργεί ακόμα λίγα χρόνια μακριά, το Quantum Development Kit περιορίζεται στην εργασία με προσομοιωμένους κβαντικούς υπολογιστές. Τα ερευνητικά συστήματα της Microsoft δεν έχουν ακόμη παράγει λειτουργικό τοπολογικό qubit, αλλά τα αποτελέσματα είναι πολλά υποσχόμενα. Επομένως, έως ότου δημοσιευτούν αποτελέσματα και η Azure αποκτήσει τους κβαντικούς συνεπεξεργαστές της, περιορίζεστε στον πειραματισμό με προσομοιωτές που φιλοξενούνται σε τοπικό και cloud. Επειδή περιορίζονται στη χρήση παραδοσιακών τεχνικών προγραμματισμού, δεν πρόκειται να χειριστούν το πλήρες φάσμα σύνθετων μαθηματικών λειτουργιών που υπόσχεται η κβαντική υπολογιστική. Αλλά δίνουν μια αίσθηση για το τι μπορεί να κάνει ένας μικρός αριθμός qubits.

Μεγάλο μέρος της δουλειάς που πρέπει να κάνετε στη δημιουργία ενός κβαντικού προγράμματος είναι η κατασκευή ενός κβαντικού υπολογιστή από μετασχηματισμούς qubit. Η γλώσσα Q # χειρίζεται τη διαδικασία για εσάς, επειδή περιλαμβάνει εκφράσεις για πολλές δομές κβαντικής πύλης, καθώς και κοινούς κβαντικούς αλγόριθμους. Η ίδια η γλώσσα θα είναι οικεία στους .Net προγραμματιστές, με μια δομή που βρίσκεται κάπου μεταξύ C # και F #.

Βασικά στοιχεία κβαντικού προγραμματισμού

Θα βρείτε τα περισσότερα προγράμματα Q # σχετικά απλά, επειδή αυτό που κάνετε είναι να ρυθμίσετε πίνακες qubits και να εφαρμόσετε μαθηματικούς μετασχηματισμούς σε αυτά. Παρόλο που το υποκείμενο πρόβλημα είναι περίπλοκο (ή τουλάχιστον πιθανό να χρειαστεί πολύ χρόνο υπολογισμού χρησιμοποιώντας παραδοσιακούς υπολογιστικούς πόρους), βασίζεστε στον κβαντικό υπολογιστή για να χειριστείτε την εργασία για εσάς και οι κβαντικοί αλγόριθμοί του σημαίνουν ότι μπορείτε να χρησιμοποιήσετε έναν μικρό αριθμό συνδεδεμένων qubit για να λύσετε το πρόβλημά σας.

Ένα σημαντικό πράγμα που πρέπει να σημειωθεί είναι ότι ορισμένες κβαντικές γλώσσες, όπως αυτή που χρησιμοποιεί η DWave στους κβαντικούς υπολογιστές της, έχουν σχεδιαστεί για να λειτουργούν με κβαντική ανόπτηση, όχι με το μοντέλο πύλης που χρησιμοποιείται στο κβαντικό υλικό της Microsoft.

Όπου η γλώσσα Q # διαφέρει από τη γνωστή, υποστηρίζει τους κβαντικούς αλγόριθμους. Αυτό ξεκινά με τύπους: Το Q # είναι μια έντονα πληκτρολογημένη γλώσσα, προσθέτοντας νέους τύπους που αντιπροσωπεύουν qubits και ομάδες qubits. Μια άλλη βασική διαφορά είναι μεταξύ λειτουργιών και λειτουργιών Q #. Οι λειτουργίες περιέχουν κβαντικές λειτουργίες, ενώ οι συναρτήσεις είναι αποκλειστικά για κλασικό κώδικα, αν και μπορούν να λειτουργήσουν με τα αποτελέσματα μιας κβαντικής λειτουργίας.

Κβαντικοί αλγόριθμοι και βιβλιοθήκες

Το Q # περιλαμβάνει επίσης συγκεκριμένους τύπους λειτουργίας που λειτουργούν με κβαντικούς αλγόριθμους, συμπεριλαμβανομένων εκείνων που υπολογίζουν τα συνοδευτικά αποτελέσματα μιας μήτρας qubits και άλλοι που βοηθούν στην κατασκευή κυκλωμάτων qubit, που ενεργοποιούνται μόνο εάν τα qubits ελέγχου έχουν ρυθμιστεί σωστά.

Είναι σημαντικό να θυμόμαστε ότι όπου το Q # χρησιμοποιεί μηδενικά και ένα στα αποτελέσματα ως μεταβλητές για να χειριστεί τα qubits, δεν είναι τα ίδια με τα δυαδικά 0 και 1. Αντίθετα είναι αναπαραστάσεις των ιδιοτιμών των διανυσμάτων που είναι αποθηκευμένα στα qubit.

Χρησιμοποιείτε τις τυπικές βιβλιοθήκες Q # για να δημιουργήσετε και να κατασκευάσετε τις κβαντικές σας εφαρμογές. Αυτά περιλαμβάνουν ένα σύνολο κβαντικών πρωτόγονων που καθορίζουν τις πύλες που δημιουργείτε από τα qubits σας, καθώς και την εφαρμογή κβαντικών τελεστών και τη μέτρηση των αποτελεσμάτων. Οι βιβλιοθήκες χωρίζονται σε δύο μέρη: το προοίμιο για τη ρύθμιση του κβαντικού υπολογιστή σας και τον κανόνα για τη λειτουργία του μηχανήματος. Είναι σημαντικό να κατανοήσετε τις διαφορές μεταξύ αυτών των δύο τμημάτων των βιβλιοθηκών, επειδή πρέπει να διατηρούνται ξεχωριστά στον κώδικά σας. Χρησιμοποιώντας τους χειριστές κανόνων εκτελείται η κβαντική μηχανή, με χειριστές που χειρίζονται συγκεκριμένους κβαντικούς αλγόριθμους. Για παράδειγμα, εφαρμόζοντας ένα Quantum Fourier Transform ή βρίσκοντας κοινούς διαχωριστές δύο αριθμών.

Το Q # δεν είναι μια γλώσσα για αρχάριους. Παρόλο που απλοποιεί ορισμένες κβαντικές λειτουργίες, εξαρτάται από την γνώση του τρόπου λειτουργίας ενός κβαντικού υπολογιστή, καθώς και από την κατανόηση των βασικών στοιχείων του κβαντικού υπολογισμού. Εάν έχετε εργαστεί με γραμμική άλγεβρα και πιθανότητες, θα έχετε μια πρώτη αρχή, αλλά αξίζει να ξοδέψετε χρόνο πρώτα με τα μαθήματα και τα δείγματα της Microsoft.

$config[zx-auto] not found$config[zx-overlay] not found