Η JavaScript ολοκληρώθηκε - Εξηγείται

Η JavaScript ολοκληρώθηκε - Εξηγείται

Εάν αρχίσετε να μαθαίνετε λειτουργικό προγραμματισμό σε JavaScript, πιθανότατα θα ακούσετε για το λογιστικό λάμδα, το μηχάνημα Turing, το Turing ολοκληρωμένο και κάπως το "Το JavaScript είναι Turing ολοκληρωμένο".

Όμως, κανείς δεν φαίνεται να εξηγεί, με απλούς όρους, τι σημαίνει πραγματικά. Ποια είναι η σχέση b / wa Turing "machine" και JavaScript "language"; Επίσης, οι περισσότεροι άνθρωποι χρησιμοποιούν την ορολογία για να εξηγήσουν τη φρασεολογία ως εξής:

Στη θεωρία της υπολογιστικής ικανότητας, ένα σύστημα κανόνων χειρισμού δεδομένων (όπως ένα σετ εντολών υπολογιστή, μια γλώσσα προγραμματισμού ή ένα κυψελοειδές αυτοματοποιημένο) λέγεται ότι είναι Turing πλήρες ή υπολογιστικά καθολικό εάν μπορεί να χρησιμοποιηθεί για την προσομοίωση οποιασδήποτε μηχανής Turing με ένα μόνο κασετόφωνο. . Η ιδέα πήρε το όνομά της από τον Άγγλο μαθηματικό Alan Turing. Ένα κλασικό παράδειγμα είναι το lambda calculus.

Αυτή είναι λοιπόν η προσπάθειά μου να εξηγήσω απλώς αυτές τις επιγραφές.

Μηχανήματα Turing

Πίσω στην ημέρα, οι άνθρωποι ήθελαν να μάθουν πώς να δημιουργήσουν ένα μηχάνημα που θα μπορούσε να κάνει όλους τους υπολογισμούς που έκανε με το χέρι. Ήθελαν να μάθουν πώς να φτιάξουν ένα τέτοιο μηχάνημα και πώς θα μπορούσε να λειτουργήσει.

Ο Alan Turing ήρθε με μια υποθετική μηχανή που θα μπορούσε να λάβει οποιοδήποτε πρόγραμμα οποιασδήποτε πολυπλοκότητας και να το τρέξει. Θα μπορούσε να εφαρμοστεί χρησιμοποιώντας μια απλή ταινία, μια κεφαλή που κινείται αριστερά και δεξιά, θα μπορούσε να αποθηκεύσει δεδομένα διαβάζοντας, γράφοντας και διαγράφοντας το περιεχόμενο των τετραγωνικών κελιών. Λαμβάνοντας αρκετή ταινία και αρκετό χρόνο, θα μπορούσε να υπολογίσει οποιοδήποτε πρόγραμμα.

Με άλλα λόγια, εξήγησε πώς μπορεί κάποιος να κατασκευάσει έναν υπολογιστή. Και χαρακτήρισε τον υπολογιστή «μηχανή Turing»

Trivia: Πίσω στις μέρες του Alan Turing, η λέξη «Computer» σήμαινε το άτομο που υπολογίζει χειροκίνητα προγράμματα (όχι τα μηχανήματα) :)

Τόσο ισχυρό αλλά τόσο απλό

Τα μηχανήματα Turing σύντομα έγιναν πολύ δημοφιλή και τελικά ένα πρότυπο γιατί ενώ παρείχαν έναν ισχυρό μηχανισμό για τον υπολογισμό οτιδήποτε, ήταν επίσης εύκολο να κατανοηθούν. Όπως περιγράφεται στο παρακάτω βίντεο, οι μηχανές Turing χρησιμοποιούν μια ταινία για να παρακολουθούν τις καταστάσεις και να εκτελούν υπολογισμούς.

Μηχανές Turing "Single" Vs "Multi"

Μια άλλη ορολογία που θα ακούσετε για τις μηχανές Turing είναι η έννοια της «μονής» ταινίας.

Η αρχική έκδοση του μηχανήματος Turing είχε μόνο μια μακρά κασέτα. Αργότερα, οι άνθρωποι βρήκαν την ιδέα των «πολλαπλών» ταινιών Turing μηχανές που χρησιμοποίησαν δύο έως πέντε ταινίες. Τα μηχανήματα πολλαπλών ταινιών Turing δεν ήταν πιο ισχυρά από τα μονόκαμπτα, αλλά βοήθησαν στην απλοποίηση των προγραμμάτων.

Δεν είναι λοιπόν απαραίτητο να λέτε ρητά ότι "μονό" ταινία.

Ολοκληρώθηκε

Εάν ένα φυσικό μηχάνημα (όπως ένας υπολογιστής) ή μια εικονική μηχανή, που είναι ένα λογισμικό, (όπως το JavaVM) μπορεί να λάβει οποιοδήποτε πρόγραμμα και να το τρέξει ακριβώς όπως μια μηχανή Turing, τότε αυτό το μηχάνημα ονομάζεται "Turing Complete". PS: Είναι ένα είδος πιστοποίησης.

Παραδείγματα: Turing πλήρες Vs Turing ατελές μηχάνημα

Η αριθμομηχανή είναι ένα καλό παράδειγμα ενός μη ολοκληρωμένου μηχανήματος Turing επειδή μπορεί να εκτελέσει μόνο ένα μικρό προκαθορισμένο υποσύνολο υπολογισμών.

Ωστόσο, ένας οικιακός υπολογιστής (Mac ή PC) είναι ένα πλήρες μηχάνημα Turing επειδή μπορεί να κάνει οποιονδήποτε υπολογισμό που μπορεί να κάνει μια μηχανή Turing αν του δώσουμε αρκετή μνήμη και χρόνο.

"Η JavaScript ολοκληρώθηκε"

Αν το σκεφτείτε, μια μηχανή Turing είναι απλώς μια ιδέα - σημαίνει ότι κάθε « πράγμα » (φυσικό ή εικονικό) που παίρνει οποιοδήποτε πρόγραμμα και τρέχει είναι ουσιαστικά ένα Turing Machine. Και αν αυτό το "πράγμα" μπορεί να εκτελέσει κάθε πρόγραμμα που μπορεί να εκτελεστεί ένα "Turing Machine", τότε ονομάζεται "Turing Complete".

Τώρα, αν σκεφτείτε οποιαδήποτε σύγχρονη γλώσσα προγραμματισμού, λαμβάνουν επίσης τα προγράμματα (που γράφονται από εμάς) ως είσοδο και τα εκτελούν. Περαιτέρω, οποιοδήποτε πρόγραμμα που μπορεί θεωρητικά να γραφτεί για να τρέξει μια μηχανή Turing μπορεί επίσης να γραφτεί σε JavaScript. Έτσι, η JavaScript είναι πλήρης.

Αυτό είναι!

??? Αν σας αρέσει αυτό το post, παρακαλώ 1. ❤❤❤ το παρακάτω για μεσαίες και 2. παρακαλώ Μοιραστείτε το στο Twitter. Μπορείτε να κάνετε retweet της παρακάτω κάρτας ???

Οι άλλες δημοσιεύσεις μου

ΝΕΟΤΕΡΑ: Λειτουργικός προγραμματισμός σε JS - Με πρακτικά παραδείγματα (Μέρος 1)

Λειτουργικός προγραμματισμός

  1. Η JavaScript είναι πλήρης - εξηγείται
  2. Λειτουργικός προγραμματισμός σε JS - Με πρακτικά παραδείγματα (Μέρος 1)

ES6

  1. 5 "Κακά" μέρη JavaScript που επιδιορθώνονται στο ES6
  2. Είναι το "Class" στο ES6 το νέο "Bad" μέρος;

WebPack

  1. Webpack - Τα Μπερδεμένα μέρη
  2. Αντικατάσταση Webpack & Hot Module [HMR] (κάτω από την κουκούλα)
  3. HMR και React-Hot-Loader Webpack - Το εγχειρίδιο που λείπει

Πρόχειρο.js

  1. Γιατί Draft.js και γιατί πρέπει να συνεισφέρετε
  2. Πώς το Draft.js αντιπροσωπεύει δεδομένα εμπλουτισμένου κειμένου

Αντιδράστε και Redux:

  1. Οδηγός βήμα προς βήμα για τη δημιουργία εφαρμογών React Redux
  2. Ένας οδηγός για την κατασκευή μιας εφαρμογής React Redux CRUD ( εφαρμογή 3 σελίδων)
  3. Χρήση Middlewares σε εφαρμογές React Redux
  4. Προσθήκη ισχυρής επικύρωσης φόρμας για την αντίδραση των εφαρμογών Redux
  5. Εξασφάλιση εφαρμογών React Redux με μάρκες JWT
  6. Χειρισμός συναλλακτικών μηνυμάτων ηλεκτρονικού ταχυδρομείου σε εφαρμογές React Redux
  7. Η ανατομία μιας εφαρμογής React Redux

Salesforce

  1. Ανάπτυξη εφαρμογών React Redux στο Visualforce του Salesforce

Ευχαριστώ για την ανάγνωση!