STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

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

    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.
    25/08/2015
    15/09/2020
    8 phút đọc
    Thế nào là 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…

    0 Bình luận

    Đề xuất

    Tổng Quan về Ngôn Ngữ Lập Trình Java
    Java là 1 trong những ngôn ngữ lập trình mạnh mẽ, được sử dụng rộng rãi ...
    Những Ngôn Ngữ Lập Trình Phổ Biến
    Giới thiệu các ngôn ngữ lập trình đáng để học và phục vụ công việc, xây ...

    Khám phá

    Cyber Security - Khám Phá Thế Giới An Ninh Mạng và Ngôn Ngữ Lập Trình
    Tìm hiểu những ngôn ngữ lập trình hữu ích nhất dành cho mạng máy tính và ...
    Các Ngôn Ngữ Lập Trình Game
    Bài viết giới thiệu các ngôn ngữ lập trình game cho lập trình viên như ...
    03/07/2020
    Tổng Quan Về Ngôn Ngữ Lập Trình JavaScript
    Tìm hiểu tổng quan ngôn ngữ lập trình JavaScript và tầm quan trọng của ...
    14/11/2015
    C# - Vì Sao Lại Chọn C Sharp
    Ngôn ngữ lập trình C# được xây dựng bởi Microsoft có thiết kế mạnh mẽ có ...
    SOLID trong Lập Trình Hướng Đối Tượng
    SOLID trong lập trình hướng đối tượng có giá trị như thế nào trong việc ...
    Sơ Lược về Phong Cách Lập Trình
    Bài viết là một vài chia sẻ về cách hình thành phong cách lập trình để ...
    Học Lập Trình Nên Bắt Đầu Từ Đâu?
    Học lập trình nên bắt đầu từ đâu? Lựa chọn học từ nền tảng có phải luôn ...
    Automata và Ngôn ngữ hình thức
    Giới thiệu về Automata và Ngôn ngữ hình thức.
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích.. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020