Microsoft opracował język programowania dla komputerów kwantowych

Fot. Pixabay
Microsoft to nie tylko Windows, Office 365, Azure, Dynamics 365 czy funkcje kognitywne w aplikacjach i możliwość skorzystania z mechanizmów sztucznej inteligencji w chmurze. Na konferencji Microsoft Ignite 2017 odbywającej się w Orlando na Florydzie, firma pokazała olbrzymi krok naprzód. I żeby było jasne - wcale nie nad przepaścią.

Zorganizowana przez Microsoft konferencja Ignite 2017 to wydarzenie przeznaczone głównie dla klientów biznesowych. 25 tysiącom uczestników Microsoft prezentował w jaki sposób jego usługi, takie jak chmura obliczeniowa, sztuczna inteligencja czy rzeczywistość mieszana mogą pomóc w tworzeniu biznesu przyszłości. Jednak to co przykuło naszą uwagę dotyczyło zupełnej nowości: języka programowania opracowanego specjalnie na potrzeby tworzenia kodu dla komputerów kwantowych.

Ogłoszenie zupełnie nowego języka programowania przez Microsoft, to zwieńczenie 12 lat badań i inwestycji w budowę skalowalnego komputera wykorzystującego założenia fizyki kwantowej. Nowy język programowania ma zapewnić optymalną obsługę i eksploatację skalowalnych maszyn kwantowych, został również zintegrowany z pakietem narzędzi programistycznych Visual Studio. Nowe rozwiązanie ma zapewnić programistom możliwość debugowania oraz wsparcia najnowocześniejszych symulatorów, działających zarówno w trybie lokalnym, jak i w chmurowej platformie Microsoft Azure. Microsoft zapewnia, że jeszcze w tym roku udostępni programistom bezpłatnie narzędzia umożliwiające programowanie maszyn kwantowych.

Dlaczego w ogóle musimy używać odmiennych języków programowania, by móc dokonywać obliczeń za pomocą maszyn kwantowych? Odpowiedź jest bardzo prosta – komputer kwantowy liczy zupełnie inaczej niż dobrze nam znane maszyny oparte na klasycznej teorii informacji i jej podstawowym składniku: bicie.

W przypadku komputerów kwantowych do obliczeń wykorzystuje się zjawiska kwantowe takie jak superpozycję czy splątanie kwantowe, a zamiast binarnej, zerojedynkowej reprezentacji znanej z klasycznych komputerów mamy qubity, z których każdy może reprezentować wiele wartości dając tym samym kwantowym komputerom wykładniczo rosnącą moc obliczeniową w stosunku do tradycyjnych „bitowych” komputerów.

kod programu kwantowej teleportacji
Kod teleportacji kwantowej (fot. ArsTechnica).

Nowe możliwości obliczeniowe komputerów kwantowych wymagają nowych funkcji i procedur dostępnych w językach programowania przeznaczonych dla tego typu maszyn. Powyższy fragment kodu zawiera przykładowe funkcje (EPR, Teleport, TeleportTest), które mają sens wyłącznie w przypadku, gdy są one uruchomione na maszynie kwantowej. Funkcja EPR na przykład tworzy parę splątanych qubitów, wykorzystując tzw. bramkę Hadamarda (H), generującą qubity charakteryzujące się prawdpodobieństwem bycia jedynką lub zerem. Z kolei funkcja Teleport splątuje kwantowo dwa qubity a następnie dokonuje pomiaru (M) wartości jednego z nich. Sam fakt pomiaru wymusza zajęcie przez qubity konkretnego stanu, zamiast superpozycji ich obu.

Integracja nowego języka z Visual Studio oznacza, że programiści kodujący maszynę kwantową mają do dyspozycji dobrze znane im narzędzia takie jak oznaczanie kodu kolorem, czy debugger. Tym samym debugowanie oznacza również możliwość uruchomienia kodu dla komputera kwantowego. Oczywiście dostępność kwantowych komputerów jest dziś wciąż jeszcze mocno ograniczona, dlatego Microsoft planuje udostępnić nowe narzędzia wraz ze specjalnym kwantowym symulatorem, którego jedna wersja może być uruchamiana lokalnie, a druga w chmurze Azure. Symulowanie 32 qubitów – tyle przewidziano dla lokalnej wersji symulatora – będzie miało duże wymagania względem pamięci. Komputer na którym będzie działać taki symulator musi alokować na jego potrzeby aż 32 GB pamięci RAM. Wersja Azure umożliwi działanie na 40 qubitach. | CHIP

0
Źródło: Ars Technica
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.