JavaScript is Turing Complete - شرح

JavaScript is Turing Complete - شرح

إذا بدأت في تعلم البرمجة الوظيفية في JavaScript ، فمن المحتمل أن تسمع عن حساب التفاضل والتكامل lambda ، وآلة تورينج ، و Turing كاملة وبطريقة ما "JavaScript is Turing Complete".

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

في نظرية الحوسبة ، يُقال إن نظام قواعد معالجة البيانات (مثل مجموعة تعليمات الكمبيوتر ، أو لغة البرمجة ، أو الجهاز الآلي الخلوي) هو تورينج كامل أو عالمي حسابيًا إذا كان من الممكن استخدامه لمحاكاة أي آلة تورينج مسجلة. . تم تسمية هذا المفهوم على اسم عالم الرياضيات الإنجليزي آلان تورينج. المثال الكلاسيكي هو حساب لامدا.

لذا فهذه هي محاولتي لشرح هذه المفاهيم ببساطة.

آلات تورينج

في الماضي ، أراد الناس معرفة كيفية إنشاء آلة يمكنها إجراء جميع العمليات الحسابية التي كانوا يقومون بها يدويًا. لقد أرادوا معرفة كيفية بناء مثل هذه الآلة وكيف يمكن أن تعمل.

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

بعبارة أخرى ، أوضح كيف يمكن لشخص ما بناء جهاز كمبيوتر. وأطلقوا على الكمبيوتر اسم "آلة تورينغ"

التوافه: في أيام آلان تورينج ، كانت كلمة "كمبيوتر" تعني الشخص الذي يحسب البرامج يدويًا (وليس الآلات) :)

قوية جدا لكنها بسيطة جدا

سرعان ما أصبحت آلات تورينج شائعة جدًا ، وفي النهاية أصبحت معيارًا لأنها وفرت آلية قوية لحساب أي شيء ، إلا أنها كانت سهلة الفهم أيضًا. كما هو موضح في الفيديو أدناه ، تستخدم آلات تورينج شريطًا لتتبع الحالات وتشغيل الحسابات.

آلات شد الشريط "المفردة" مقابل "المتعددة"

إحدى المصطلحات الأخرى التي ستسمعها عن آلات تورينج هي مفهوم الشريط "الفردي".

كان الإصدار الأولي من آلة Turing يحتوي على شريط واحد طويل فقط. لاحقًا ، توصل الناس إلى مفهوم آلات تورينج "المتعددة" التي تستخدم شريطين إلى خمسة أشرطة. لم تكن آلات Turing متعددة الأشرطة أقوى من تلك التي تستخدم الشريط الواحد ، لكنها ساعدت في تبسيط البرامج.

لذا فإن قول شريط "فردي" ليس ضروريًا.

تورينج كاملة

إذا كان بإمكان آلة فعلية (مثل الكمبيوتر) أو آلة افتراضية ، وهي برنامج (مثل JavaVM) ، أخذ أي برنامج وتشغيله تمامًا مثل آلة Turing ، فإن هذا الجهاز يسمى "Turing Complete". ملاحظة: إنه نوع من الشهادات.

أمثلة: آلة تورينج الكاملة مقابل تورينج غير المكتملة

تعد الآلة الحاسبة مثالاً جيدًا على آلة تورينج غير المكتملة لأنها لا يمكنها إجراء سوى مجموعة فرعية صغيرة محددة مسبقًا من الحسابات.

ومع ذلك ، فإن الكمبيوتر المنزلي (Mac أو الكمبيوتر الشخصي) هو آلة Turing كاملة لأنه يمكنه إجراء أي عملية حسابية يمكن لآلة Turing القيام بها إذا أعطيناها ذاكرة ووقتًا كافيًا.

"جافا سكريبت اكتمل"

إذا فكرت في الأمر ، فإن آلة Turing هي مجرد مفهوم - فهذا يعني أن أي " شيء " (مادي أو افتراضي) يأخذ أي برنامج ويشغله هو في الأساس آلة Turing. وإذا كان هذا "الشيء" يمكنه تشغيل كل برنامج يمكن لـ "Turing Machine" تشغيله ، فإنه يسمى "Turing Complete".

الآن إذا فكرت في أي لغة برمجة حديثة ، فإنهم يأخذون أيضًا البرامج (التي نكتبها) كمدخلات ويقومون بتشغيلها. علاوة على ذلك ، يمكن أيضًا كتابة أي برنامج يمكن كتابته نظريًا للتشغيل لجهاز Turing في JavaScript. وهكذا ، جافا سكريبت هو تورينج كاملة.

هذا هو!

؟؟؟ إذا كنت مثل هذه الوظيفة، يرجى 1. ❤❤❤ ذلك أدناه على المتوسط و2. يرجى حصة على التغريد. يمكنك إعادة تغريد البطاقة أدناه ؟؟؟

مشاركاتي الأخرى

الأحدث: البرمجة الوظيفية في JS - مع أمثلة عملية (الجزء الأول)

البرمجة الوظيفية

  1. جافا سكريبت كاملة تورينج - شرح
  2. البرمجة الوظيفية في JS - مع أمثلة عملية (الجزء الأول)

ES6

  1. 5 أجزاء JavaScript "سيئة" تم إصلاحها في ES6
  2. هل "الفصل" في ES6 الجزء الجديد "السيئ"؟

حزمة الويب

  1. Webpack - الأجزاء المربكة
  2. استبدال Webpack & Hot Module [HMR] (تحت الغطاء)
  3. Webpack's HMR و React-Hot-Loader - الدليل المفقود

مسودة. js

  1. لماذا Draft.js ولماذا يجب أن تساهم
  2. كيف يمثل Draft.js بيانات النص المنسق

رد فعل واستعادة:

  1. دليل خطوة بخطوة لبناء تطبيقات إعادة رد الفعل
  2. دليل لبناء تطبيق React Redux CRUD ( تطبيق من 3 صفحات)
  3. استخدام Middlewares في React Redux Apps
  4. إضافة تحقق قوي من صحة النموذج للرد على تطبيقات Redux
  5. تأمين تطبيقات React Redux مع رموز JWT
  6. التعامل مع رسائل البريد الإلكتروني الخاصة بالمعاملات في تطبيقات React Redux
  7. تشريح تطبيق رد الفعل

قوة المبيعات

  1. تطوير React Redux Apps في Salesforce's Visualforce

شكرا للقراءة!