تورينج كاملة
يشير مصطلح Turing Complete إلى آلة يمكنها حل أي مشكلة حسابية ، بغض النظر عن مدى تعقيدها ، إذا ما تم منحها وقتًا وذاكرة كافية مع الإرشادات اللازمة. يستخدم المصطلح عادةً لوصف لغات البرمجة الحديثة حيث أن معظمها Turing Complete (C ++ ، Python ، JavaScript ، إلخ).
ما هي آلة تورينج؟
قبل أجهزة الكمبيوتر الحديثة ، افترض آلان تورينج أنه سيكون هناك يومًا ما آلة يمكنها حل أي مشكلة. أصبحت هذه الآلة معروفة باسم آلة تورينج.
تخيل آلان ماكينته كقطعة طويلة من الشريط مع معلومات مكتوبة عليها في شكل رمز ثنائي (1s و 0s). سيكون للجهاز أيضًا رأس قراءة / كتابة يتحرك على طول الشريط الذي يقرأ كل مربع ، واحدًا تلو الآخر. سيطلب الرمز من الجهاز مشكلة حسابية ، وسيكون الشريط طالما كان مطلوبًا لتحقيق حل.
بينما يتحرك الرأس على طول الشريط ، تتبع الماكينة تعليمات بسيطة تحكم كيفية تفاعلها. يقرأ الشريط ويتبع التعليمات ويقوم بإجراء معين لكتابة رمز جديد أثناء تحركه. هذا النمط الجديد من الكود هو الحل للمشكلة. يمكن لآلة تورينج الافتراضية أن تجيب على أي مشكلة حسابية يمكن التعبير عنها في الكود (والتي كان لها إجابة قابلة للحساب).
يعتبر الجهاز أو لغة البرمجة Turing Complete عندما يمكنه نسخ آلة Turing عن طريق تشغيل أي برنامج أو حل أي مشكلة يمكن أن تقوم آلة Turing بتشغيلها أو حلها. من ناحية أخرى ، إذا كان الجهاز أو لغة البرمجة غير قادرة على القيام بذلك ، فيُقال إنها تورينج غير كاملة.
الآلة الحاسبة البسيطة هي مثال على نظام غير مكتمل Turing نظرًا لأنه لا يمكنه سوى إجراء أنواع قليلة من الحسابات. في المقابل ، يمكن اعتبار الآلة الحاسبة العلمية القابلة للبرمجة (القادرة على إجراء جميع أنواع الحسابات) بمثابة آلة تورنج.
Blockchain و Turing Completeness
في حين أن بعض تطبيقات تقنية blockchain هي Turing Complete ، فإن البعض الآخر هو Turing غير مكتمل. هذا يختلف وفقًا لتقنية البرمجة النصية المطبقة. على سبيل المثال ، تم تصميم لغة البرمجة النصية المستخدمة في Bitcoin عن قصد على أنها Turing Incomplete لأنها تخدم غرضها ومن المحتمل أن يؤدي التعقيد المتزايد إلى حدوث مشكلات. من خلال إبقائها بسيطة ، يمكن للمطورين التنبؤ بدقة عالية بكيفية تفاعلها في عدد محدود من المواقف التي يتم استخدامها فيها.
من ناحية أخرى ، تم بناء Ethereum باعتباره Turing Complete blockchain. هذا مهم لأنه يحتاج إلى فهم الاتفاقيات التي تشكل العقود الذكية. من خلال كونها Turing Complete ، تمتلك Ethereum القدرة على فهم وتنفيذ أي اتفاقية مستقبلية ، حتى تلك التي لم يتم التفكير فيها بعد. بعبارة أخرى ، تعني Turing Completeness الخاصة بـ Ethereum أنها قادرة على استخدام قاعدة التعليمات البرمجية الخاصة بها لأداء أي مهمة تقريبًا ، طالما أن لديها التعليمات الصحيحة ، ووقتًا كافيًا وقوة معالجة.