A JavaScript befejeződik - elmagyarázva

A JavaScript befejeződik - magyarázat

Ha elkezdi tanulni a funkcionális programozást JavaScript-ben, akkor valószínűleg hallani fog a lambda számításról, a Turing gépről, a Turing teljes és valahogyan a „JavaScript is Turing teljes”.

De úgy tűnik, senki nem magyarázza meg egyszerű szavakkal, hogy mit is jelent valójában. Mi a kapcsolat b / wa Turing „gép” és a „JavaScript” nyelv? Ezenkívül a legtöbb ember zsargonnal magyarázza a zsargont így:

A kiszámíthatóság elméletében az adatmanipulációs szabályok rendszerét (például a számítógép utasításkészletét, programozási nyelvét vagy cellás automatáját) teljesnek vagy számítási szempontból univerzálisnak mondják, ha bármilyen egyszeres szalagos Turing-gép szimulálására használható. . A koncepciót Alan Turing angol matematikusról nevezték el. Klasszikus példa a lambda calculus.

Tehát ez az a kísérletem, hogy egyszerűen megmagyarázzam ezeket a fogalmakat.

Turing gépek

A napokban az emberek tudni akarták, hogyan lehet olyan gépet létrehozni, amely minden számítást kézzel elvégezhet. Meg akarták tudni, hogyan lehet ilyen gépet felépíteni és hogyan működhet.

Alan Turing egy hipotetikus géppel állt elő, amely bármilyen összetettségű programot el tudott venni és futtatni. Meg lehet valósítani egy egyszerű szalaggal, egy fejjel, amely balra és jobbra mozog, adatokat tárolhat a négyzet alakú cellák tartalmának olvasásával, írásával és törlésével. Elég hosszú szalag és elegendő idő birtokában bármilyen programot kiszámíthat.

Más szavakkal elmagyarázta, hogyan tud valaki számítógépet építeni. És a számítógépet „Turing-gépnek” nevezte

Apróságok: Alan Turing napjaiban a „Computer” szó azt jelentette, aki manuálisan számolja a programokat (nem a gépeket) :)

Olyan hatalmas, mégis olyan egyszerű

A Turing-gépek hamar nagyon népszerűvé váltak, és végül szabványosak, mert bár hatékony mechanizmust biztosítottak bármi kiszámításához, könnyen érthetőek is voltak. Az alábbi videóban leírtak szerint a Turing-gépek szalagot használnak az állapotok nyomon követésére és a számítások futtatására.

„Single” Vs „Multi” Tape Turing Machines

A Turing-gépekről még egy zsargon fog hallani az „egyetlen” szalag fogalma.

A Turing-gép eredeti változatának csak egy hosszú szalagja volt. Később az emberek kitalálták a „több” szalagos Turing-gép fogalmát, amely kettőtől öt szalagig terjedt. A többszalagos Turing-gépek nem voltak erősebbek, mint az egyszalagosok, de segítettek a programok egyszerűsítésében.

Ezért nem szükséges kimondani az „egyetlen” szalagot.

Turing Complete

Ha egy fizikai gép (például egy számítógép) vagy egy virtuális gép, amely egy szoftver (például a JavaVM), képes bármilyen programot lefuttatni és futtatni, akárcsak egy Turing-gépet, akkor ezt a gépet „Turing Complete” -nek hívják. PS: Ez egyfajta tanúsítás.

Példák: Turing teljes Vs Tomplett gép

A számológép jó példa egy hiányos Turing-gépre, mert csak egy előre meghatározott kis számítási halmazot tud végrehajtani.

Az otthoni számítógép (Mac vagy PC) azonban egy komplett Turing-gép, mert bármilyen számítást elvégezhet, amelyet egy Turing-gép elvégezhet, ha elegendő memóriát és időt biztosítunk neki.

„A JavaScript befejeződik”

Ha belegondolunk, a Turing-gép csak egy fogalom - ez azt jelenti, hogy minden „ dolog ” (fizikai vagy virtuális), amely bármilyen programot elvesz és futtat, lényegében egy Turing-gép. És ha ez a "dolog" képes futtatni minden olyan programot, amelyet egy "Turing Machine" futtathat, akkor ezt "Turing Complete" -nek hívják.

Ha most bármelyik modern programozási nyelvre gondolsz, akkor az általunk írt programokat is bevitelként használják és futtatják. Ezenkívül minden olyan program, amely elméletileg írható egy Turing-gép futtatásához, JavaScript-be is írható. Így a JavaScript Turing befejeződött.

Ez az!

??? Ha tetszik ez a bejegyzés, kérjük, 1. ❤❤❤ az alábbiakban a Medium-on és 2. kérjük, ossza meg a Twitteren. Retweetelheti az alábbi kártyát ???

Egyéb hozzászólásaim

Legfrissebb: Funkcionális programozás JS-ben - gyakorlati példákkal (1. rész)

Funkcionális programozás

  1. A JavaScript befejeződik - elmagyarázva
  2. Funkcionális programozás JS-ben - gyakorlati példákkal (1. rész)

ES6

  1. 5 JavaScript „rossz” alkatrész, amelyek javítva vannak az ES6-ban
  2. Az ES6 „osztálya” az új „rossz” rész?

WebPack

  1. Webpack - A zavaró alkatrészek
  2. Webcsomag és forró modul cseréje [HMR] (a motorháztető alatt)
  3. A Webpack HMR és React-Hot-Loader - hiányzik a kézikönyve

Draft.js

  1. Miért kell a Draft.js és miért kell hozzájárulnia
  2. A Draft.js hogyan jeleníti meg a gazdag szöveges adatokat

React és Redux:

  1. Lépésről lépésre útmutató a React Redux alkalmazások felépítéséhez
  2. Útmutató a React Redux CRUD alkalmazás felépítéséhez (3 oldalas alkalmazás)
  3. Középáruk használata a React Redux alkalmazásokban
  4. Robusztus űrlapellenőrzés hozzáadása a Redux alkalmazások reagálásához
  5. A React Redux alkalmazások biztosítása JWT tokenekkel
  6. Tranzakciós e-mailek kezelése a React Redux alkalmazásokban
  7. A React Redux alkalmazás anatómiája

Értékesítési erő

  1. React Redux alkalmazások fejlesztése a Salesforce Visualforce alkalmazásában

Köszönöm, hogy elolvasta!