✨Triển khai của ngôn ngữ lập trình

Triển khai của ngôn ngữ lập trình

Trong lập trình máy tính, một triển khai của ngôn ngữ lập trình là một hệ thống để thực thi chương trình máy tính. Có hai cách tiếp cận chung để triển khai một ngôn ngữ lập trình:

  • Thông dịch: chương trình được đọc bởi một trình thông dịch, sau đó thực hiện các hành động được viết trong chương trình.
  • Biên dịch: chương trình được đọc bởi một trình biên dịch, sau đó được dịch sang một số ngôn ngữ khác như bytecode hoặc mã máy. Mã đã được dịch có thể được thực thi trực tiếp bởi phần cứng hoặc phục vụ như đầu vào cho một trình thông dịch hoặc trình biên dịch khác.

Máy ảo

Một máy ảo là một loại trình thông dịch đặc biệt để thực thi bytecode. Để cải thiện độ hiệu quả, nhiều ngôn ngữ lập trình như Java, và C# được biên dịch thành bytecode trước khi được thông dịch.

Trình biên dịch just-in-time

Một số máy ảo bao gồm trình biên dịch just-in-time (JIT) để cải thiện hiệu quả thực thi bytecode. Trong khi bytecode đang được thực thi bởi máy ảo, nếu trình biên dịch JIT xác định rằng một phần bytecode sẽ được sử dụng nhiều lần thì nó sẽ biên dịch phần cụ thể đó thành mã máy. Sau đó, trình biên dịch JIT lưu mã máy vào bộ nhớ để máy ảo có thể sử dụng. Trình biên dịch JIT cố gắng đạt được sự cân bằng giữa thời gian biên dịch dài hơn và thời gian thực thi nhanh hơn.

Nếu trình biên dịch của một ngôn ngữ bậc cao nhất định tạo ra một ngôn ngữ bậc cao khác thì nó được gọi là trình chuyển mã. Trình chuyển mã có thể được sử dụng để mở rộng các ngôn ngữ hiện có hoặc để đơn giản hóa việc phát triển trình biên dịch bằng cách khai thác các triển khai di động và được tối ưu hóa tốt của các ngôn ngữ khác (chẳng hạn như C).

Nhiều triển khai

Ngôn ngữ lập trình có thể có nhiều triển khai. Các triển khai khác nhau có thể được viết bằng những ngôn ngữ khác nhau và có thể sử dụng nhiều phương thức để biên dịch hoặc thông dịch mã. VÍ dụ, các triển khai của Python bao gồm:

  • CPython, một triển khai tham khảo của Python
  • IronPython, một triển khai nhắm đến .NET Framework (được viết bằng C#)
  • Jython, một triển khai nhắm đến máy ảo Java
  • PyPy, một triển khai được thiết kế cho tốc độ (được viết bằng RPython)
👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong lập trình máy tính, một **triển khai của ngôn ngữ lập trình** là một hệ thống để thực thi chương trình máy tính. Có hai cách tiếp cận chung để triển khai một ngôn
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
**C#** (**C Sharp**, đọc là _"xi-sáp"_) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ.
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
**Kotlin** là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn Java hay sử dụng cơ sở hạ tầng trình biên dịch
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
**Swift** là một ngôn ngữ lập trình hướng đối tượng dành cho việc phát triển iOS và macOS, watchOS, tvOS và z/OS. được giới thiệu bởi Apple tại hội nghị WWDC 2014. Swift được mong
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
**Go** là một ngôn ngữ lập trình mới do Google thiết kế và phát triển. Nó được kỳ vọng sẽ giúp ngành công nghiệp phần mềm khai thác tối đa nền tảng đa lõi của
**Oberon** là một ngôn ngữ lập trình đa năng được xuất bản lần đầu tiên vào năm 1987 bởi Niklaus Wirth và là thành viên mới nhất của gia đình Wirth gồm các ngôn ngữ
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
**Ada** là ngôn ngữ lập trình xuất xứ từ Bộ quốc phòng Mỹ vào khoảng nửa đầu thập niên 80 của thế kỷ 20. Ngôn ngữ này được đặt tên theo Ada Augusta nữ bá
**APL** (được đặt tên theo cuốn sách _A Programming Language_) là một ngôn ngữ lập trình được phát triển vào những năm 1960 bởi Kenneth E. Iverson. Kiểu dữ liệu trung tâm của nó là
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
 // Dòng này sẽ
Trong công nghệ phần mềm và lý thuyết ngôn ngữ lập trình, **nguyên tắc trừu tượng** (tiếng Anh: _abstraction principle_ hay _principle of abstraction_) là một phương châm cơ bản nhằm giảm sự trùng lặp
**Lập trình lượng tử** là quá trình thiết kế hoặc ghép nối các chuỗi lệnh, được gọi là mạch lượng tử, sử dụng các cổng, công tắc và toán tử để điều khiển hệ thống
Trong lập trình hướng đối tượng, **lớp** (**class**) là một chương trình-mã-khuôn mẫu có thể mở rộng được để tạo các đối tượng, cung cấp giá trị khởi tạo cho trạng thái (biến thành viên)
**Ngôn ngữ biên dịch** (tiếng Anh: _compiled language_) là ngôn ngữ lập trình có triển khai thường là trình biên dịch (bộ dịch tạo ra mã máy từ mã nguồn), chứ không phải trình thông
frameless|right|UML logo **Ngôn ngữ mô hình hóa thống nhất** (tiếng Anh: _Unified Modeling Language_, viết tắt thành **UML**) là một ngôn ngữ mô hình gồm các ký hiệu đồ họa mà các phương pháp hướng
Trong ngành khoa học máy tính, **lập trình hàm** (**lập trình chức năng**) là một mô hình lập trình xem việc tính toán là sự đánh giá các hàm toán học và tránh sử dụng
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
**Bộ trình dịch GNU** ( - thường được viết tắt thành **GCC**) là một tập hợp các trình biên dịch được thiết kế cho nhiều ngôn ngữ lập trình khác nhau. GCC là một thành

**Ngôn ngữ kịch bản** () là ngôn ngữ lập trình cho môi trường thời gian chạy đặc biệt tự động hóa thực thi các tác vụ; các tác vụ thay thế có thể
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
Trong lập trình máy tính, **Hợp ngữ** (hay **assembly**) thường được viết tắt là **asm** là bất kỳ ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh
**Ngôn ngữ học** hay **ngữ lý học** là bộ môn nghiên cứu về ngôn ngữ. Người nghiên cứu bộ môn này được gọi là nhà ngôn ngữ học. Nói theo nghĩa rộng, nó bao gồm
phải|Biểu đồ hoạt động của một trình biên dịch lý tưởng. **Trình biên dịch** () hay **phần mềm biên dịch** là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh
nhỏ|phải|A [[Graphical user interface|GUI Chương trình "Hello World", viết bằng ngôn ngữ Perl]] nhỏ|phải|Có thể thực thi dòng mã ở máy điện tử cầm tay [[PlayStation Portable homebrew|PlayStation Portable Sony.]] nhỏ|phải|Thử máy [[CNC ở Perspex]]
John Warner Backus (3 tháng 12 năm 1924 - 17 tháng 3 năm 2007) là một nhà khoa học máy tính người Mỹ. Ông đã chỉ đạo nhóm phát minh và triển khai FORTRAN, ngôn
nhỏ|300x300px| [[Petr Mitrichev (trái) và Gennady Korotkevich (phải), hai lập trình viên thi đấu nổi tiếng trong một cuộc thi.]] **Lập trình thi đấu** () là một môn thể thao trí tuệ trong đó những
Trong khoa học máy tính, **trình thông dịch** () là một chương trình máy tính trực tiếp thực thi các lệnh được viết bằng một ngôn ngữ lập trình hay ngôn ngữ kịch bản, mà
**C++** (**C Plus Plus**, **CPP,** IPA: /siː pləs pləs/) là một ngôn ngữ lập trình đa năng bậc cao (high-level) được tạo ra bởi Bjarne Stroustrup như một phần mở rộng của ngôn ngữ lập
**Ngôn ngữ** là một hệ thống giao tiếp có cấu trúc được sử dụng bởi con người. Cấu trúc của ngôn ngữ được gọi là ngữ pháp, còn các thành phần tự do của nó
nhỏ|[[VirtualBox]] Trong khoa học máy tính, một **máy ảo** (**VM**) là một trình giả lập một hệ thống máy tính. Máy ảo dựa trên kiến trúc máy tính và cung cấp chức năng của máy
**Nguồn gốc ngôn ngữ** và quan hệ của ngôn ngữ đối với tiến hóa của loài người là chủ đề học thuật đã được bàn luận trong nhiều thế kỷ. Mặc dù vậy, ta vẫn
**ALGOL 68** (viết tắt của _Algorithmic Language 1968_) là ngôn ngữ lập trình máy tính dùng lệnh được coi là sự kế thừa của ngôn ngữ lập trình ALGOL 60, được thiết kế với mục
**PureBasic** là ngôn ngữ lập trình máy tính sử dụng thủ tục được phân phối thương mại và môi trường phát triển tích hợp dựa trên BASIC và được Fantaisie Software phát triển cho Microsoft
phải|Bản đồ ngôn ngữ của châu Âu (đơn giản hóa). **Ngôn ngữ học châu Âu** là ngành ngôn ngữ học khá mới mẻ, nghiên cứu về các ngôn ngữ tại châu Âu. Tuy nhiên, ở
**Erlang** ( ) là ngôn ngữ lập trình đa năng, đồng thời, là ngôn ngữ lập trình hàm, và là một hệ thống thu gom rác được phát triển tại Phòng thí nghiệm Khoa học
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**Ngôn ngữ LGBT** là môn nghiên cứu từ ngữ của cộng đồng LGBT. Các thuật ngữ liên quan hoặc đồng nghĩa phát triển bởi William Leap vào những năm 1990, bao gồm **ngôn ngữ màu
**OCaml** là dòng ngôn ngữ lập trình phổ dụng trong ngôn ngữ **Caml** (một dạng của ngôn ngữ lập trình ML), bắt đầu được Viện Nghiên cứu Khoa học Máy tính Quốc gia ở Pháp
**Sự triển khai** hoặc **sự thực hiện** () là sự hiện thực hóa một ứng dụng, hoặc sự thực thi một kế hoạch, ý tưởng, , thiết kế, , tiêu chuẩn, thuật toán, hoặc chính
**_The C Programming Language_** là một cuốn sách hướng dẫn lập trình ngôn ngữ C, tác giả Brian Kernighan và Dennis Ritchie, những người sau này đã thiết kế và triển khai ngôn ngữ này