Внедрение Q# в ваши любимые языки и платформы (Python, .NET, ASP.NET, Julia, Lua, PowerShell) |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-11-25 10:08 Не секрет, что Q# и Quantum Development Kit позволяют легко писать квантовые программы и запускать их на симуляторах и на оборудовании через службу Azure Quantum, с использованием Python, .NET или даже через Jupyter Notebook. Более того, инфраструктура, которая поддерживает все эти различные способы использования Q#, также позволяет создавать новые и захватывающие способы написания и выполнения квантовых программ. В этой статье мы немного рассмотрим эту инфраструктуру и то, как вы можете использовать эту инфраструктуру для подключения Q# к вашим любимым языкам и платформам. Python и Interactive Q# Для начала давайте посмотрим, как Q# подключается к таким платформам, как Python и Jupyter. Обе платформы в значительной степени ориентированы на интерактивное использование, при котором программы не обязательно предварительно компилируются, а создаются разработчиками по частям. Само по себе это сильно отличается от того, как можно использовать Q# из командной строки или при создании приложения .NET, использующего квантовые вычисления. Чтобы Q# работал в интерактивной среде, Quantum Development Kit также включает IQ#, сокращенно от Interactive Q# и следуя схеме именования, популяризированной IPython, IJulia и другими подобными инструментами. Ядро IQ# использует компилятор и среду выполнения Q# в качестве библиотеки, что позволяет ему на лету вызывать компилятор и среду выполнения Q#. Это тот же подход, который используется многими другими инструментами, включенными в Quantum Development Kit, такими как интерфейс командной строки компилятора Q# (qsc.exe) или языковой сервер, используемый расширениями Visual Studio Code и Visual Studio 2019. Когда ядро IQ# получает сообщения от клиентов Jupyter, оно передает исходный код Q# компилятору, возвращая программы, которые можно запускать на симуляторах или отправлять в службы Azure Quantum. Такой подход позволяет нам подключать интерактивные среды, такие как Jupyter, к остальной части Quantum Development Kit. С точки зрения платформы Jupyter ядро IQ# - это просто еще один исполняемый файл; То, что ядро IQ# написано с использованием .NET, на тот момент является деталью реализации. Тот же подход также позволяет использовать Python в качестве основного языка для ваших квантовых программ. В частности, пакет jupyter_client можно использовать для вызова из хост-программы Python в любое ядро, распознаваемое платформой Jupyter. Пакет qsharp для Python использует jupyter_client для загрузки IQ#, отправки команд ядру и получения обратно расширенных отображаемых данных. За кулисами ваша хост-программа Python действует как другой клиент Jupyter, обмениваясь сообщениями с ядром IQ#, чтобы вы могли создавать свою программу Q# из среды со сценариями. Вызов квантовых программ из Julia? Lua…? PowerShell…? Однако IQ# - это не просто исполняемая программа. Большая часть логики, которую IQ# использует для взаимодействия с компилятором Q# и средой выполнения, упакована в виде собственной библиотеки, доступной на NuGet.org в виде пакетов Microsoft.Quantum.IQSharp.Core и Microsoft.Quantum.IQSharp.Jupyter. Эти два пакета могут использоваться любыми другими приложениями .NET для реализации интеграции вашего собственного языка для Q#. Например, мы можем написать небольшое приложение C#, которое использует библиотеку IQ#, чтобы предоставить компилятору Q# и среде выполнения серию простых сообщений JSON, которые легко отправлять и получать с других языков. Используя JSON.jl, мы можем написать клиент для этого нового приложения в Julia и использовать его для интерактивного создания квантовых приложений из среды Julia. Этот подход не ограничивается только Julia, но может использоваться в большинстве мест, где вы можете вызывать приложения командной строки. То же самое приложение C#, которое мы использовали выше, также можно быстро адаптировать, чтобы мы могли вызывать Q# из других языков, таких как Lua или даже PowerShell. Изучите примеры кода Написание ботов с внедрением зависимостей Однако мы можем пойти еще дальше и использовать IQ# в качестве библиотеки для встраивания Q# в веб-приложения и чат-ботов. Различные компоненты, составляющие IQ#, представлены пакетами Microsoft.Quantum.IQSharp.Core и Microsoft.Quantum.IQSharp.Jupyter как службы, которые можно добавлять в ваши собственные приложения с помощью внедрения зависимостей ASP.NET Core. Изучим, что нужно сделать, чтобы добавить IQ# к боту в Discord: Здесь AddIQSharp - это метод расширения, предоставляемый библиотекой IQ#, который добавляет службы IQ# в существующую коллекцию служб. Поскольку Discord.NET написан с использованием той же инфраструктуры внедрения зависимостей, вызов AddIQSharp позволяет нам немедленно запрашивать службы IQ# так же, как мы бы предоставляли сервисы Discord.NET: Здесь команда нашего бота %simulate использует свой конструктор для запроса служб IQ#, таких как его фрагменты кода и менеджеры рабочей области, а также средство ведения журнала ASP.NET Core, используемое для предоставления отладочной информации. Тот же подход можно использовать даже для предоставления REST API для компилятора Q# и среды выполнения! Например, веб-проект в репозитории microsoft/iqsharp использует IQ# вместе с ASP.NET Core, чтобы разрешить использование Q# через HTTP. Итого Какие бы инструменты и платформы вы ни любили, Q# и Quantum Development Kit помогут вам максимально эффективно использовать квантовые вычисления. Используя такие инструменты, как библиотека и ядро IQ#, вы можете легко расширить Q# для работы с широким спектром языков, платформ и экосистем. Источник: habr.com Комментарии: |
|