Khái niệm cơ sở

Ngôn ngữ máy và ngôn ngữ lập trình

  1. Ngôn ngữ - Language

    Ngôn ngữ nói chung là tập hợp các quy tắc cho phép các thực thể giao tiếp với nhau; thực thể ở đây có thể là con người, máy móc, hoặc thiết bị, v.v. Giả sử một người Việt Nam muốn nói chuyện với một người Nhật, giữa họ cần một ngôn ngữ để hai bên có thể sử dụng để biểu đạt và hiểu những gì đối phương của mình đang nói; nếu họ dùng tiếng Anh, điều chắc chắn là hai người cần nắm được từ vựng, quy tắc cũng như cấu trúc của tiếng Anh.

  2. Ngôn ngữ máy - Machine Language

    Ngôn ngữ máy là tập hợp các chỉ thị mà máy móc có thể hiểu và xử lý trực tiếp, mỗi chỉ thị được coi là một lệnh và mỗi lệnh thực hiện một chức năng ví dụ như lệnh nhân, lệnh chia, lệnh cộng, lệnh trừ, v.v. Chúng ta sử dụng các lệnh này để tạo ra các chương trình điều khiển máy móc ví dụ như giải toán, phân tích dữ liệu hoặc các yêu cầu khác.

    Thiết bị có thể hiểu và thực thi các câu lệnh nói trên được gọi là vi xử lý, với máy tính thiết bị này thường được biết đến là bộ vi xử lý trung tâm hay viết tắt là CPU - Central Processing Unit.

    Nhìn chung mỗi loại vi xử lý có một bộ lệnh riêng, do đó khi lập trình cho loại vi xử lý nào chúng ta cần tìm hiểu bộ lệnh của loại vi xử lý đó theo tài liệu đặc tả của nhà sản xuất.

    Trong thực tế ngoại trừ trường hợp lập trình ở mức thấp (Lập trình hệ thống, lập trình nhúng, lập trình cho các trình điều khiển thiết bị, v.v.) hầu hết chúng ta không làm việc trực tiếp với các lệnh của vi xử lý.

  3. Ngôn ngữ lập trình - Programming Language

    Giả sử rằng chúng ta cần tính kết quả của phép toán 21, phép toán này đơn giản và ai cũng biết kết quả là 2; Với 210 có vẻ phức tạp hơn một chút nhưng chúng ta vẫn tính được khá nhanh chóng với kết quả là 1024; Khi phép toán là 2100 thì việc tính toán sẽ mất rất nhiều thời gian và đây là một trong những lý do chúng ta cần tới sự hỗ trợ của máy tính.

    Máy tính được cấu tạo từ các linh kiện điện tử và có thể xử lý trực tiếp dữ liệu dạng nhị phân (Là chuỗi các số 0 và 1 liên tiếp nhau) rất dễ dàng; Ngược lại con người rất khó khăn khi làm việc với dữ liệu nhị phân, do đó ngôn ngữ lập trình ra đời để giúp con người giao tiếp với máy tính thuận tiện và đơn giản hơn.

    Ngôn ngữ lập trình cho phép chúng ta yêu cầu máy tính thực hiện công việc bằng cách viết ra yêu cầu theo trình tự và quy tắc nhất định, trình tự và các quy tắc này được thiết kế và thể hiện gần với ngôn ngữ tự nhiên mà con người có thể hiểu được dễ dàng.

    Trở lại ví dụ tính toán 2100, trước hết chúng ta sử dụng một ngôn ngữ lập trình để viết một chương trình tính 2100 - công việc này được gọi là viết mã nguồn. Khi hoàn thành chương trình, chương trình cần được chuyển đổi từ ngôn ngữ chúng ta viết tức là mã nguồn sang ngôn ngữ mà máy có thể hiểu được gọi là mã máy, việc chuyển đổi này được gọi là dịch mã nguồn.

    Sau khi dịch mã nguồn thành công, máy tính sẽ hiểu được những gì chúng ta yêu cầu. Khi thực thi chương trình, máy tính sẽ xử lý và trả về kết quả theo logic của chương trình chúng ta đã viết.

    Đến đây chúng ta đã hiểu thế nào là ngôn ngữ máy và ngôn ngữ lập trình, hai loại ngôn ngữ này được gọi chung là ngôn ngữ máy tính - Computer Language.

  4. Phân loại ngôn ngữ máy tính

    Căn cứ vào mức độ thân thiện, ngôn ngữ máy tính được chia thành ba nhóm dưới đây:

    • Ngôn ngữ máy - Machine Language: Là loại ngôn ngữ cấp thấp nhất, chỉ bao gồm các mã nhị phân 0 và 1 - được sử dụng trực tiếp bởi CPU và các thiết bị phần cứng.
    • Hợp ngữ - Assembly Language: Hợp ngữ là loại ngôn ngữ lập trình cấp thấp, dễ sử dụng hơn so với ngôn ngữ máy - thường được sử dụng để lập trình hệ thống, lập trình điều khiển thiết bị phần cứng, v.v.
    • Ngôn ngữ bậc cao - High Level Language: Đây là loại ngôn ngữ lập trình được sử dụng rộng rãi nhất. Hiện nay có hàng chục ngôn ngữ lập trình được thiết kế để tối ưu cho từng loại công việc. Các ngôn ngữ lập trình phổ biến hiện nay như C, C++, C#, Java, Javascript, v.v.