Jakie języki programowania są dostępne dla komputerów kwantowych?

53

Z tego pytania wynika, że ​​głównymi językami programowania obliczeń kwantowych są Q # i QISKit .

Jakie inne języki programowania są dostępne do programowania komputerów kwantowych? Czy są pewne korzyści z wyboru konkretnych?

EDYCJA: Szukam języków programowania, a nie emulatorów. Emulatory symulują różne rzeczy. Języki programowania to metoda pisania instrukcji (zarówno dla rzeczywistych obiektów, jak i emulatorów). Może istnieć jeden język, który działa dla wielu emulatorów i odwrotnie.

Pro Q
źródło
Chciałbym zauważyć, że zasadniczo żaden z języków wymienionych w zaakceptowanej tutaj odpowiedzi nie może działać z istniejącym komputerem kwantowym. Bardziej sensowne może być albo 1) edytowanie pytania, aby wyjaśnić, że pytasz o języki, których nie można skompilować do działania na istniejącym sprzęcie, lub 2) zaakceptować inną odpowiedź.
DanielSank
1
@DanielSank Zaakceptowałem jedną z list Wikipedii, ponieważ założyłem, że ta lista zostanie zaktualizowana, aby uwzględnić języki, które faktycznie działają na sprzęcie; będzie najlepszą odpowiedzią, zakładając, że Wikipedia nadal ma tę stronę.
Pro Q
1
@ProQ - Istnieje niewielka aktualizacja mojej odpowiedzi. Ponadto oświadczyłem, że moja odpowiedź nie jest wycinana / wklejana, ale zweryfikowała linki. Naprawiłem uszkodzony link. Dodałem witrynę ważnego autora. - Wrócę od czasu do czasu, aby upewnić się, że ta odpowiedź jest „w przybliżeniu świetna”. Szczegółowe informacje dotyczące odbierania i utrzymywania zostały rozwiązane. Niektóre języki w mojej odpowiedzi działają na sprzęcie dostępnym do zakupu i są regularnie używane. Dzięki za wiarę ProQ.
Rob
Istnieje również Yao (Extensible, Efficient Quantum Al Algorytm Design for Humans), napisane w Julii, github.com/QuantumBFS/Yao.jl . I tu i tutaj znajdziesz porównanie.
skan

Odpowiedzi:

35

Lista Wikipedii języków programowania komputerów kwantowych

(Ta odpowiedź nie jest kopią tej strony, jest bardziej zaktualizowana i zawiera zweryfikowane linki. W niektórych przypadkach dodaje się link autora lub link do strony internetowej).

Witryna Quantum Computing Report zawiera stronę z narzędziami zawierającą kilkanaście linków, niektóre nowe i niektóre powtarzające powyższą listę.

Zobacz także stronę QuanTiki: „ Lista symulatorów QC ”, gdzie znajduje się ogromna lista symulatorów i języków programowania opartych na: C / C ++, CaML, OCaml, F #, wraz z GUI, Java, JavaScript, Julia, Maple, Mathematica, Maxima , Matlab / Octave, .NET, Perl / PHP, Python, Scheme / Haskell / LISP / ML i inne usługi online zapewniające kalkulatory, kompilatory, symulatory i zestawy narzędzi itp.

Czy są pewne korzyści z wyboru konkretnych?

Jeśli planujesz używać określonego komputera kwantowego, można mieć nadzieję, że język programowania opracowany przez producenta jest zarówno odpowiedni dla tej konkretnej maszyny, jak i dobrze obsługiwany.

Wybór języka z większą liczbą oznacza, że ​​dostępnych jest więcej forów i mam nadzieję, że więcej poprawek i wsparcia.

Niestety pozostawia to kilka świetnych produktów niszowych, które mają trudności z zdobyciem bazy użytkowników. Próba znalezienia jednego języka, który jest zarówno mocny / wyrazisty, jak i obsługiwany na różnych platformach, jest sztuczką, odpowiedzią jest opinia bankomatu.

Ryan LaRose oferuje ocenę czterech platform oprogramowania: Forest (pyQuil), QISKit, ProjectQ oraz Quantum Developer Kit w „ Omówieniu i porównaniu kwantowych platform oprogramowania ” (6 lipca 2018 r.).


Aktualizacje:

Google Cirq i OpenFermion-Cirq: „ Blog AI AI - Ogłoszenie Cirq: Open Source Framework dla algorytmów NISQ ”.

D-Wave za Leap i Ocean SDK umożliwia dostęp do systemu D-Wave 2000Q ™ w środowisku cloud z dostępem do 2000+ qubit maszyny kwantowe wyżarzanie w celu przetestowania i uruchomienia obciążenia za darmo, zakładając algorytmów podstawowych wykorzystywanych iść do basenu open source . Złóż wniosek, aby zalogować się na stronie Le-In D-Wave .

Usługa chmury kwantowej (QCS) firmy Rigetti Computing oferuje Quantum Machine Image, zwirtualizowane środowisko programistyczne i wykonawcze, które jest wstępnie skonfigurowane w Forest 2.0, aby uzyskać dostęp do 16 kubitów komputera na 128 kubitów.

Sprawdzaj na bieżąco informacje na temat Digital Annealer firmy Fujitsu , architektury zdolnej do wykonywania obliczeń około 10 000 razy szybciej niż konwencjonalny komputer. Jeśli w końcu zapewnią środowisko programistyczne, które jest kompatybilne krzyżowo z prawdziwymi komputerami kwantowymi, te dwa akapity pozostaną w tej odpowiedzi, w przeciwnym razie usunę je.

Chociaż ich chip krzemowy nie ma charakteru kwantowego, Fujitsu współpracuje z 1Qbit, aby opracować coś, co określa się mianem „ usługi chmurowej AI zainspirowanej kwantowo ”, niezależnie od tego, czy ich Digital Annealer kwacze jak kaczka (wygrzewa się jak D-Wave i używa zgodnego kodu) pozostaje do zobaczenia. Odwiedź tutaj, aby uzyskać dostęp do usługi technicznej Fujitsu Digital Annealer .

QWIRE ( chór ) University of Pennsylvania jest językiem obwodu kwantowego i narzędziem weryfikacji formalnej, ma stronę internetową GitHub .

Przegląd: Cirq, Cliffords.jl, dimod, dwave-system, FermiLib, Forest (pyQuil & Grove), OpenFermion, ProjectQ, PyZX, QGL.jl, Qbsolv, Qiskit Terra i Aqua, Qiskit Tutorials oraz Qiskit.js, Qrack, Quantum Fog, Quantum ++, Qubiter, Quirk, reference-qvm, ScaffCC, Strawberry Fields, XACC, a wreszcie XACC VQE jest oferowany w artykule: „ Oprogramowanie open source w obliczeniach kwantowych ” (21 grudnia 2018 r.), Mark Fingerhuth, Tomáš Babej i Peter Wittek.

Od czasu do czasu wrócę do tej odpowiedzi, aby dokonywać aktualizacji bez nadmiernego obciążania .

Obrabować
źródło
Posortowane wiadomości związane z „programowaniem”: IBM ogłasza, że 53 komputer Qubit będzie dostępny w przyszłym miesiącu do użytku publicznego.
Rob
28

Dostawcy sprzętu modelu bramy opracowali własne języki niskiego poziomu:

Mają one dostęp do wyższego poziomu sdk Pythona:

Rigetti pakuje również swój język w bibliotekę wyższego poziomu do wywoływania gotowych aplikacji o nazwie Grove .

Microsoft opracował Q # do działania z istniejącym symulatorem i ostatecznie ze sprzętem fizycznym.

Ponieważ powyższe języki są specyficzne dla dostawców, główną zaletą jest to, że możesz uruchamiać programy kwantowe na ich komputerach.

Poza konkretnymi językami dostawcy jest Scaffold, który jest rozwijany przez badaczy z Princeton. Ten język jest interesujący, ponieważ zawiera zestaw narzędzi do analizy programów w celu określenia kosztów, potencjału wydajności i potencjału skalowalności.

Edycja: Projekt Q to kolejna platforma umożliwiająca tworzenie programów wykorzystujących Python, które można uruchomić na dołączonym symulatorze.

Oak Ridge National Labs rozpoczął prace nad projektem o nazwie XACC, który ma na celu wyodrębnienie kodu specyficznego dla dostawcy, aby umożliwić użytkownikom dostęp do różnych platform sprzętowych bez powielania kodu w każdym języku danego dostawcy.

j4ustin
źródło
3
projectq.ch również zasługuje na wzmiankę.
James Wootton
1
Podoba mi się ta odpowiedź, ponieważ wyjaśnia, jakie języki mogą faktycznie działać na istniejącym sprzęcie .
DanielSank,
3

Chciałbym dołączyć IBM Composer. Programowanie nie przypomina programowania, ponieważ nie otrzymujesz wszystkich błędów, błędów i funkcjonalności, ale wyraźnie konwertuje instrukcje dotyczące bramek do QASM i uruchamia je na prawdziwym symulatorze IBM lub prawdziwym komputerze kwantowym IBM (wybór to użytkownik).

Avery Leider
źródło
1

Niestety lista na Quantiki jest dość stara i nie jest dobrze utrzymana. Nawet wymienienie wszystkich języków programowania kwantowego w jednej odpowiedzi na to pytanie nie jest zrównoważone, ponieważ krajobraz kwantowy stale się rozwija. Na przykład Google właśnie wypuścił Cirq , nową platformę programowania kwantowego dla komputerów Noisy Intermediate Scale Quantum (NISQ), która nie jest wymieniona w żadnej z powyższych odpowiedzi, ponieważ została ogłoszona zaledwie kilka dni temu.

Aby rozwiązać ten problem i jako odpowiedź na inne pytanie dotyczące QC StackExchange, zacząłem przygotowywać listę projektów oprogramowania open source na GitHub, która zawiera także kompleksowy przegląd aktywnie rozwijanych języków programowania ramowego i struktur. Lista jest aktywnie utrzymywana przez społeczność i stale dodajemy nowe projekty.

Mark Fingerhuth
źródło
2
To wygląda jak cudowny zasób. Dziękuję Ci! Zastanawiam się, czy istnieje inna podobna lista projektów, które nie są tylko open source.
Pro Q
1
@ProQ, szczerze mówiąc, uważam, że lista oprogramowania open source obejmuje> 95% kwantowej przestrzeni oprogramowania. Prawie nie ma żadnych pakietów o zamkniętym źródle z publicznym dostępem i nie przejmowałbyś się oprogramowaniem kwantowym, które jest używane wewnętrznie w jakiejś firmie bez publicznego dostępu.
Mark Fingerhuth