Share & grow the worlds knowledge!
We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
1 Answer
- RAM: để lưu các câu lệnh, và dữ liệu.
- CPU: để thực hiện việc tính toán. Bản chất bên trong CPU là các transistor có 2 trạng thái 0 và 1. Từ các transistor này sẽ tạo ra các hàm phần cứng thông qua các phép tính AND, OR, XOR, NOT. Hãy giả sử CPU của chúng ta đã có sẵn hàm ADD để cộng 2 số, hàm GET để lấy dữ liệu từ bộ nhớ, hàm STORE để lưu dữ liệu vào bộ nhớ.
- Clock: đề đặn yêu cầu CPU lấy câu lệnh, và dữ liệu từ RAM và thực thi - Gọi là xung nhịp.
Bây giờ hãy giải sử chúng ta cần cộng 3 số: 1 + 2 + 3 thì máy tính YM sẽ thực thi thế nào? Đầu tiên chúng ta phải nạp vào RAM chương trình thế này:
ADD 1 2 // Thực thi hàm cộng 1 2 ở xung nhịp đầu tiên STORE 0xF // Lưu kết quả hàm cộng vào RAM ở địa chỉ ô nhớ 0xF ở xung nhịp thứ 2 ADD GET(0XF) 3 // Lấy dữ liệu từ RAM ở địa chỉ ô nhớ 0XF và cộng với 3 ở xung nhịp thứ 3 STORE 0XF // Lưu kết quả vào RAM ở địa chỉ ô nhớ 0XF ở xung nhịp thứ 4
Clock sẽ kích hoạt để CPU sẽ thực hiện theo các bước ở như trong comment.
Thì những gì bạn nhìn thấy ở trên đây chính là ngôn ngữ lập trình, và ta có thể gọi nó với từ thân thương đó là assembly.
Tuy nhiên ngôn ngữ assembly này tương đối khó hiểu vì nó không phải ngôn ngữ tự nhiên. Vậy bây giờ chúng ta cần tạo ra một loại ngôn ngữ lập trình mới có tên là C, lúc này chúng ta có thể viết ngắn gọn chương trìn của chúng ta thành:
int add123() { return 1 + 2 + 3; }
Và nhiệm vụ của chúng ta bây giờ là phải tạo ra trình dịch (complier) để dịch return 1 + 2 + 3;
thành chương trình assembly ở trên bằng chính ngôn ngữ assembly. Và chúng ta gọi C là ngôn ngữ biên dịch
Đến đây bạn đã dễ hiểu hơn rồi đúng không?
Tuy nhiên chúng ta thấy rằng ngôn ngữ biên dịch khá bất tiện, cứ phải viết mã rồi dịch rồi khởi động lại chương trình thì mới được, vậy nên chúng ta sẽ sẽ tạo ra ngôn ngữ tên là JavaScript, và nhiệm vụ bây giờ của chúng ta là phải tạo ra một cái máy ảo để đi thông dịch cái chương trình javascript ở dạng string sang các câu lệnh của máy ảo ví dụ:
console.log(1 + 2 + 3)
thì bên code của máy ảo có thể là:void main() { String script = readScriptFromFile(); String[] strs = script.split(" + "); printf(add123(str[0].toInt(), str[1].toInt(), str[2].toInt())); }
Máy ảo này chúng ta có thể viết bằng C cho đơn giản, và máy ảo cũng sẽ phức tạp hơn ví dụ ở trên rất nhiều.
Một trong những design pattern quan trọng nhất để tạo ra được ngôn ngữ lập trình đó chính là command design pattern anh em nhé.
-
0
- Reply
- Questions 1.0K
- Answers 2.2K
- Best Answers 131
- Users 486
Related Questions
Recent Activities
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm