Các loại ngôn ngữ lập trình khác nhau là gì?
Có nhiều cách để phân biệt các ngôn ngữ lập trình. Để bắt đầu, chúng rơi vào các mô hình khác nhau: chức năng, hướng đối tượng và hơn thế nữa.
Bạn cũng có thể phân loại ngôn ngữ lập trình theo phương pháp dịch của nó, một thứ có ảnh hưởng lớn đến hiệu suất của ngôn ngữ. Các ngôn ngữ lập trình được biên dịch thường nhanh hơn các ngôn ngữ được thông dịch. Vì vậy, trong những tình huống như phát triển trò chơi đòi hỏi tốc độ, các nhà phát triển có xu hướng sử dụng các ngôn ngữ biên dịch.
Mục Lục
Dịch là gì?
Quá trình dịch chuyển mã do lập trình viên viết thành mã máy mà máy tính có thể thực thi. Mã máy là một loại ngôn ngữ cấp thấp, có các ngôn ngữ chính và số không. Vì vậy, những gì người dịch làm là chuyển đổi mã cấp cao mà bạn tạo trong một ngôn ngữ lập trình thành mã máy.
Nếu không có người dịch, bạn sẽ phải viết mã bằng ngôn ngữ máy. Mỗi ngôn ngữ lập trình cấp cao mà bạn biết sử dụng một trong ba phương pháp dịch: trình biên dịch, trình thông dịch hoặc kết hợp của hai phương pháp này.
Trình biên dịch là gì?
Trình biên dịch là phần mềm chuyển đổi mã nguồn được viết bằng ngôn ngữ cấp cao thành mã cấp thấp để thực thi.
Sơ đồ trên đại diện cho một trình biên dịch ở dạng cơ bản nhất của nó. Trình biên dịch có một số giai đoạn. Mỗi giai đoạn chuyển đổi mã từ trạng thái này sang trạng thái khác. Mục tiêu của mỗi giai đoạn biên dịch là tạo ra một đầu ra dễ dàng hơn cho giai đoạn tiếp theo thao tác. Cấu trúc chung của một trình biên dịch như sau:
- Máy quét: giai đoạn này lấy một luồng ký tự và nhóm chúng thành các mã thông báo đại diện cho số nhận dạng, ký tự chuỗi, v.v.
- Phân tích cú pháp: giai đoạn này nhóm các mã thông báo dựa trên ngữ pháp của ngôn ngữ lập trình nguồn. Nó tạo ra một cây cú pháp trừu tượng là một tập hợp các biểu thức tạo nên chương trình.
- Ngữ nghĩa: giai đoạn này tiến hành phân tích ngữ nghĩa trên cây cú pháp trừu tượng (AST). Nó sử dụng các quy tắc của ngôn ngữ nguồn để thêm ý nghĩa bằng cách gán các kiểu cho các biểu thức AST và kiểm tra tính hợp lệ của chúng. AST sau đó trở thành đại diện trung gian.
- Biểu diễn trung gian (IR): giai đoạn này chuyển đổi mã nguồn của chương trình ban đầu sang mã máy. Nó tạo ra một phiên bản đơn giản của mã lắp ráp. IR sử dụng một hoặc nhiều trình tối ưu hóa để cải thiện mã IR và thu thập thông tin cho máy đang chạy. Trình tối ưu hóa có thể làm cho một chương trình hiệu quả hơn, nhanh hơn hoặc thậm chí nhỏ hơn.
- Code Generator: giai đoạn này sử dụng mã IR được tối ưu hóa và chuyển nó thành mã máy.
Ngôn ngữ lập trình nào sử dụng trình biên dịch?
Một số ngôn ngữ lập trình biên dịch phổ biến bao gồm:
- C
- C ++
- Đi
- Ada
- Fortran
- COBOL
- Lisp
- Objective-C
- Nhanh
Một lợi thế khi sử dụng ngôn ngữ biên dịch là nó xác định được các lỗi trong quá trình biên dịch. Điều này cho phép bạn sửa các lỗi như vậy và sau đó thử biên dịch lại chương trình. Các ngôn ngữ đã biên dịch ít có khả năng bị lỗi hơn khi chúng bắt đầu thực thi. Những ngôn ngữ này thậm chí sẽ không tạo ra một chương trình để chạy nếu mã nguồn có lỗi cú pháp. Nhưng lỗi ngữ nghĩa và các dạng lỗi thời gian chạy khác sẽ vượt qua nó.
Các ngôn ngữ biên dịch cũng thực thi rất nhanh sau khi biên dịch.
Thông dịch viên là gì?
Trình thông dịch là một chương trình dịch và thực thi một dòng mã tại một thời điểm. Quá trình này lặp lại cho đến khi trình thông dịch đến dòng mã cuối cùng trong chương trình hoặc tập lệnh nhất định.
Như bạn có thể thấy từ sơ đồ trên, một trình thông dịch sử dụng hai đầu vào. Đầu tiên, nó lấy toàn bộ mã nguồn (chương trình). Sau đó, nó đọc dòng đầu tiên của chương trình (như một đầu vào), dịch và thực thi nó. Nếu dòng đó thực thi đúng, nó sẽ chuyển sang dòng tiếp theo trong chương trình hoặc tập lệnh.
Không giống như trình biên dịch, trình thông dịch không dịch toàn bộ chương trình thành mã máy. Thay vào đó, nó phân tích cú pháp và phân tích một dòng mã nhất định trước khi thực thi. Một trình thông dịch nên bắt đầu chạy một chương trình — đặc biệt là một chương trình lớn hơn — trước khi một trình biên dịch thậm chí đã hoàn thành việc dịch nó.
Ngôn ngữ lập trình nào sử dụng thông dịch viên?
Một số ngôn ngữ lập trình thông dịch phổ biến bao gồm:
- Python
- JavaScript
- Perl
- MATLAB
- NỀN TẢNG
Mặc dù một trình thông dịch bắt đầu thực thi mã nhanh hơn, nó vẫn sẽ không thành công nếu gặp lỗi. Là một lập trình viên, bạn sẽ cần phải sửa một lỗi như vậy và khởi động lại chương trình. Sự kiện này xảy ra mỗi khi trình thông dịch gặp lỗi mới. Một số lỗi có thể nằm im nếu chúng liên quan đến một số trường hợp hiếm gặp. Trong những trường hợp như vậy, việc kiểm tra là quan trọng hơn bao giờ hết.
Các trình thông dịch thường dễ phát triển hơn trình biên dịch và các chương trình của chúng có tính linh động hơn theo thiết kế.
Dịch thuật lai ghép là gì?
Bản dịch kết hợp sử dụng một trình biên dịch và một trình thông dịch. Bản dịch kết hợp biên dịch mã nguồn cấp cao sang dạng cấp thấp hơn, chẳng hạn như mã bytecode. Sau đó, nó sử dụng một trình thông dịch để chạy mã bytecode đó.
Bản dịch hỗn hợp có thể khác với ngôn ngữ lập trình này sang ngôn ngữ lập trình khác nhưng sẽ sử dụng cấu trúc chung này. Một trong những ngôn ngữ lập trình phổ biến hơn sử dụng dịch thuật lai là Java. Trình biên dịch Java dịch mã nguồn của nó thành mã bytecode của Máy ảo Java (JVM). Sau đó, trình thông dịch sẽ dịch mã bytec của JVM sang mã máy.
Ngôn ngữ lập trình nào sử dụng dịch thuật kết hợp?
Một số ngôn ngữ lập trình kết hợp phổ biến bao gồm:
- Java
- C#
- Ngôn ngữ lập trình
- Erlang
- F #
Với bản dịch kết hợp, bạn sẽ có được những gì tốt nhất của cả hai thế giới. Việc biên dịch mã trước cho phép bạn giải quyết các lỗi trong thời gian sớm nhất. Mã bytecode mà trình biên dịch hỗn hợp tạo ra dễ hiểu hơn mã nguồn chương trình cấp cao.
Giá trị của việc biết các phương pháp dịch khác nhau
Bạn nên hiểu phương pháp dịch cụ thể mà một ngôn ngữ sử dụng, đặc biệt nếu bạn đang sử dụng nó cho một dự án mới. Phương pháp dịch ngôn ngữ là một phần chính trong danh tính của ngôn ngữ lập trình. Nó có thể ảnh hưởng đến cách bạn phân phối chương trình của mình và cách người dùng sẽ chạy nó.
Mỗi cách tiếp cận dịch thuật đều có giá trị riêng của nó. Các ngôn ngữ lập trình hàng đầu như C ++, Python và Java đều sử dụng các phương pháp dịch khác nhau. Cùng với mô hình của một ngôn ngữ, phương pháp dịch của nó là một trong những đặc điểm quan trọng nhất mà bạn nên biết.
Có một số mô hình mà một ngôn ngữ lập trình có thể sử dụng. Hầu hết các ngôn ngữ lập trình hàng đầu là ngôn ngữ đa mô hình; họ hỗ trợ việc sử dụng hai hoặc nhiều mô hình khác biệt. Ba trong số các mô hình phổ biến nhất là lập trình mệnh lệnh, hướng đối tượng và chức năng.