ما الفرق بين لغة الآلة ولغة التجميع؟

أصبحت لغة البرمجة الوحدة الأساسية لعالم التكنولوجيا اليوم وهي عبارة عن مجموعة الأوامر والتعليمات التي نقدمها للآلات لأداء مهمة معينة فعلى سبيل المثال، إذا أعطيت مجموعة من التعليمات لجمع رقمين، فسيقوم الجهاز بذلك نيابة عنك ويخبرك بالإجابة الصحيحة وفقًا لذلك. [١] في عالم الكمبيوتر، لدينا أكثر من 500 لغة برمجة لها تركيبها وميزاتها الخاصة. حيث تحتوي كل لغة برمجة على مجموعة فريدة من الكلمات الأساسية التي تُستخدم لإنشاء مجموعة من التعليمات. وقد تم تطوير آلاف من لغات البرمجة حتى الآن، ولكن لكل لغة غرضها المحدد. وتختلف هذه اللغات في مستوى قربها من لغة الإنسان وبعدها عن لغة الحاسوب. بناءً على هذا الاختلاف يمكن تصنيفها إلى فئتين:

لغات برمجة منخفضة المستوى

هي لغات البرمجة الأقرب للغة الحاسوب من لغة الإنسان، ويتم تمثيلها في أشكال 0 أو 1. اللغات التي تندرج تحت هذه الفئة هي لغة مستوى الآلة ولغة التجميع.

لغات برمجة عالية المستوى

هي لغات البرمجة التي تسمح للمبرمج بكتابة البرامج المستقلة وتعتبر عالية المستوى لأنها أقرب إلى اللغات البشرية وتشمل تقريباً جميع لغات البرمجة المتبقية. [٢]

لغة الآلة (machine language)

لغة الآلة هي اللغة الرقمية الأساسية التي يمكن للحاسوب فهمها وتنفيذ التعليمات من خلالها علاوةً على أن لغة الآلة هي اللغة الوحيدة التي يمكن لجهاز الحاسوب أن يقوم بتشغيلها مباشرة دون إجراء أي تحويلات أو تعديلات عليها. تتم قراءتها بواسطة وحدة المعالجة المركزية (CPU)، وتتكون من سلسلة أرقام ثنائية التشفير مؤلفة من أصفار وآحاد (0،1). وتُعتبر لغة الآلة لغة منخفضة المستوى ( Low-level Language ) فهي أولى لغات البرمجة وأصعبها. لكن دونها لا يمكن ترجمة اللغات عالية المستوى، فمثلاً يجب ترجمة لغة ++C إلى لغة الآلة قبل تشغيل الكود على الحاسوب. بينما لا تحتاج لغة الآلة لمترجم، ويفهمها الحاسوب بشكل مباشر. [٣]

مثال عن كود بلغة الآلة:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

نظام التشفير الثنائي (Binary system)

النظام الثنائي هو عبارة عن مجموعة من التعليمات تستعمل لتتحكم بالحاسب، نتعامل في هذا النظام فقط مع رمزين فقط هما 0 و 1. والتي يفهمها الحاسب بشكل فيزيائي بعملية on/off للإشارات، حيث أن الرقم 1 يمثل الوضع الفعال أو الوضع on والرقم 0 يمثل الوضع غير الفعال أو الوضع off. وعند قراءة أي رقم في نظام العدِّ الثنائي فإنَّنا نقوم بقراءة كل رمز منفرداً. فعلى سبيل المثال الرقم 2 = (100) يقرأ واحد صفر صفر أو يقرأ من اليمين صفر صفر واحد، ولا يقرأ مئة. [٤] لتحويل أي عدد صحيح موجب من النظام العشري إلى الثنائي نستعمل طريقة الباقي Remainder Method الموضحة كالآتي:

  • قسم العدد العشري على الأساس 2.
  • أحسب باقي القسمة الذي يكون أما 1 أو 0.
  • استمر في عملية القسمة وتحديد الباقي حتى يصبح خارج القسمة الصحيح صفراً.
  • يتكون العدد الثنائي المطلوب من أرقام الباقي مقروءة من الباقي الأخير إلى الأول .
الباقي الناتجالعدد
022÷4
012÷2
111
بالتالي العدد 4 في التشفير الثنائي هو 100

وللتحويل من نظام ثنائي لنظام عشري نضرب بالأساس 2:

02^(0)×0
02^(1)×0
42^(2)×1
4=4+0+0 1×2^(2)+0×2^(1)+0×2^(0) 100
تحويل الرقم أربعة من ثنائي لعشري

لغة التجميع (Assembly)

هي أكثر من لغة منخفضة المستوى وأقل من اللغة عالية المستوى لذلك فهي لغة وسيطة حيث أنها تشبه لغة الآلة لكن أكثر تطوراً. تستخدم لغة التجميع الأرقام والرموز والاختصارات في بعض المواضع بدلاً من 0 و1. على سبيل المثال: للجمع والطرح والضرب تستخدم رموز مثل Add وsub وMul. [٥]
مثال عن كود بلغة التجميع:

bdos    equ    0005H    ; BDOS entry pointstart:  mvi    c,9      ; BDOS function: output string        lxi    d,msg$   ; address of msg        call   bdos        ret             ; return to CCPmsg$:   db    'Hello, world!$'end     start

الفارق بين لغة الآلة ولغة التجميع

  • لا يتم فهم لغة الآلة إلا بواسطة أجهزة الكومبيوتر أما لغة التجميع يفهمها البشر وليس الآلات.
  • يتم تمثيل بيانات لغة الآلة بالترميز الثنائي أو السداسي عشري أو الثماني أما في لغة التجميع يتم الاستعانة برموز سهلة الحفظ. لغة التجميع أسهل على البشر من لغة الآلة.
  • لا يمكن إجراء تعديلات أو إصلاح الأخطاء في لغة الآلة بينما يمكن التعديل في لغة التجميع بسهولة.
  • التنفيذ سريع في لغة الآلة لأن جميع البيانات موجودة بالفعل في تنسيق ثنائي أما في لغة التجميع فالتنفيذ بطيء مقارنةً بلغة الآلة. [٥]

المصادر:

  1. Geeksforgeek.org
  2. Javatpoint.com
  3. Sciencedirect.com
  4. Electronics-tutorials.ws
  5. Geeksforgeek.org

ما هي لغات البرمجة الكمية؟

ما هي لغات البرمجة الكمية؟

تحدثنا عزيزي القارئ عن الصراع الكمي في مقالات سابقة ووضحنا شراسته. فتحدي IBM للحوسبة الكمية في 2021 خير مثال، الذي شارك فيه 3100 مشارك من 94 دولة عن تطبيقات الحواسيب الكمية باستخدام Qiskit. إذ لم يقتصر التحدي على الحوسبة الكمية وكيفية استخدام Qiskit. بل في أي شيء متعلق بالحوسبة الكمية في الصناعة وذلك بتطبيق تكنولوجيا الكم في المجالات العلمية مثل الكيمياء والتعلم الآلي وغيرها وساهم أكثر من 1293 مشارك في تقديم مشاركة واحدة على الأقل لها أثرها وشاركت دول عدة جديدة في المنافسة وكانت السعودية هي الدولة الوحيدة في الشرق الأوسط. إذ حاز الدكتور إبراهيم المسلم على المركز الثاني عالميًا ونال المركز الأول «نافان بنشاشتابوسه-Naphan Bencgasattabuse» من كوريا الجنوبية. [1]

وكما للحوسبة التقليدية لغات برمجة تتعامل بها، أيضًا للحواسيب الكمية لغات. وهنا سيدور حديثنا حول ما هي لغات البرمجة الكمية؟ وكيف يمكنك ممارسة الحوسبة الكمية والتلاعب بالـ Quibts وبالتأكيد تبادر إلى ذهنك سؤال، ما الـ Qiskit؟ كل ذلك وأكثر سنجيب عنه في هذا المقال، فهيا بنا…

ما هو Qiskit؟

يمنح عملاقة التكنولوجيا مثل Google وIBM المستخدمون الذين لديهم شغف تعلم الحوسبة الكمية فرصة لمعرفة كيفية برمجة ومعالجة الدوائر الكمية. باستخدام لغات البرمجة الكمية ولتعلم فحص مفاهيم الحوسبة الكمية مثل التراكب والتشابك والتلاعب بالـ Qubits وإدارة الأجهزة الكمية والتحقق من الخوارزميات

فـ Qiskit هو SDK -مجموعة أدوات تطوير البرامج في حزمة واحدة قابلة للتثبيت- مفتوح المصدر للعمل على الحواسيب الكمية من IBM. إذ يُترجم لغات البرمجة الشائعة مثل Python للآلة الكمية وأي شخص خارج مختبرات IBM يمكنه استخدامه. إذ تعد أداة تعليمية ممتازة لتطوير فهمك عمليًا حول المفاهيم الكمية، يوجد كذلك Cirq وهو من شركة Google ومشابه لـ Qiskit.

لكن وجب التنبيه أنه على الأقل وجب أن تكون لديك خلفية جيدة حتى تستطع البدء فهو مناسب لفئات مثل الخبراء في مجالات الكيمياء والذكاء الاصطناعي والمطوريين الذين لديهم معرفة بالدوائر الكمية ويودون في اختبار مزايا الكم وخبراء ميكانيكا الكم. [4,3]

علاقات لغات البرمجة الكلاسيكية باللغات الكمية؟

كما نحن البشر نتحدث بلغات مختلفة فالحواسيب لها لغاتها. تتيح لغات البرمجة في الحواسيب التقليدية إعطاء تعليمات للحاسوب بلغة يفهمها. فلغة البرمجة الكمية هي تلك التي يمكن استخدامها لكتابة برامج الحاسوب الكمي. فنظرًا لأن التحكم في أي آلة يكون بواسطة جهاز كلاسيكي. فإن لغات البرمجة الكمية الحالية تتضمن هياكل تحكم كلاسيكية أيضًا وتسمح بعملها على البيانات الكلاسيكية والكمية فسنجد لغة Python من اللغات المستخدمة والأساسية وكذلك C وJavascript وغيرهم. [2]

ما هي البيئات التي تتيح لك ممارسة الحوسبة الكمية؟

كما ذكرنا فور معرفتك بالأساسيات البرمجية وتعلم اللغات الكلاسيكية؛ يمكنك البدء مباشرةً في بيئات ستوفر لك التعامل مثل Qiskit وCirq. وإليك في السطور الآتية بعض لغات البرمجة الكمية المهمة في تنمية تدريبك على الحوسبة الكمية بجانب اللغات الكلاسيكية.

أشهر لغات البرمجة في الحوسبة الكمية

هنالك نوعان من لغات البرمجة الكمية، الأول لغات البرمجة الأساسية وتتكون من تعليمات تُنفذ خطوة بخطوة وتشمل اللغات الأساسية في الحواسيب الكلاسيكية مثل Python وC وJavascript وPascal، وإليك ثلاثة من أشهر اللغات [5]:

لغة QCL

هي واحدة من أولى لغات البرمجة الكمية وتشبه لغة C وPascal من حيث بناء الجملة Syntax وأنواع البيانات. فهي لغة تحكم عالية المستوى ومستقلة عن بنية الحواسيب الكمية ويمكن للمبرمجين الجمع بين كود C كلاسيكي وكود كمي… [8]

لغة QMASM

نشأت QMASM كلغة لتعريف الدائرة الكمية ومع تطور الحساب الكمي، اعتُمدت اللغة كطريقة لتحديد الدوائر الكمية كمدخلات في الحاسوب الكمي. لوصف العمليات على الـ Qubits وهي منخفضة المستوى، فتستخدم لوصف الدوائر البسيطة نسبيًا وهنالك لغات أخرى عالية المستوى مثل لغات سنذكرهم في السطور القادمة. [6] التي بإمكانها التعامل مع مليارات من Qubits.

لغة Silq

نشرت في عام 2020 وهي لغة عالية المستوى من ETH Zurich في سويسرا وتُحدث باستمرار. نبع الاحتياج لتلك اللغة لملاحظة الباحثين أن كل لغات البرمجة السابقة منخفضة المستوى خاصة في التعامل مع الـ Quibts. ففي كل مرة وجب عليك التفكير في جميع القيم الناشئة من العملية التي تقوم بها وذلك يستغرق وقتًا وينتج عن ذلك بالتأكيد أخطاء. [7]

النوع الثاني هو لغات البرمجة الوظيفية وهي لا تعتمد على تنفيذ التعليمات خطوة بخطوة بل على الدوال الرياضية. أي يتم تحويل المخرجات باستخدام تحويلات رياضية وتعد أقل شيوعًا من اللغات الأساسية وإليك أشهر اللغات:

لغة QML

هي لغة تعريفية مصممة لوصف واجهة مستخدم البرنامج ونُشرت في عام 2007 وتشبه Haskell وتُستخدم لغة Javascript كلغة برمجة نصية في QML وقبل التعمق فيها وجب أن تكون كما ذكرنا مرارنا لديك خلفية برمجية [9] وفهم للغات الويب الأخرى مثل HTML وCSS…

لغتا QPL وQFC

هما لغتان من لغات البرمجة الكمية حددهما «بيتر سيلينجر-Peter Selinger» وتعمل كل منهم على البيانات الكمية والكلاسيكية. [10]

لغة Quipper

هي لغة شهيرة ذات مستوى عال، وتستخدم لوصف الدوائر عالية المستوى ومعالجتها وتحوي مكتبات واسعة من الدوال الكمية بما في ذلك مكتبات الأعداد الصحيحة الكمية وتحويل فورييه الكمي ومكتبات لتحليل دقيق للدوائر والعديد من المزايا. [11]

فيما تتميز لغة Twist؟

هناك عزيزي القارئ العديد من اللغات لكن تحدثنا عن الأحدث والأشهر ولنختم جزء اللغات بلغة Twist التي أثارت ضجة في عامنا هذا 2022، فما هي تلك اللغة وما المميز فيها؟

سعى علماء من علوم الحاسوب والذكاء الاصطناعي CSAIL التابع لمعهد ماساتشوستس للتكنولوجيا إلى إنشاء لغة خاصة بهم للحوسبة الكمية وتسمى (Twist). وتستطيع تلك اللغة أن تصف أجزاء البيانات المتشابكة في برامج الكم والتحقق منها. ويمكن للمبرمج الكلاسيكي فهمها وتستخدم اللغة مفهوم يسمى Purity أو النقاء ويفرض ذلك المفهوم عدم وجود التشابك وينتج عنه برامج أكثر سهولة والأخطاء أقل بكثير. فالمميز هنا أنه لطالما تطلبت برمجة الحواسيب الكمية فهم للتشابك ولكن تأتي Twist لتسهل الأمر على المبرمجين بفرضها عدم وجوده بمفهوم Purity. إضافة إلى أن اللغات البرمجية الكمية لا تزل تربط عمليات منخفضة المستوى معًا مستبعدة أحيانًا معايير مهمة مثل أنواع البيانات… لكن التحدي الذي تتخذه Twist حاليًا هو تسهيل البرمجة الكمية. نهاية فقد دعمت الجهود عليها جزئيًا من قبل MIT-IBM Waston AI lab والمؤسسة الوطنية للعلوم ومكتب البحوث البحرية. [12]

المصادر

  1. IBM
  2. quantiki
  3. .ibm
  4. quantumai
  5. aimultiple
  6. github
  7. sliq
  8. github
  9. qml
  10. liquisearch
  11. qcf
  12. researchgate
  13. mit
Exit mobile version