Search…

Thế nào là Ngôn ngữ Lập trình?

15/09/20208 min read
Tìm hiểu cách máy tính làm việc của máy tính thông qua ngôn ngữ lập trình.

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

Chương trình máy tính là một chuỗi các lệnh được sắp xếp theo thứ tự để xử lý dữ liệu được đưa vào để cho ra kết quả. Mỗi lệnh sẽ được quy định bởi một chuỗi nhị phân và máy tính sẽ dò theo chuỗi này để thực thi các lệnh. Việc viết chuỗi nhị phân để sinh ra một chương trình có ích sẽ tốn rất nhiều thời gian và công sức.

Ví dụ:

Một chương trình xuất ra màn hình dòng chữ “Hello Stdio” đơn giản nhất tôi viết bằng hợp ngữ trên Linux (tôi sẽ giải thích thuật ngữ này sau) sau khi biên dịch thành file nhị phân có dung lượng 688 KB. Việc này đồng nghĩa với việc nếu viết bằng ngôn ngữ máy, tôi phải gõ 688*8*1024 = 5 636 096 con số 0 hoặc 1. 5 636 096 con số để viết chương trình như trên thì công sức để tạo ra một game như League of Legend sẽ trở nên vô cùng khó khăn. Vì vậy, các nhà phát triển chip đã quy định mỗi lệnh máy tương ứng với một cách viết gợi nhớ bằng Tiếng Anh. Ví dụ đối với đoạn mã máy:

10110000 01100001 sẽ tương đương với cách viết MOV AL, 61h

Đoạn chương trình này khởi tạo giá trị cho thanh ghi AL bằng giá trị 0x61. Cách viết trực quan như trên gọi là hợp ngữ. Cách viết này thân thiện hơn với người lập trình, nhưng để tạo ra một chương trình lớn vẫn là một điều khó khăn. Giả sử mỗi lệnh hợp ngữ tương đương với 4 byte mã máy. Để tạo ra chương trình tôi vừa đề cập ở trên, bạn phải gõ 5 636 096/4 = 1 409 204 lệnh.

Chính sự khó khăn trên đã thôi thúc các nhà phát triển nghĩ ra cách để có thể viết chương trình nhanh hơn, tiết kiệm được cả thời gian và công sức. Đó là lý do ra đời ngôn ngữ lập trình cấp cao. Đối với ngôn ngữ lập trình cấp cao, các bạn chỉ cần 1 đến 2 dòng codes là có thể tạo ra chương trình như trên. Ví dụ về ngôn ngữ lập trình cấp cao, để xuất dòng chữ “Hello Stdio” ra màn hình, công việc của các bạn rất đơn giản. Nếu viết bằng ngôn ngữ lập trình Python, bạn chỉ cần gõ: print “Hello Stdio”. Nếu viết bằng ngôn ngữ lập trình C++, bạn phải gõ nhiều hơn một chút, nhưng vẫn có thể chấp nhận được.

#include <iostream>
using namespace std;
int main()
{
	cout << "Hello Stdio";
	return 0;
}

Lịch sử phát triển

Những ngôn ngữ lập trình đầu tiên thiết kế để giao tiếp với tập lệnh máy vi tính được viết vào những năm 1950. Một trong những ngôn ngữ được ra đời từ sớm là Plankalkül (Plan Calculus) được viết bởi Konrad Zuse giữa năm 1943 và 1945. Đây là hàm trả về số lớn hơn khi truyền vào 2 số được viết bằng Plankalkül:

P2 max (V0[:8.0],V1[:8.0]) → R0[:8.0]
	V0[:8.0] → Z1[:8.0]
	(Z1[:8.0] < V1[:8.0]) → V1[:8.0] → Z1[:8.0]
	Z1[:8.0] → R0[:8.0]
END

Ngôn ngữ này mặc dù còn rất thô sơ nhưng nó thật sự là một bước tiến lớn so với hợp ngữ. Như các bạn thấy, Plankalkül cho phép chúng ta:

  • Định nghĩa hàm
  • Thực hiện phép gán một biến (qua toán tử →)
  • Cấu trúc điều kiện
  • (Điều kiện) → giá trị khi điều kiện đúng → giá trị khi điều kiện sai

Cách viết trên quá tiện lợi so với việc phải thao tác trên từng thanh ghi, ô nhớ…

Năm 1949, ngôn ngữ lập trình Short Code được ra đời. Đây là ngôn ngữ đầu tiên cho các thiết bị điện tử.

Năm 1951 là năm đã đánh dấu nền móng cho những ngôn ngữ hiện đại ngày nay. Trong năm này, Grace Hopper đã viết trình biên dịch đầu tiên. Trình biên dịch là chương trình giúp chuyển đổi những lệnh được viết bằng ngôn ngữ lập trình cấp cao sang mã nhị phân chạy trực tiếp trên máy vi tính. Điều này giúp cho quá trình phát triển phần mềm nhanh hơn.

Năm 1957, ngôn ngữ lập trình FORTRAN ra đời. Tên của nó có nghĩa là Hệ thống dịch các biểu thức toán học (FORmula TRANslating system). Ngôn ngữ này được IBM thiết kế để tính toán các biểu thức khoa học. Những kiểu dữ liệu cơ bản trong các ngôn ngữ lập trình hiện nay đều xuất phát từ FORTRAN, bao gồm kiểu dữ liệu logic (ĐÚNG hoặc SAI), số nguyên, số thực…

FORTRAN ra đời chỉ phục vụ cho việc thao tác trên những con số, nó không phải là ngôn ngữ lý tưởng để xử lý nhập/xuất. Năm 1959, COBOL được phát triển để lấp đầy khoảng trống này. Kiểu dữ liệu của COBOL chỉ có số và chuỗi ký tự. Nó cho phép nhóm các dữ liệu này thành một mảng (tập hợp nhiều số hoặc chuỗi ký tự liên tục nhau) và hồ sơ (record) giúp quản lý dữ liệu tốt hơn.

Năm 1958, John McCarthy của MIT đã tạo ra ngôn ngữ LISP (LISt Processing). Nó được thiết kế để nghiên cứu trí tuệ nhân tạo. Đúng với cái tên của nó, ở phiên bản đầu tiên, LISP chỉ hỗ trợ một kiểu dữ liệu duy nhất là danh sách (list); giữa năm 1960, LIST hỗ trợ thêm những kiểu dữ liệu khác mảng, vector, chuỗi…

Cũng trong năm 1958, ngôn ngữ lập trình Algol được tạo ra. Ngôn ngữ này là tiền thân cho những ngôn ngữ như Pascal, C, C++ và Java… Algol cũng đã đưa ra một số khái niệm rất nổi tiếng hiện nay, tiêu biểu trong đó là hàm đệ quy.

Năm 1968, Pascal ra đời, được thiết kế bởi Niklaus Wirth. Nó được phát triển với mục đích tạo ra những công cụ tốt hỗ trợ cho việc giảng dạy, tiêu biểu là trình khử lỗi (debugger). Pascal cũng đã đưa ra nhiều khái niệm được dùng phổ biến hiện nay như cấu trúc dữ liệu con trỏ (pointer), cấu trúc lựa chọn (switch…case).

Năm 1972, Dennis Ritchie đã sáng tạo ra ngôn ngữ lập trình C, ngôn ngữ này là một trong những ngôn ngữ được sử dụng phổ biến nhất hiện nay. Phát triển song song với hệ thống Unix, C đã phát triển nhiều tính năng nâng cao như cấp phát động, đa luồng (multithreading), tạo tiến trình con (forking), xử lý ngắt (interrupt handling), nhập/xuất (input/output)… C cũng được dùng để phát triển các hệ điều hành như Unix, Windows, MacOS, và Linux.

Những năm từ 1970 đến 1980, một phương thức lập trình mới được phát triển. Nó được biết với cái tên Lập trình hướng đối tượng (Object Oriented Programming). Tâm đắc với cách lập trình này, Bjarne Stroustroup đã phát triển một ngôn ngữ lập trình mới. Ngôn ngữ này kế thừa những tính năng của ngôn ngữ C và hỗ trợ thêm lập trình hướng đối tượng. Ông đặt tên cho nó là C++, phiên bản đầu tiên của C++ được công bố năm 1983.

Sau giai đoạn này, hàng loạt những ngôn ngữ lập trình mới ra đời đã hỗ trợ nhiều tính năng giúp lập trình viên lập trình nhanh hơn gấp nhiều lần. Những tính năng này gồm có kiểu dữ liệu động (dynamic data type), hàm nặc danh (anonymous function), biểu thức chính quy (regular expression)… Một trong số những ngôn ngữ đó là Python, Perl, Ruby, PHP, Javascript…

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

Cách phân loại các ngôn ngữ lập trình phổ biến nhất hiện nay là phân loại theo kiểu lập trình (programming paradigm). Một ngôn ngữ lập trình có thể hỗ trợ một hoặc nhiều kiểu lập trình khác nhau. Các kiểu lập trình phổ biến nhất hiện nay gồm có:

Lập trình hướng thủ tục

Kiểu lập trình này cho phép lập trình viên mô tả một chuỗi liên tục các thao tác trên máy vi tính. Phương pháp thủ tục chia một chương trình lớn thành các khối chức năng hay thủ tục (hàm) đủ nhỏ để dễ lập trình và kiểm tra. Mỗi hàm có một điểm bắt đầu và một điểm kết thúc và có dữ liệu và logic riêng. Các ngôn ngữ sử dụng kiểu lập trình này như Cobol, Pascal, C…

Lập trình hướng đối tượng

Lập trình hướng đối tượng là kiểu lập trình dựa trên khái niệm đối tượng. Đối tượng là tập hợp các dữ liệu liên quan đến người (hoặc vật) và các thao tác (hành động) trên dữ liệu đó. Trong kiểu lập trình này, lập trình viên cần phải mô tả các đối tượng, tạo ra các đối tượng và xử lý quá trình tương tác giữa các đối tượng đó. Cách viết này gần gũi với con người hơn vì mỗi đối tượng gắn liền với một người (hoặc vật) trong tự nhiên. Các ngôn ngữ sử dụng kiểu lập trình này như C++, Java, Python…

Lập trình Logic

Lập trình logic là kiểu lập trình dạng đặc tả. Lập trình viên không cần phải viết luồng chương trình rõ ràng như các kiểu lập trình khác. Lập trình logic cho phép lập trình viên định nghĩa các câu logic, mối quan hệ của chúng và các suy diễn có thể xảy ra. Giải bài toán sử dụng lập trình logic là cách đặt câu hỏi để hệ thống tự động tìm câu trả lời. Các ngôn ngữ sử dụng kiểu lập trình này như Prolog, Datalog…

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024