[PyACC 4] Giới thiệu về ngôn ngữ lập trình
Định nghĩa ngôn ngữ lập trình
Đây là một định nghĩa mình tìm được trên mạng.
Ngôn ngữ lập trình (programming language) là dạng ngôn ngữ được chuẩn hóa theo một hệ thống các quy tắc riêng, sao cho qua đó người lập trình có thể mô tả các chương trình làm việc dành cho thiết bị điện tử mà cả con người và các thiết bị đó đều hiểu được.
Còn đây là cách mình hiểu về ngôn ngữ lập trình:
Ngôn ngữ lập trình có bản chất là một ngôn ngữ để con người nói chuyện + tương tác với máy tính. Mà đã là ngôn ngữ thì sẽ phải quy tắc để người ta có thể sử dụng được nó.
Công việc của các lập trình viên là họ phải học các quy tắc, cú pháp và cấu trúc ngôn ngữ rồi thực hiện viết mã nguồn trong một trình soạn thảo hoặc IDE và biên dịch code thành ngôn ngữ máy để máy tính có thể hiểu được.
Một số ngôn ngữ lập trình không yêu cầu trình biên dịch mà sử dụng các trình thông dịch để thực thi mã nguồn.
Top các ngôn ngữ theo mức độ phổ biến
Ngôn ngữ lập trình dùng để làm gì?
Ngôn ngữ lập trình có rất nhiều ứng dụng trong thực tế, dưới đây là top các ứng dụng của nó:
- Phát triển hệ điều hành cho các thiết bị điện tử.
- Phát triển các ứng dụng web, website.
- Phát triển ứng dụng chạy trên máy tính, điện thoại.
- Phát triển ứng dụng chạy trên các thiết bị gia dụng.
- Phát triển ứng dụng trí tuệ nhân tạo.
- Phát triển Cơ sở dữ liệu.
- Phân tích và hiển thị trực quan dữ liệu.
- Phát triển trò chơi điện tử.
- Viết tool tự động hóa các tác vụ.
- ......
Phân loại ngôn ngữ lập trình
Có một số cách phân loại ngôn ngữ lập trình, cụ thể dưới đây:
Phân loại theo mức độ gần gũi với con người
Cách phân loại này chia ngôn ngữ lập trình thành các nhóm khác nhau dựa trên việc nó có dễ đọc + hiểu đối với con người hay không.
Ngôn ngữ máy
- Ngôn ngữ máy – mã máy (machine language): là ngôn ngữ nền tảng của bộ vi xử lý. Các chương trình được viết trong tất cả các loại ngôn ngữ khác cuối cùng đều được chuyển thành ngôn ngữ máy trước khi chương trình đó được thi hành.
- Các chỉ thị trong ngôn ngữ máy được biểu diễn dưới dạng mã nhị phân. Đây là ngôn ngữ duy nhất mà bộ vi xử lí có thể nhận biết và thực hiện một cách trực tiếp.
Hợp ngữ
- Hợp ngữ (assembly language) là một ngôn ngữ lập trình bậc thấp, nó dùng các từ viết tắt trong tiếng Anh để viết chương trình. Ví dụ:
Input= nhập
;add = phép cộng
;sub = phép trừ
,.v.v.. - Hợp ngữ đã từng được dùng rộng rãi trong tất cả các khía cạnh lập trình, nhưng ngày nay nó có xu hướng chỉ được dùng trong một số lĩnh vực hẹp, chủ yếu để giao tiếp trực tiếp với phần cứng hoặc xử lý các vấn đề liên quan đến tốc độ cao. Điển hình như các trình điều khiển thiết bị, các hệ thống nhúng cấp thấp và các ứng dụng thời gian thực.
- Các nhược điểm: Chương trình còn cồng kềnh, phức tạp, khó nhớ , còn phụ thuộc vào loại thiết bị (vi xử lý).
Ngôn ngữ lập trình bậc cao
- Ngôn ngữ lập trình bậc cao (High-level programming language) là ngôn ngữ lập trình có hình thức gần với ngôn ngữ tự nhiên - nó dễ đọc + dễ hiểu nhất, có tính độc lập cao, ít phụ thuộc vào loại thiết bị (loại vi xử lý) cũng như các trình dịch.
- Một số ngôn ngữ lập trình bậc cao phổ biến hiện nay như: C, C++, C#, Java, Javascript, Python, Ruby...
Phân loại theo cách thức xây dựng và thực hiện chương trình
- Ngôn ngữ lập trình tuyến tính: Chương trình được thực hiện tuần tự từ đầu đến cuối, lệnh nào viết trước thì thực thi trước, viết sau chạy sau.
- Ngôn ngữ lập trình hướng cấu trúc: Chương trình chính được chia nhỏ thành các hàm hay chương trình con, mỗi chương trình con thực hiện một công việc xác định. Chương trình chính sẽ gọi chương trình con theo một giải thuật (quy trình) hoặc một cấu trúc được xác định trong chương trình chính. Các ngôn ngữ lập trình hướng cấu trúc phổ biến là: Pascal và C.
- Ngôn ngữ lập trình hướng đối tượng: Phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng giải thuật, chương trình. Các ngôn ngữ lập trình hướng đối tượng phổ biến: C#, C++, JAVA,…
"Lập trình hướng đối tượng có thể hiểu đơn giản là người ta coi tất cả những gì xuất hiện trong bài toán đang giải thành các đối tượng. Mỗi đối tượng có thuộc tính để lưu trữ giá trị và phương thức để thực hiện một logic nào đó."