Khi tìm hiểu về lập trình, chúng ta sẽ học các ngôn ngữ lập trình bậc cao như: JavaScript, Java, C/C++, Python hay PHP,… Nhưng để có thể “trò chuyện” và yêu cầu phần cứng làm việc, máy tính sẽ cần đến ngôn ngữ máy. Vậy, ngôn ngữ máy là gì? Ưu điểm và nhược điểm của ngôn ngữ máy ra sao? Có nên trực tiếp viết chương trình bằng ngôn ngữ máy hay không? Sự khác biệt giữa ngôn ngữ máy và hợp ngữ là gì? Tất cả sẽ được Tino Group giải đáp trong bài viết.
Tìm hiểu về ngôn ngữ máy
Trước tiên, chúng ta sẽ đi tìm hiểu về ngôn ngữ lập trình nói chung để có thể hiểu hơn về “ngôn ngữ khó hiểu” – ngôn ngữ máy nhé!
Bài viết sẽ tập trung đề cập đến ngôn ngữ cấp thấp. Nếu bạn muốn tìm hiểu về ngôn ngữ bậc cao, tìm hiểu thêm tại Top 5 ngôn ngữ lập trình phổ biến nhất.
Ngôn ngữ lập trình là gì?
Ngôn ngữ lập trình (programming language) là một dạng ngôn ngữ được phát triển và chuẩn hóa theo một hệ thống quy tắc riêng, giúp cho lập trình viên có thể mô tả được các chương trình làm việc gì đó mà cả con người và máy tính đều hiểu được.
Ngôn ngữ lập trình được sử dụng để viết nên các chương trình phần mềm, ứng dụng và cả website. Mỗi ngôn ngữ sẽ có những đặc điểm riêng từ: cú pháp, từ vựng, ý nghĩa và cả mục đích cụ thể.
Vậy, có mấy loại ngôn ngữ lập trình?
Chúng ta sẽ có bao gồm 3 loại ngôn ngữ lập trình chính:
- Ngôn ngữ máy – Machine Language
- Hợp ngữ – Assembly Language
- Ngôn ngữ bậc cao – High Level Language
Chúng ta cũng có thể chia thành 2 loại:
- Ngôn ngữ bậc thấp – Low level language: chúng ta sẽ gộp chung ngôn ngữ máy và hợp ngữ vào loại này.
- Ngôn ngữ bậc cao – High Level Language
Ngoài ra, bạn còn có thể chia theo những cách khác như: chia theo bảng chữ cái, chia theo thứ tự thời gian. Nếu bạn vẫn muốn tham khảo thêm về việc phân chia ngôn ngữ lập trình, bài viết của Wikipedia này sẽ đáp ứng được nhu cầu tìm hiểu thêm của bạn.
Machine Language – ngôn ngữ máy là gì?
Machine Language tạm dịch ngôn ngữ máy, là ngôn ngữ duy nhất để viết chương trình và máy tính có thể hiểu ngay lập tức sau đó thực hiện yêu cầu trong chương trình. Ngôn ngữ máy là một dạng ngôn ngữ số được viết bằng mã nhị phân 0 – 1 hoặc mã hex. Ưu điểm vượt trội của ngôn ngữ máy chính là khả năng làm việc tuyệt vời và khai thác phần cứng của máy tính.
Khi sử dụng ngôn ngữ máy, máy tính sẽ hiểu trực tiếp lệnh của bạn mà không cần thông qua các trình biên dịch.
Nhưng khoan! Dừng lại chừng 12 giây! Tin Tino Group đi, bạn nên tiếp tục đọc bài viết đừng vội vàng đi học ngôn ngữ máy để lập trình ra phần mềm của bạn nhé!
Assembly Language – Hợp ngữ là gì?
Hợp ngữ (Assembly Language) là một ngôn ngữ lập trình cao cấp hơn ngôn ngữ máy một chút, sử dụng một số từ (tiếng Anh), chữ cái, chữ số cũng như những ký tự đặc biệt để viết các chương trình và máy tính có thể hiểu một cách nhanh chóng.
Tuy nhiên, ngôn ngữ này vẫn chưa thực sự có thiện cảm với con người chúng ta và chỉ phù hợp với một bộ phận nhỏ lập trình viên.
Ngoài ra, hợp ngữ được xếp riêng thành middle level language – ngôn ngữ bậc trung nhưng cũng có nhiều trường hợp, hợp ngữ bị gộp chung với ngôn ngữ máy trở thành ngôn ngữ bậc thấp (low level language).
Nếu từng xem phim Thủy thủ mặt trăng, bạn sẽ thấy nhân vật Tuxedo Mặt nạ viết chương trình hoặc làm việc với máy tính với những dòng xanh lá cây thế này.
Có nên sử dụng ngôn ngữ máy hay không?
Có nên viết chương trình phần mềm bằng ngôn ngữ máy hay không?
Trong thời kỳ đầu, khi các ngôn ngữ lập trình bậc cao chưa xuất hiện, các kỹ sư phần mềm sẽ phải viết lệnh trực tiếp bằng ngôn ngữ máy để máy tính làm việc.
Ví dụ, với một chương trình phần mềm viết bằng ngôn ngữ máy đã được cài trên bộ nhớ chính, chúng ta sẽ sử dụng các lệnh sau để tương tác với chương trình và yêu cầu bật tắt bóng đèn:
- 00000000 dừng phần mềm
- 00000001 bật sáng hoàn toàn
- 00000010 tắt hoàn toàn
- 00000100 giảm độ sáng xuống 10%
- 00001000 tăng độ sáng lên 10%
Như bạn có thể thấy, bạn sẽ phải viết chương trình và làm việc với 2 con số: 0 và 1. Về cơ bản, quyền lựa chọn là của bạn.
Nhưng chương trình viết bằng ngôn ngữ máy sẽ không gần gũi với con người, khó đọc, khó hiểu, dẫn đến việc khó phát triển thành những dự án lớn và bảo trì.
Ưu điểm và nhược điểm của ngôn ngữ máy
Ưu điểm của ngôn ngữ máy
Ngôn ngữ máy là ngôn ngữ dành cho máy tính giao tiếp với phần cứng. Vì vậy:
- Ngôn ngữ máy giúp trao đổi và thực hiện các yêu cầu đối với phần cứng nhanh hơn rất nhiều so với việc ngôn ngữ bậc cao phải biên dịch ra ngôn ngữ máy mới có thể giao tiếp với máy tính.
- Với ngôn ngữ máy, bạn sẽ không cần đến trình biên dịch code. Máy tính sẽ trực tiếp hiểu những gì bạn viết vào bằng ngôn ngữ máy.
- Khai thác được tối đa chức năng của phần cứng
Nhược điểm của ngôn ngữ máy
- Bạn sẽ phải nhớ toàn bộ code hoạt động và vận hành
- Tất cả các địa chỉ memory cũng phải được lưu lại
- Ngôn ngữ máy rất khó để con người làm việc cùng và bạn cũng sẽ rất khó để debug một chương trình viết bằng ngôn ngữ máy.
Bảng so sánh ngôn ngữ máy và hợp ngữ
Ngôn ngữ máy và hợp ngữ thường bị mặc định là có cùng cấp bậc. Do đó, Tino Group sẽ cung cấp một bảng so sánh ngôn ngữ máy và hợp ngữ để thấy sự khác biệt giữa 2 ngôn ngữ này nhé! Ngôn ngữ máy – Machine Language Hợp ngữ – Assembly Language Cấp độ Bậc thấp Bậc trung Cú pháp Sử dụng nhị phân 0 và 1 để viết chương trình. Sử dụng các ký tự chữ cái, số bằng tiếng Anh và cần phải chuyển qua ngôn ngữ máy để máy tính hiểu CPU và ngôn ngữ Máy có thể hiểu những gì bạn viết bằng ngôn ngữ máy một cách trực tiếp Bạn có thể hiểu những gì bạn viết ra, nhưng máy, CPU lại không hiểu chúng là gì Sự bảo toàn Code của hợp ngữ giống nhau trên bất kỳ máy tính, nền tảng nào Ngôn ngữ máy khác giữa nền tảng này với nền tảng khác Khả năng chỉnh sửa Khá dễ dàng Không hề dễ vì mã máy sẽ được viết cho từng loại CPU cụ thể.
Đến đây, Tino Group hi vọng rằng bài viết về “Ngôn ngữ máy là gì? Có nên sử dụng ngôn ngữ máy hay không?” đã bổ sung thêm những kiến thức bổ ích về ngôn ngữ máy cho bạn. Việc sử dụng ngôn ngữ máy khá khó khăn nhưng việc tìm hiểu về ngôn ngữ nền tảng sẽ không dư thừa đâu! Tino Group chúc bạn sẽ thành công trên con đường trở thành lập trình viên!
Những câu hỏi thường gặp về ngôn ngữ máy
Nên học ngôn ngữ lập trình nào?
Câu trả lời sẽ phụ thuộc vào mong muốn, mục đích của bạn. Nếu thích lập trình cho các thiết bị di động, Java, Ruby, Kotlin sẽ là những ngôn ngữ rất phù hợp với bạn đấy!
Phát triển game nên học những ngôn ngữ lập trình nào?
Nếu bạn muốn phát triển game, bạn nên sử dụng những ngôn ngữ “gần” với ngôn ngữ máy nhất để có thể tối ưu hóa phần cứng sử dụng như: C/C++, Java,…
Lập trình game có dễ hay không?
Có, nếu bạn thực hiện những game indie đơn giản, khối lượng công việc của bạn sẽ không quá nhiều. Tuy nhiên, nếu bạn đang nghĩ rằng sau khi học lập trình bạn sẽ có thể phát triển những tựa game AAA hay những tựa game phổ biến như như: Grand Theft Auto V, Call of Duty, Liên minh huyền thoại hay Geshin Impact,… điều này sẽ không dễ đâu. Thời gian thực hiện những dự án game AAA sẽ được tính bằng rất nhiều tháng và rất nhiều nhân lực.
Sự khác biệt giữa trình biên dịch và trình phiên dịch là gì?
Đừng nhầm hai khái niệm này là một nhé! Vì:
- Trình biên dịch được viết bằng các ngôn ngữ lập trình cao cấp khác như C hoặc C++ để dịch sang mã máy.
- Một số ngôn ngữ khác như Java, C# sẽ sử dụng con đường khác là dịch mã nguồn cao cấp thành một dạng trung gian được gọi là máy ảo (Ví dụ như máy ảo Java – JVM). Sau đó mã máy ảo sẽ trở thành đầu vào cho một chương trình thông dịch máy ảo mô phỏng CPU phần cứng.