JavaScript Tamamlanıyor - Açıklandı

JavaScript Tamamlanıyor - Açıklandı

JavaScript'te işlevsel programlamayı öğrenmeye başlarsanız, muhtemelen lambda hesabı, Turing makinesi, Turing tamamlandı ve bir şekilde "JavaScript Turing tamamlandı" hakkında bir şeyler duyacaksınız.

Ancak, gerçekte ne anlama geldiğini basit terimlerle kimse açıklamıyor gibi görünüyor. Turing “makine” ile JavaScript “dili” arasındaki ilişki nedir? Ayrıca, çoğu insan jargonu şu şekilde açıklamak için jargon kullanır:

Hesaplanabilirlik teorisinde, herhangi bir tek bantlı Turing makinesini simüle etmek için kullanılabiliyorsa , bir veri işleme kuralları sisteminin (bir bilgisayarın talimat seti, bir programlama dili veya bir hücresel otomat gibi) Turing tam veya sayısal olarak evrensel olduğu söylenir. . Konsept, adını İngiliz matematikçi Alan Turing'den almıştır. Klasik bir örnek lambda hesabıdır.

Yani bu, bu kavramları basitçe açıklama girişimim.

Turing Makineleri

Eskiden insanlar, yaptıkları tüm hesaplamaları elle yapabilen bir makinenin nasıl yaratılacağını bilmek istediler. Böyle bir makinenin nasıl yapılacağını ve nasıl çalışabileceğini bilmek istediler.

Alan Turing, herhangi bir karmaşıklıktaki herhangi bir programı alıp çalıştırabilen varsayımsal bir makine buldu. Basit bir bant kullanılarak uygulanabilir, sola ve sağa hareket eden bir kafa, kare hücrelerin içeriğini okuyarak, yazarak ve silerek verileri depolayabilir. Yeterince uzun bant ve yeterli zaman verildiğinde, herhangi bir programı hesaplayabilir.

Başka bir deyişle, birinin nasıl bilgisayar yapabileceğini açıkladı. Ve bilgisayara "Turing makinesi" adını verdi

Diğer bilgiler: Alan Turing'in zamanında, "Bilgisayar" kelimesi, programları manuel olarak hesaplayan kişi anlamına geliyordu (makineleri değil) :)

Çok güçlü ama çok basit

Turing makineleri kısa sürede çok popüler oldu ve sonunda bir standart oldu çünkü her şeyi hesaplamak için güçlü bir mekanizma sağlarken, anlaşılması da kolaydı. Aşağıdaki videoda açıklandığı gibi, Turing makineleri durumları takip etmek ve hesaplamaları çalıştırmak için bir bant kullanır.

"Single" Vs "Multi" Bant Turing Makinaları

Turing makineleri hakkında duyacağınız bir diğer jargon da "tekli" bant kavramıdır.

Turing makinesinin ilk versiyonunda sadece uzun tek bir bant vardı. Daha sonra insanlar iki ila beş bant kullanan “çoklu” bant Turing makineleri konseptini ortaya attılar. Çok bantlı Turing makineleri, tek bantlı olanlardan daha güçlü değildi, ancak programları basitleştirmeye yardımcı oldular.

Yani açıkça "tekli" kaset demek gerekli değildir.

Turing Tamamlandı

Fiziksel bir makine (bilgisayar gibi) veya bir yazılım olan sanal makine (JavaVM gibi) herhangi bir programı alıp onu bir Turing makinesi gibi çalıştırabiliyorsa, o makineye “Turing Complete” denir. Not: Bu bir tür sertifika.

Örnekler: Turing complete Vs Turing eksik makine

Hesap makinesi , yalnızca önceden tanımlanmış küçük bir hesaplama alt kümesini gerçekleştirebildiğinden, eksik bir Turing makinesine iyi bir örnektir .

Bununla birlikte, bir ev bilgisayarı (Mac veya PC) bir Turing tam makinesidir çünkü bir Turing makinesinin, yeterli bellek ve zaman verirsek yapabileceği herhangi bir hesaplamayı yapabilir.

"JavaScript Tamamlandı"

Düşünürseniz, bir Turing makinesi sadece bir kavramdır - herhangi bir programı alıp çalıştıran herhangi bir " şeyin " (fiziksel veya sanal) aslında bir Turing Makinesi olduğu anlamına gelir. Ve eğer bu "şey" bir "Turing Makinesi" nin çalıştırabileceği her programı çalıştırabiliyorsa, o zaman "Turing Complete" olarak adlandırılır.

Şimdi, herhangi bir modern programlama dilini düşünürseniz, onlar da (bizim tarafımızdan yazılan) programları girdi olarak alıp çalıştırırlar. Ayrıca, bir Turing makinesi için çalışacak şekilde teorik olarak yazılabilen herhangi bir program JavaScript ile de yazılabilir. Böylece, JavaScript Turing tamamlandı.

Bu kadar!

??? Eğer bu yazı gibi, lütfen 1. ❤❤❤ bunu Twitter'da Aracı'sı altında ve 2. lütfen payı bunu. Aşağıdaki kartı retweetleyebilirsiniz ???

Diğer Yazılarım

EN SON: JS'de Fonksiyonel Programlama - Pratik Örneklerle (Bölüm 1)

Fonksiyonel Programlama

  1. JavaScript Tamamlandı - Açıklandı
  2. JS'de Fonksiyonel Programlama - Pratik Örneklerle (Bölüm 1)

ES6

  1. ES6'da Düzeltilen 5 JavaScript "Kötü" Parçası
  2. ES6'daki "Sınıf" Yeni "Kötü" Kısım mı?

WebPack

  1. Webpack - Kafa Karıştıran Parçalar
  2. Webpack ve Çalışma Modülünün Değiştirilmesi [HMR] (başlık altı)
  3. Webpack'in HMR ve React-Hot-Loader - Eksik Kılavuz

Draft.js

  1. Neden Draft.js ve Neden Katkıda Bulunmalısınız?
  2. Draft.js Zengin Metin Verilerini Nasıl Temsil Eder?

React ve Redux:

  1. React Redux Uygulamaları Oluşturmak İçin Adım Adım Kılavuz
  2. React Redux CRUD Uygulaması Oluşturma Kılavuzu (3 sayfalık uygulama)
  3. React Redux Uygulamalarında Ara Yazılımları Kullanma
  4. Redux Uygulamalarına Tepki Vermek İçin Sağlam Bir Form Doğrulaması Ekleme
  5. JWT Token ile React Redux Uygulamalarının Güvenliğini Sağlama
  6. React Redux Uygulamalarında İşlemsel E-postaları İşleme
  7. React Redux Uygulamasının Anatomisi

Satış ekibi

  1. Salesforce'un Visualforce'unda React Redux Uygulamaları Geliştirme

Okuduğunuz için teşekkürler!