Nêu nhược điểm của ngôn ngữ máy

Chia sẻ kiến thức 05/05/2022

  • Hợp ngữ là gì? Cách phân biệt giữa hợp ngữ và các ngôn ngữ bậc cao

>> Khóa học lập trình cơ bản

>> Kỹ thuật lập trình PHP

Khi tìm hiểu về lập trình, bạn sẽ được học về ngôn ngữ máy và ngôn ngữ lập trình bậc cao. Vậy cách phân biệt giữa hai ngôn ngữ này như thế nào ? 

1. Ngôn ngữ lập trình là gì?

Ngôn ngữ lập trình [programming language] là ngôn ngữ được phát triển và chuẩn hóa theo một hệ thống quy tắc riêng. Theo đó, lập trình viên sẽ thực hiện mô tả các chương trình làm việc đảm bảo cả con người và máy tính đều hiểu được nhau.

Ngôn ngữ lập trình dùng để viết các chương trình phần mềm, ứng dụng và cả website. Được biết, mỗi ngôn ngữ sẽ có những đặc điểm riêng bao gồm: cú pháp, từ vựng, ý nghĩa và mục đích.

Ngôn ngữ lập trình dùng để viết các chương trình phần mềm.

Hiện có 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].

Trong đó, hợp ngữ là một ngôn ngữ trung gian. Nó được hiểu là trên một cấp so với ngôn ngữ máy. 

Lưu ý:

  • Các ngôn ngữ muốn chạy được thì cần phải: biên dịch sang ngôn ngữ máy [C, C++, Assembler, Pascal…]. Hoặc phải được thông qua 1 hoặc 1 hệ chương trình để thông dịch thực thi [Java, Python, PHP, Perl…]
  • Đặc biệt, việc lựa chọn ngôn ngữ phù hợp rất quan trọng trong lập trình. Vì nó vừa ảnh hưởng đến bảo mật vừa liên quan đến sự thông dụng trong việc sửa chữa.

2. Cách phân biệt giữa ngôn ngữ máy và ngôn ngữ lập trình bậc cao

2.1 Ngôn ngữ máy 

Máy tính muốn giao tiếp được với phần cứng cần sử dụng ngôn ngữ máy [Machine Language]. Đây là ngôn ngữ duy nhất dùng viết chương trình, mà máy tính có thể hiểu ngay lập tức sau đó và được viết bằng mã nhị phân 0 – 1 hoặc mã hex. 

Cách phân biệt giữa hai ngôn ngữ.

Ưu điểm :

  • Có thể trao đổi và thực hiện các yêu cầu đối với phần cứng một cách nhanh chóng hơn.
  • Không cần sử dụng trình biên dịch code, máy tính vẫn sẽ trực tiếp hiểu những gì bạn viết ra.
  • Khai thác được tối đa chức năng của phần cứng.

Nhược điểm :

  • Phải nhớ toàn bộ code hoạt động và vận hành.
  • Phải lưu lại tất cả các địa chỉ memory.
  • Để debug một chương trình viết bằng ngôn ngữ máy là rất khó.

2.2 Ngôn ngữ lập trình bậc cao

Ngôn ngữ lập trình bậc cao là ngôn ngữ được lập trình với sự trừu tượng hóa mạnh mẽ từ các chi tiết của máy tính. Ngôn ngữ này có thể sử dụng các yếu tố ngôn ngữ tự nhiên, dễ sử dụng hơn hoặc tự động hóa các khu vực quan trọng của hệ thống máy tính. Chúng giúp quá trình phát triển chương trình trở nên đơn giản và dễ hiểu hơn. 

Ngôn ngữ lập trình bậc cao.

Ưu điểm của ngôn ngữ lập trình bậc cao:

  • Viết được các ứng dụng di động trên nhiều nền tảng khác nhau và độc lập với mọi kiến trúc.
  • Vì được viết gần với ngôn ngữ tự nhiên nên ngôn ngữ lập trình bậc cao được đánh giá là dễ hiểu hơn. 
  • Mức độ trừu tượng cao hơn so với các ngôn ngữ của máy tính.
  • Có thể sử dụng để viết phần mềm, chạy trên nhiều nền tảng và kiến trúc.
  • So với ngôn ngữ bậc thấp, ngôn ngữ này dễ sử dụng hơn.

Nhược điểm của ngôn ngữ lập trình bậc cao:

  • Không thể thực hiện tối ưu hóa hiệu suất hoặc dùng một số phần cứng nhất định.
  • Bộ nhớ tiêu thụ ở mức cao hơn.
  • Chương trình nhị phân có kích thước lớn hơn.
  • Phải dùng chương trình dịch để chuyển.

Tóm lại, những điểm khác biệt cơ bản giữa hai ngôn ngữ này bao gồm:

Ngôn ngữ máy

Ngôn ngữ lập trình bậc cao

  • Ngôn ngữ duy nhất mà máy tính có thể trực tiếp hiểu và thực hiện.
  • Các lệnh được viết ở dạng mã nhị phân hoặc mã hex.
  • Ngôn ngữ tương tự như ngôn ngữ tự nhiên, có tính độc lập cao, ít phụ thuộc vào loại máy.
  • Một số ngôn ngữ lập trình bậc cao: Pascal, C, Java, …
  • Ưu điểm: Khai thác hết tất cả các tính năng phần cứng của máy tính, có thể trực tiếp hiểu được mà không cần chương trình dịch.
  • Ưu điểm: Dễ hiểu, dễ chỉnh sửa, có tính độc lập cao.
  • Nhược điểm: Khó hiểu, khó ghi nhớ, sử dụng nhiều câu lệnh để biểu diễn các thao tác.
  • Nhược điểm: Cần dùng chương trình dịch để chuyển.

Như vậy, nội dung bài viết trên đây FUNiX vừa chỉ ra một số điểm khác biệt giữa ngôn ngữ máy và ngôn ngữ lập trình bậc cao. Mong rằng, những thông tin chia sẻ trên đây sẽ giúp bạn hiểu rõ hơn về hai ngôn ngữ này, từ đó biết cách ứng dụng sao cho phù hợp nhất!

Phạm Thị Thanh Ngọc

BÀI 5. NGÔN NGỮ LẬP TRÌNH

1. Khái niệm ngôn ngữ lập trình

- Cần diễn tả thuật toán bằng một ngôn ngữ mà máy tính có thể hiểu và thực hiện được. Ngôn ngữ đó được gọi là ngôn ngữ lập trình.

2. Phân loại ngôn ngữ lập trình

a. Ngôn ngữ máy

- Mỗi loại máy tính đều có ngôn ngữ máy riêng của nó. Là ngôn ngữ duy nhất mà máy có thể trực tiếp hiểu và thực hiện.

- Các lệnh viết bằng ngôn ngữ máy ở dạng mã nhị phân hoặc mã hexa

- Ưu điểm: Là ngôn ngữ duy nhất máy tính có thể trực tiếp hiểu và thực hiện, cho phép khai thác triệt để và tối ­ưu khả năng của máy. 

- Nhược điểm: 

  • Ngôn ngữ phức tạp, phụ thuộc nhiều vào phần cứng, ch­ương trình viết mất nhiều công sức, cồng kềnh và khó hiệu chỉnh.
  • Không thích hợp với số đông ng­ười lập trình.

b. Hợp ngữ

- Ưu điểm: 

  • Hợp ngữ cho phép người lập trình sử dụng một số từ [thường là các từ tiếng Anh viết tắt] để thể hiện các lệnh cần thực hiện.
  • Cho phép khai thác triệt để tính năng phần cứng.

- Nhược điểm: 

  • Thuận lợi cho các nhà lập trình chuyên nghiệp nhưng chưa thích hợp với số đông người lập trình.
  • Để máy tính hiểu cần có chương trình hợp dịch để chuyển hợp ngữ sang ngôn ngữ máy.

c. Ngôn ngữ bậc cao

- Là ngôn  ngữ gần với ngôn ngữ tự nhiên, có tính độc lập cao, ít phụ thuộc vào loại máy.

- Ưu điểm:

  • Dễ hiểu, dễ chỉnh sửa, tính độc lập cao.
  • Để máy tính hiểu được, cần phải có chương trình dịch để chuyển từ ngôn ngữ bậc cao sang ngôn ngữ máy.
  • Một số ngôn ngữ lập trình bậc cao: Pascal, C, Java, …

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.

QUẢNG CÁO

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ì.

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

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!

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,…

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.

Đừ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.

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

  • Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí Minh
    Văn phòng đại diện: 42 Trần Phú, Phường 4, Quận 5, Thành phố Hồ Chí Minh
  • Điện thoại: 0364 333 333
    Tổng đài miễn phí: 1800 6734
  • Email:
  • Website: www.tino.org

Video liên quan

Chủ Đề