آشنایی با زبان برنامه نویسی Q#

ماکروسافت یک نسخه از پیش نمایش کیت توسعه کوآنتوم (Quantum Development Kit) که شامل زبان برنامه نویسی Q# می باشد را بصورت رایگان ارائه داده است.

این کیت شامل یک سیمیلاتور محاسبات کوآنتومی و دیگر منابع مربوطه  می باشد تا افرادی که می خواهند شروع به اقدام برنامه نویسی برای اپلیکیشن های کامپیوترهای کوآنتومی  نمایند ، بتوانند از آن منابع استفاده کنند.

زبان برنامه نویسی Q# بطور ویژه برای محاسبات کوآنتومی ساخته شده است.

کیت توسعه کوآنتوم (Quantum Development Kit)  برای توسعه دهندگانی طراحی شده است که علاقه مند به یادگیری برنامه های کاربردی در رایانه های کوآنتومی هستند.  شاید برخی از این علاقه مندان ، کارشناسان در زمینه فیزیک کوآنتوم باشند.

زبان برنامه نویسی Q#  ، عمیقاَ منطبق با  پلت فرم Visual Studio است. Visual Studio  شامل مجموعه ای از ابزارهای برنامه نویسی  برای توسعه دهندگان وب می باشد که توسط مایکروسافت ارائه شده است. بنابراین محیطی آشنا را برای کسانی که به زبانهای دیگربرنامه نویسی  مسلط هستند را فراهم آورده است .

زبان Q# طراحی شده است تا با یک سیمیلاتور کوآنتوم محلی کارکند . همچنین به عنوان بخشی از "کیت توسعه "Quantum ارائه می شود که این کیت قادر است با قدرت محاسباتی کوآنتوم  حدود qubits30 منطقی  را از طریق لپ تاپ های معمولی شبیه سازی کند. این امر به توسعه دهندگان اجازه می دهد تا بتوانند کدهای کوآنتومی را باگ گیری کنند. وهمچنین نمونه های کوچکی از برنامه های خود  بر روی رایانه هایشان تست کنند.

مایکروسافت برای چالش های کوآنتومی درمقیاس های بزرگتر ، می تواند یک شبیه ساز را ارائه دهد که مبتنی بر Azure    می باشد. و قادر است قدرت محاسباتی بیش از qubit40 منطقی را شبیه سازی کند.

مایکروسافت همچنین در کنار" کیت توسعه کوآنتوم "، مجموعه کاملی از اسناد ، کتابخانه ها و نمونه های در دسترس را ارائه داده است. این امر پیش زمینه ای برای افرادی که نیاز دارند تا جنبه های مختلف محاسباتی  که منحصر به سیستم های کوآنتومی هستند را مورد بررسی قرار دهند. این روش باعث می شود تا اطلاعات bit ها و  qubit های محاسبات کوآنتومی به صورت ایمن به اشتراک گذاشته شوند.

کیت توسعه کوآنتوم ، اجازه می دهد تا کارشناسان با استفاده از زبان Q# ، اپلیکیشن هایی را ایجاد کنند که فقط بر روی شبیه ساز کوآنتومی اجرا می شوند. که این اپلیکیشن ها همان برنامه هایی هستند که در نهایت بر روی کامپیوترهای کوآنتوم topological کار می کنند.

البته مایکروسافت همچنان در حال توسعه فرآیند های به منظور هدف کلی ، محاسبات کوآنتومی می باشد.

نکته جالب توجه این است که زمانیکه می خواهید کدها را درسخت افزار کوآنتوم قرار دهید ، نیازبه هیچ تغییری ندارند.

از هوش مصنوعی تا تغییرات آب و هوایی :

کارشناسان معتقدند که رایانه های کوآنتومی می توانند به دانشمندان این اجازه را بدهند تا به برخی از سخت ترین چالشهای جهان مانند گرسنگی جهانی یا اثرات خطرناک تغییرات آب و هوا توجه کنند. زیرا کامپیوترهای کوآنتومی قادرند تا محاسبات داده ها

را به ساعت یا حتی دقیقه پردازش کنند.

انتظار می رود که کامپیوترهای کوآنتومی به پیشرفت های عمده در زمینه هایی مختلف مانند هوش مصنوعی کمک کنند.

مثلاَ بیشتر پیشرفتهای امروزه در بحث هوش مصنوعی برا اساس بخش یادگیری ماشین می باشد. یعنی یک سیستم از طریق مجموعه ای از داده هایی را که دریافت کرده است یاد بگیرد چیزهایی مانند کلمات ، صدا یا اشیا را از یکدیگر تشخیص دهد.

دانشمندان درحوزه کامپیوتر ، با استفاده از شبیه ساز محاسبات کوآنتومی ، قادر به یافتن این مسئله می شوند که چگونه می توانند الگوریتم های کوآنتومی را به یک نمونه ی تحقیقات هوش مصنوعی ایجاد کنند. با انجام تست های اولیه در شبیه ساز، آنها در می یابند که چگونه با استفاده از  الگوریتم های کوآنتومی ، می توانند سریعتر الگوهای بیشتری را در داده ها پیدا کنند.

محاسبات کوآنتومی  topological

همانطور که قبلاَ نیز گفتیم ، کیت توسعه کوآنتوم (Quantum Development Kit) بخشی از برنامه ماکروسافت است که هدف از طراحی آن ، ساخت یک  "سیستم محاسباتی کوآنتومی " قوی و کامل می باشد. و این کیت شامل پکیج کاملی از سخت افزارو مجموعه نرم افزارهای مربوطه می باشد. در حال حاضرمحققان ماکروسافت بر روی پروژه هایی که متمرکز بر رمزنگاری و امنیت داده های محاسبات کوآنتوم ، کار می کنند.

یکی از بزرگترین اشکالاتی که در مورد محاسبات کوآنتومی وجود دارد این است که  qubitها بسیار حساس هستند . بعنوان مثال؛ آنها باید در دمای بسیار پائین ذخیره شوند . زیرا ممکن است در غیر اینصورت آسیب ببینند یا کاملاَ از بین بروند.

بدون شک فیزیک کوآنتومی مسئله بسیار پیچیده ای است و حتی برخی از باهوش تری افراد دنیا نیز اعتراف دارند که محاسبات کوآنتومی برای آنها بسیار دشوار است.

با توجه به این مسئله ، مسئولان مایکروسافت امیدوارند که " کیت توسعه کوآنتوم  " باعث شود تا روش قدرتمند محاسبات کوآنتومی برای آنها آسان تر شود. قدرت محاسبات این کیت ها بقدری بالا است که می تواند محاسبات داده های یک میلیارد سال کامپیوترهای کلاسیک را در عرض چند ساعت از طریق کامپیوترهای کوآنتومی پردازش کند.

 

شروع کار با زبان Q#:

 در این آموزش ساخت پروژه ی Q#ساده Hello world را خواهید آموخت فقط کافی است مراحل زیر را دنبال کنید.

گام اول visual stdio 2017 را نصب کنید

برای ساخت یک اپلیکیشن کوانتومی محاسباتی نیاز به آخرین نسخه ی visual stdio 2017 دارید (نسخه ی 15.6 به بعد)

ویژال استودیو 2017 را از https://www.visualstudio.com/downloads/ دانلود کنید.

گام دوم QDK را نصب کنید.

صفحه ی اصلی محاسبات کوانتومی را از آدرس زیر ببینید:

https://www.microsoft.com/en-us/quantum/development-kit

روی دکمه ی Download Now کلیک کنید

در صفحه ی بعد فرم را پر کنید و روی Download Now کلیک کنید.

این کار شما را به فروشگاه ویژوال استودیو می فرستد تا QDK را از صفحه ی زیر دانلود کنید:

https://marketplace.visualstudio.com/items?itemName=quantum.DevKit

QDK را دانلود و نصب کنید زمانی که عملیات نصب کامل شد پیام زیر را می بینید.

نصب QDK قالب پروژه ی Q# را به لیست قالب ها اضافه می کند.

گام سوم یک پروژه ی Q# بسازید.

حال می خواهیم اولین اپلیکیشن Q# را بسازیم

ویژوال استودیو 2017 را باز کنید و مسیر #File > New Project > Visual C اجرا کنید سپس سه گزینه ی

Q# project templates – Q# Application, Q# Library, and Q# Test Project مشاهده می شود گزینه ی Q# Application project template را انتخاب کنید و نام پروژه ی خود را بنویسید و روی OK کلیک کنید . شکل2 را مشاهده کنید.

صفحه ای که ایجاد می شود به صورت پیش فرض به صورت شکل 3 است.

هر اپلیکیشن Q# دو فایل پیش فرض C# driver (Driver.cs) و quantum code (Operation.qs) را دارد. C# driver که در فایل Driver.cs قرار دارد نقطه ی شروع اپلیکیشن است که این کد برای توسعه دهندگان C# آشناست.لیست 1 را مشاهده کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<span dir="rtl">
using Microsoft.Quantum.Simulation.Core; 
using Microsoft.Quantum.Simulation.Simulators; 
   
namespace Quantum.HelloQ 
   
  class Driver 
  
   
    static void Main(string[] args) 
    
    
  
}   </span>

quantum code در Operation.qs قرار دارد.لیست 2 را مشاهده کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<span dir="rtl"namespace Quantum.HelloQ   
{   
  open Microsoft.Quantum.Primitive;   
  open Microsoft.Quantum.Canon;   
 
  operation Operation () : ()   
  {   
    body   
    
   
    }   
  }   
</span>

گام چهارم نوشتن یک Q# Operation

اجازه دهید مقداری کد بنویسیم که کار خاصی انجام می دهد به عنوان یک مثال ساده در نظر بگیرید می خواهیم یک Operation بنویسیم که دو عدد صحیح می گیرید و حاصل جمع دو عدد را برمی گرداند.

Operation.qs را باز کنید و کد لیست 3 را در آن کپی کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<span dir="rtl">
namespace Quantum.HelloQ 
    // Import Quantum.Primitive 
    open Microsoft.Quantum.Primitive; 
       
    // Create an operation that adds two int and returns a total int 
    operation Add (a : Int, b : Int): (Int) 
    
        body 
        
            return (a + b); 
        }        
    
}  </span>

در لیست 3 اول از همه فضای نام Microsoft.Quantum.Primitive را ایجاد می کنیم.

open Microsoft.Quantum.Primitive;

بعد یک operation می نویسیم. واحد پایه ای اجرای کوانتوم operation است. Operation معادل توابع در Cو  C++ و یا متدهای استاتیک در C# و جاوا است.قطعه کد لیست 4 یک operation است.

1
2
3
4
5
6
7
8
9
10
<span dir="rtl">
// Create an operation that adds two int and returns a total int   
operation Add (a : Int, b : Int): (Int)   
{   
    body   
    {   
        return (a + b);   
    }          
}   
</span>

یک operation با کلمه ی کلیدی operationشروع می شود و می تواند آرگومان داشته باشد و یا نداشته باشد همچنین می تواند مقدار برگرداند ویا هیچ مقداری برنگرداند.  آرگومان ها یک فرم از tuple ها هستند اگر با tuple ها آشنا نیستید tuple ها در C# را مطالعه کنید.نوع یک آرگومان با استفاده از کولون تعریف می شود مقدار بازگشتی نیز با استفاده از کولون از آرگومان ها جدا میشود.

 

 

گام پنجم اجرای Q# Operation

متد Main از کلاس Driver دروازه ی برنامه است که کد های Q# را اجرا می کند از آنجایی که یک محاسبه گر کوانتوم واقعی روی لپ تاپ وجود ندارد یک راه برای اجرای یک برنامه ی Q# استفاده از شبیه ساز کوانتوم است که این شبیه ساز به عنوان بخشی از QDK نصب می شود.

کلاس QuantumSimulator در Microsoft.Quantum.Simulation.Simulators تعریف شده است

فضای نام نشان دهنده ی یک شبیه ساز است.قطعه کد زیر یک شبیه ساز کوانتوم می سازد.

using (var sim = new QuantumSimulator())

یک operation با فراخوانی  operation.Run(simulator, arguments) اجرا می شود قطعه کد زیر یک operation به نام add را اجرا می کند.

var res = Add.Run(sim, 20, 10).Result;

کد کامل کلاس Driver در لیست4  نوشته شده است.کد add operation را با شبیه ساز که دو آرگومان از جنس integer دارد و مقدار بازگشتی آن در var است فراخوانی می کند.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<span dir="rtl">
using System; 
   
using Microsoft.Quantum.Simulation.Core; 
using Microsoft.Quantum.Simulation.Simulators; 
   
namespace Quantum.HelloQ 
    class Driver 
    
        static void Main(string[] args) 
        
            using (var sim = new QuantumSimulator()) 
            
                var res = Add.Run(sim, 20, 10).Result; 
                Console.WriteLine(res); 
            
            Console.WriteLine("Press any key to continue..."); 
            Console.ReadKey(); 
        
    
}  </span>

گام ششم buid و Run

اگر الان پروژه را build کنید تعداد زیادی ارور دریافت خواهید کرد برای حل این مشکل باید یک framework و platform خاص را هدف قرار دهید.

روی نام پروژه در Solution Explorer راست کلیک کنید و روی Properties کلیک کنید در تنظیمات اپلیکیشن framework هدف را به 4.6.1  تغییر دهید و در تنظیمات build، platform هدف را از  Any CPU به x64 تغییر دهید.شکل 5 را مشاهده کنید.

حال اگر اپلیکیشن را build و Run کنید باید مقدار 30 را در کنسول مشاهده کنید.

خلاصه

Q# جدیدترین زبان برنامه نویسی است که توسط مایکروسافت برای نوشتن اپلیکیشن هایی که مبتنی بر محاسبات کوانتومی است معرفی شده است.در این مقاله یاد گرفتید که چگونه QDK را نصب کنید،تنظیمات ویژوال استودیو2017 برای پروژه ی Q# را انجام دهید و اولین کد Q# را نوشتید و آن را build و اجرا کردید.