تورینگ کامل (Turing Complete)

آنچه می‌خوانید...

قبل از رایانه های امروزی، آلن تورینگ این فرضیه را مطرح كرد كه روزی ماشینی وجود دارد كه می تواند هر مشكلی را حل كند. این دستگاه به تورینگ کامل (Turing Complete) معروف شد.

مقدمه ای بر تورینگ کامل (Turing Complete)

تورینگ کامل (Turing Complete) به ماشینی گفته می شود که با در نظر گرفتن زمان و حافظه کافی همراه با دستورالعمل های لازم، هر مسئله پیچیده ای را بتواند حل کند. این اصطلاح به طور معمول برای توصیف زبان های برنامه نویسی مدرن استفاده می شود زیرا بیشتر آنها Turing Complete (C ++ ، Python ، و غیره) هستند.

- Advertisement -

مخترع تورینگ

آلن تورینگ، یکی از بزرگترین ریاضیدانان و دانشمندان کامپیوتر، در سال 1936 ماشینی را توسعه داد (ماشین فیزیکی نبود بلکه نظری بود) که می توانست هر محاسبه ای را انجام دهد. وی نحوه ساخت رایانه ای را توضیح داد که بتواند هر برنامه ای را اجرا کند و هر نوع مساله ای را حل کند. با این حال ، هیچ تضمینی در مورد مدت زمان پردازش وجود ندارد. بعضی از آنها ممکن است در عرض چند دقیقه انجام شود در حالی که برخی مسایل ممکن است هزاران سال طول بکشد . اما تضمین می کند که دیر یا زود مشکل حل خواهد شد. (حتی ممکن است تا پس از نابودی جهان طول بکشد).

تورینگ کامل (Turing Complete)
آلن تورینگ ،مخترع ماشین تورینگ

ساخت ماشین تورینگ کامل (Turing Complete)

تورینگ، ماشین خود را به عنوان یک نوار طولانی با اطلاعاتی که به صورت کد باینری (1 و 0) روی آن نوشته شده است تصور کرد. این دستگاه همچنین دارای یک هد خواندن / نوشتن است که در امتداد نوار خواندن هر مربع ، یک به یک حرکت می کند. این کد از ماشین یک مساله محاسباتی را می پرسد و نوار تا زمانی که برای دستیابی به یک راه حل لازم است ، در حال حرکت خواهد بود.

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

نحوه کار ماشین تورینگ

یک نوار بی نهایت طولانی بگیرید (طول نوار به طول ورودی، خروجی مورد انتظار و پیچیدگی مسئله ای که باید حل شود بستگی دارد). نوار به سلولهای گسسته تقسیم می شود. سلولهای بی نهایت روی نوار وجود دارد. دستگاه دارای یک اشاره گر یا هد است که می تواند به چپ یا راست روی نوار حرکت کند. یک هد همچنین توانایی پاک کردن داده های موجود در سلول و نوشتن داده های جدید را دارد.

تورینگ کامل (Turing Complete)
ساختار تورینگ

هر آنچه که قرار است از نوار حذف شود و هر آنچه که باید به نوار اضافه شود با دستورالعمل های توصیف شده توسط کاربر اداره می شود.

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

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

هر سلول یک حالت مرتبط با آن دارد که با دستورالعمل های توصیف شده توسط کاربر اداره می شود. حالت سلول با وقوع حادثه تغییر می کند. وقتی حالت تغییر می کند ، ممکن است مقدار روی سلول دوباره نوشته شود.

حرکت روی دستگاه تورینگ به شرح زیر است:

تورینگ کامل (Turing Complete)
تابع تعریف شده برای حرکت روی نوار ماشین تورینگ

جایی که،

q حالت فعلی است.

a مقدار سلول است.

P حالت جدید است.

A مقدار جدیدی در سلول است.

R به این معنی است که سر به درستی حرکت خواهد کرد.

L به این معنی است که سر به سمت چپ حرکت می کند.

تورینگ ناقص (Turing Incomplete)

یک دستگاه یا زبان برنامه نویسی وقتی Turing Complete شناخته شود که بتواند با اجرای هر برنامه یا حل مشکلی که Turing Machine می تواند اجرا یا حل کند، یک ماشین Turing را تکثیر کند. از طرف دیگر، اگر دستگاه یا زبان برنامه نویسی قادر به انجام آن نباشد، گفته می شود Turing ناقص است.

یک ماشین حساب ساده نمونه ای از سیستم است که Turing ناقص است زیرا فقط چند نوع محاسبه را می تواند انجام دهد. در مقابل، یک ماشین حساب علمی قابل برنامه ریزی (قادر به انجام انواع محاسبات) می تواند به عنوان یک ماشین تورینگ تلقی شود.

چگونه استفاده از تورینگ در بلاکچین شروع شد؟

این بحث از آنجا آغاز شد که Ethereum خود را با گفتن «بلاک چین بیت کوین Turing Complete نیست ، اما Ethereum کامل است» معرفی و به بازار عرضه کرد و تمام بلاک چین های جدید به همین لیگ پیوستند. Ethereum بستری برای برنامه های غیرمتمرکز است. یعنی برای اجرای این برنامه ها هیچ نهاد مرکزی یا سروری مورد نیاز نیست. برنامه روی چندین کامپیوتر اجرا می شود و بنابراین راهی برای پایین آوردن آنها وجود ندارد. برای نوشتن چنین برنامه هایی به قراردادهای هوشمند نیاز دارید. قراردادهای هوشمند به زبان سالیدیتی در Ethereum نوشته شده و سالیدیتی Turing کامل است.

تورینگ کامل (Turing Complete)
ویتالیک بوترین ، بنیانگذار Ethereum

Vitalik Buterin، بنیانگذار Ethereum ، یک زبان برنامه نویسی Turing Complete را به عنوان زبانی که اجازه استفاده از حلقه یا loop را می دهد توصیف می کند. سالیدیتی نوشتن حلقه ها را امکان پذیر می کند اما زبان اسکریپت نویسی بیت کوین این کار را نمی کند (برای انجام کاری به تعداد 100 بار نیاز به 100 بار کپی و پیست دارد).

[irp posts=”4544″ name=”آشنایی با اتریوم این رایانه جهانی-قسمت اول”]

چرا بلاکچین بیت کوین عمداً از حلقه های خطرناک(Loop) جلوگیری کرد؟

علت اینکه چرا زبان برنامه نویسی Bitcoin Blockchain از حلقه پشتیبانی نمی کند ،جلوگیری از هرزنامه(spams) است. حلقه ها می توانند در بلاک چین خطرناک باشند. زیرا برخی از کدها ممکن است به میلیون ها اجرا نیاز داشته و شبکه را بیش از حد درگیر کند. اتریوم با معرفی هزینه های هر کار (gas) آن را حل کرده است. بنابراین ، دستوراتی که باید اجرا شوند ، هزینه بیشتری دارند. بیت کوین برای عملکردهای ساده طراحی شده است. و بیشتر به عنوان ارز رمزنگاری شده و انتقال پول عمل می کند.

گاز(gas) واحد اندازه گیری است که برای اندازه گیری هزینه اجرای عملیات در بلاک چین اتریوم استفاده می شود. مفهوم گاز برای جداسازی هزینه محاسباتی اجرای یک عملیات (کدگذاری) از ارزش بازار اتریوم وجود دارد.

بلاک چین و تورینگ کامل (Turing Complete)

برخی از کاربردهای فناوری بلاکچین تورینگ کامل (Turing Complete) است و برخی دیگر Turing ناقص هستند. که با توجه به فناوری اسکریپت نویسی اجرا شده متفاوت است. به عنوان مثال ، زبان اسکریپت نویسی مورد استفاده در بیت کوین عمداً به عنوان Turing Incomplete طراحی شده است. زیرا هدف آن سادگی است و افزایش پیچیدگی به آن مشکلاتی را به وجود می آورد.

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

کلام آخر

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

 

 

4 نظرات

پاسخ ترک

لطفا نظر خود را وارد کنید
لطفا نام خود را اینجا وارد کنید

spot_img

هیچ خبری رو از دست نده!

محاسبه‌گر ارزهای دیجیتال
ارز معادل
تومان

محاسبه با مبلغ تتر : تومان