HomeLập trìnhJavaScriptJavaScript đã hoàn...

JavaScript đã hoàn thành Turing— Giải thích


bởi rajaraodv

1*u__iwCIORZT5-m_zdiucgA

Nếu bạn bắt đầu học lập trình chức năng bằng JavaScript, có thể bạn sẽ nghe về phép tính lambda, máy Turing, Turing hoàn thành và bằng cách nào đó “JavaScript là Turing hoàn chỉnh”.

Nhưng, dường như không ai giải thích, một cách đơn giản, nó thực sự có nghĩa là gì. Mối quan hệ b/wa “máy” Turing và “ngôn ngữ” JavaScript là gì? Ngoài ra, hầu hết mọi người sử dụng biệt ngữ để giải thích biệt ngữ như vậy:

Trong lý thuyết tính toán, một hệ thống các quy tắc thao tác dữ liệu (chẳng hạn như tập lệnh của máy tính, ngôn ngữ lập trình hoặc máy tự động di động) được cho là Turing hoàn thành hoặc tính toán phổ quát nếu nó có thể được sử dụng để mô phỏng bất kỳ máy Turing đơn nào. Khái niệm này được đặt tên theo nhà toán học người Anh Alan Turing. Một ví dụ kinh điển là phép tính lambda.

Vì vậy, đây là nỗ lực của tôi trong việc giải thích những khái niệm này một cách đơn giản.

máy Turing

Ngày trước, mọi người muốn biết cách tạo ra một cỗ máy có thể thực hiện tất cả các phép tính mà họ đang thực hiện bằng tay. Họ muốn biết cách chế tạo một cỗ máy như vậy và nó có thể hoạt động như thế nào.

Đọc thêm  Ghi nhớ là gì? Cách thức và thời điểm ghi nhớ trong JavaScript và React

Alan Turing đã nghĩ ra một cỗ máy giả thuyết có thể lấy bất kỳ chương trình phức tạp nào và chạy nó. Nó có thể được thực hiện bằng cách sử dụng một cuộn băng đơn giản, đầu di chuyển sang trái và phải, có thể lưu trữ dữ liệu bằng cách đọc, ghi và xóa nội dung của các ô vuông. Với băng đủ dài và đủ thời gian, nó có thể tính toán bất kỳ chương trình nào.

Nói cách khác, anh ấy đã giải thích cách một người có thể tạo ra một chiếc máy tính. Và gọi máy tính là “máy Turing”

câu đố: Quay trở lại thời của Alan Turing, từ “Máy tính” có nghĩa là người tính toán các chương trình theo cách thủ công (không phải máy móc) 🙂

Thật mạnh mẽ nhưng thật đơn giản

Máy Turing nhanh chóng trở nên rất phổ biến, và cuối cùng trở thành một tiêu chuẩn vì chúng cung cấp một cơ chế mạnh mẽ để tính toán mọi thứ, nhưng chúng cũng rất dễ hiểu. Như được mô tả trong video dưới đây, máy Turing sử dụng băng để theo dõi các trạng thái và chạy tính toán.

Máy Turing Băng “Đơn” Vs “Đa”

Một thuật ngữ khác mà bạn sẽ nghe về máy Turing là khái niệm về băng “đơn”.

1*YcmJ5nJ_XNXK5PoIjFULTQ

Phiên bản đầu tiên của máy Turing chỉ có một cuộn băng dài. Sau này, người ta nghĩ ra khái niệm máy Turing băng “nhiều” sử dụng từ hai đến năm băng. Máy Turing nhiều băng không mạnh hơn máy Turing một băng, nhưng chúng giúp đơn giản hóa các chương trình.

Đọc thêm  Cách sử dụng Async/Await trong JavaScript với mã JS mẫu

Vì vậy, nói rõ ràng băng “đơn” là không cần thiết.

Hoàn thành Turing

Nếu một máy vật lý (như máy tính) hoặc máy ảo, là một phần mềm, (như JavaVM) có thể sử dụng không tí nào chương trình và chạy nó giống như máy Turing, thì máy đó được gọi là “Turing Complete”. Tái bút: Đó là một loại chứng nhận.

Ví dụ: Máy Turing hoàn chỉnh Vs Máy Turing chưa hoàn thiện

1*5KRGqyU6zKHJ7CUIpZ8QRA
Không hoàn thành Turing

Một máy tính là một ví dụ điển hình của một Máy Turing không hoàn chỉnh bởi vì nó chỉ có thể thực hiện một tập hợp nhỏ các phép tính được xác định trước.

Tuy nhiên, máy tính gia đình (Mac hoặc PC) là một máy Turing hoàn chỉnh vì nó có thể thực hiện bất kỳ phép tính nào mà máy Turing có thể thực hiện nếu chúng ta cung cấp cho nó đủ bộ nhớ và thời gian.

“JavaScript đã hoàn thành Turing”

Nếu bạn nghĩ về nó, máy Turing chỉ là một khái niệm – nó có nghĩa là bất kỳ “Điều(vật lý hoặc ảo) lấy bất kỳ chương trình nào và chạy nó về cơ bản là Máy Turing. Và nếu “thứ” đó có thể chạy mọi chương trình mà “Máy Turing” có thể chạy, thì nó được gọi là “Turing Complete”.

Bây giờ nếu bạn nghĩ về bất kỳ ngôn ngữ lập trình hiện đại nào, chúng cũng lấy các chương trình (do chúng tôi viết) làm đầu vào và chạy chúng. Hơn nữa, bất kỳ chương trình nào về mặt lý thuyết có thể được viết để chạy cho máy Turing cũng có thể được viết bằng JavaScript. Như vậy, JavaScript đã hoàn thành Turing.

Đọc thêm  Lặp qua một đối tượng trong JavaScript – Cách lặp qua một đối tượng trong JS

Đó là nó!

??? Nếu bạn thích bài viết này, xin vui lòng 1. ❤❤❤ bên dưới trên Phương tiện và 2. vui lòng chia sẻ nó trên Twitter. Bạn có thể retweet thẻ dưới đây???

MUỘN NHẤT: Lập trình hàm trong JS — Với các ví dụ thực tế (Phần 1)

Lập trình chức năng

  1. JavaScript đã hoàn thành Turing — Giải thích
  2. Lập trình hàm trong JS — Với các ví dụ thực tế (Phần 1)

ES6

  1. 5 phần JavaScript “xấu” đã được sửa trong ES6
  2. “Class” trong ES6 có phải là phần “xấu” mới không?

gói web

  1. Webpack — Những phần khó hiểu
  2. Webpack & Thay thế mô-đun nóng [HMR] (dưới mui xe)
  3. HMR của Webpack và React-Hot-Loader — Hướng dẫn còn thiếu

Dự thảo.js

  1. Tại sao Draft.js và tại sao bạn nên đóng góp
  2. Cách Draft.js thể hiện dữ liệu văn bản có định dạng

Phản ứng và Redux:

  1. Hướng dẫn từng bước để xây dựng ứng dụng React Redux
  2. Hướng dẫn xây dựng ứng dụng React Redux CRUD (ứng dụng 3 trang)
  3. Sử dụng Middleware trong ứng dụng React Redux
  4. Thêm xác thực biểu mẫu mạnh mẽ để phản ứng các ứng dụng Redux
  5. Bảo mật ứng dụng React Redux bằng mã thông báo JWT
  6. Xử lý email giao dịch trong ứng dụng React Redux
  7. Cấu tạo của ứng dụng React Redux

Lực lượng bán hàng

  1. Phát triển ứng dụng React Redux trong Visualforce của Salesforce

Cảm ơn vì đã đọc!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status