✨Object Pascal

Object Pascal

Object Pascal chỉ đến một nhánh của phát sinh hướng đối tượng của Pascal, được biết đến chủ yếu với vai trò ngôn ngữ lập trình chính của Delphi.

Lịch sử ban đầu tại Apple

Object Pascal là một phần mở rộng của ngôn ngữ Pascal vốn được phát triển tại Apple Computer bởi một nhóm do Larry Tesler đứng đầu với sự tham vấn của Niklaus Wirth, là người tạo nên ngôn ngữ Pascal. Nó xuất phát từ một phiên bản hướng đối tượng của Pascal có tên gọi Clascal, được cài sẵn trên máy tính Lisa.

Object Pascal cần thiết để hỗ trợ cho MacApp, một phần mở rộng của khung ứng dụng Macintosh mà bây giờ được gọi là thư viện lớp. Phần mở rộng Object Pascal, và chính MacApp, được phát triển bởi Barry Haynes, Ken Doyle, và Larry Rosenstein, và được thử nghiệm bởi Dan Allen. Larry Tesler giám sát dự án từ rất sớm vào năm 1985 và trở thành sản phẩm vào năm 1986.

Một phần mở rộng Object Pascal cũng được triển khai trong Think Pascal IDE. IDE bao gồm trình biên dịch và trình soạn thảo với tô sáng cú pháp và kiểm tra, một trình gỡ lỗi mạnh mẽ và thư viện lớp. Nhiều lập trình viên thích Think Pascal hơn là cách triển khai Object Pascal của Apple bởi vì Think Pascal cung cấp sự tích hợp chặt chữ với công cụ của nó. Quá trình phát triển dừng lại sau phiên bản 4.01 bởi vì công ty bị mua lại bởi Symantec. Sau đó các lập trình viên rời khỏi dự án.

Apple bỏ hỗ trợ cho Object Pascal khi họ chuyển từ chip Motorola 68K sang kiến trúc PowerPC của IBM vào năm 1994. MacApp 3.0, cho nền tảng này, được viết lại bằng ngôn ngữ C++.

Thời đại của Borland và CodeGear

Vào năm 1986, Borland giới thiệu các phần mở rộng tương tự, cũng được gọi là Object Pascal, cho sản phẩm Turbo Pascal dành cho Macintosh, và vào năm 1989 cho Turbo Pascal 5.5 cho DOS. Khi Borland tái tập trung từ DOS sang Windows vào năm 1994, họ tạo nên người kế nhiệm cho Turbo Pascal, gọi là Delphi và giới thiệu một tập các phần mở rộng mới để tạo nên cái mà bây giờ gọi là ngôn ngữ Delphi.

Quá trình phát triển của Delphi được bắt đầu vào năm 1993 và phiên bản Delphi 1.0 được chính thức ra mắt ở Hoa Kỳ vào ngày 14 tháng 2 năm 1995. Trong khi mã nguồn sử dụng mô hình đối tượng của Turbo Pascal vẫn có thể được biên dịch, Delphi giới thiệu một cú pháp mới với từ khóa class để thay thế cho object, hàm tạo Create và một hàm hủy ảo Destroy (và ngược lại phải gọi các thủ tục NewDispose procedures), thuộc tính, con trỏ hàm, và các thứ khác. Những điều này lấy cảm hứng từ bản thảo đang được soạn thảo của Tổ chức tiêu chuẩn hóa quốc tế (ISO) cho phần mở rộng lập trình hướng đối tượng, nhưng có nhiều khác biệt với phương ngữ của Turbo Pascal (ví dụ như yêu cầu trong bản thảo rằng tất cả các phương thức phải ảo) đều bị bỏ qua.

Ngôn ngữ Delphi tiếp tục phát triển qua nhiều năm để hỗ trợ cho các cấu trúc như mảng động, tổng quát và phương thức ảo.

Các phiên bản

  • Borland sử dụng tên gọi Object Pascal cho ngôn ngữ lập trình trong các phiên bản đầu của Delphi, nhưng sau đó đổi tên thành ngôn ngữ lập trình Delphi. Tuy nhiên, các trình biên dịch mà tương thích với Object Pascal thường cố gắng để tương thích với mã nguồn Delphi. Vì Delphi được đăng kí nhãn hiệu, các trình biên dịch tương thích vẫn tiếp tục sử dụng tên Object Pascal.
  • Embarcadero Technologies, đã mua lại Delphi vào năm 2008, bán Delphi IDE dùng để biên dịch phương ngữ Delphi của Object Pascal sang Windows và macOS, iOS, Android và Web.
  • .NET hỗ trợ từ Delphi 8 đến Delphi 2005, Delphi 2006 và Delphi 2007, hiện tại đã được thay thế bằng ngôn ngữ khác, Oxygene (xem bên dưới), vốn không tương thích ngược hoàn toàn.
  • Ngôn ngữ lập trình Oxygene được phát triển bởi RemObjects Software nhắm đến Common Language Infrastructure, Java] Runtime Environment và khung [[Cocoa (API)|Cocoa của Apple cho iOS và macOS.
  • Dự án mã nguồn mở Free Pascal cho phép ngôn ngữ được biên dịch sang một loạt các hệ điều hành—bao gồm Linux (32-bit và 64-bit), FreeBSD, Classic Mac OS/macOS, Solaris, Win32, Win64 và Windows CE—cũng như cho các kiến trúc phần cứng khác nhau. Phiên bản đầu của Free Pascal cho iPhone SDK 2.x được ra mắt vào ngày 17 tháng 1 năm 2009. Hiện tại cũng có hỗ trợ cho ISA ARM.
  • Ngôn ngữ lập trình Smart Pascal nhắm đến JavaScript/ECMAScript và được sử dụng trong Smart Mobile Studio, được viết bởi Jon Lennart Aasenden và công bố bởi Optimale Systemer (2012). Ngôn ngữ này đơn giản hóa tốt cho việc phát triển HTML5 thông qua cách tiếp cận OOP và RAD (phát triển ứng dụng nhanh). Smart Pascal tích hợp chặt chẽ với các công nghệ được thiết lập như node.js, Embarcadero DataSnap và Remobjects SDK để mang đến các ứng dụng web máy khách/máy chủ hiệu suất cao. Nó cũng cho phép dễ dạo tạo ra những thành phần trực quan và thư việc dễ sử dụng lại. Phương ngữ Smart Pascal bắt nguồn từ ngôn ngữ DWScript- được mở rộng để tích hợp tôt shown với môi trường và thư viện JavaScript, như những phần "asm" vốn là thuần JavaScript nhưng có khả năng truy cập đến những kí hiệu Pascal, hay những lớp "ngoài" ("external") vốn được ánh xạ trực tiếp tới những lớp JavaScript nguyên mẫu. Smart Pascal giới thiệu tính năng thừa kế thực sự, các lớp, lớp một phần, giao diện, một bảng phương thức ảo và nhiều cấu trúc nâng cap khác vốn không phải là một phần mặc định của JavaScript.
  • MIDletPascal thì tập trung vào nền tảng Java byte-code. Lưu ý rằng Free Pascal cũng nhắm đến máy ảo Java (JVM), với nhiều tính năng phong phú hơn.
  • Ngôn ngữ lập trình Morfik Pascal được phát triển bởi Morfik và nhắm đến những ứng dụng web có hỗ trợ Ajax. trình biên dịch của Morfik được tính hợp vào trong IDE AppsBuilder của công ty và cho phép mã Object Pascal có thể được sử dụng để hiện thực thực mã được thực thi trong cả trình duyệt và máy chủ. Nó sử dụng trình biên dịch Free Pascal để sinh ra tập tin nhị phân nguyên bản từ Object Pascal.
  • Trình biên dịch mã nguồn mở GNU Pascal có sẵn từ front-end cho đến GNU bộ sưu tập trình biên dịch, hiện thực tiêu chuẩn ISO 7185 Pascal, và "hầu hết" tiêu chuẩn ISO 10206 Extended Pascal.
  • Ngoài ra còn có một trình biên dịch miễn phí [http://turbo51.com Turbo51], dùng để sản xuất mã cho các chip Intel 8051.
  • [http://www.wdsibyl.org WDSibyl] là một IDE và trình biên dịch mã nguồn mở tựa như Delphi dành cho Microsoft Windows và OS/2, và là một môi trường thương mại tương thích với Borland Pascal được phát hành bởi một công ty tên là Speedsoft mà sau này được phát triển thành một môi trường RAD giống như Delphi với tên gọi Sybil và sau đó được mã nguồn mở theo giấy phép GPL khi công ty đóng cửa. Hiện tại Wolfgang Draxler (WD) đang duy trì phần mềm. (Trình biên dịch được sử dụng nằm trong một tập tin DLL và không là mã nguồn mở).

Trình biên dịch

Các trình biên dịch Object Pascal có sẵn cho một loạt hệ điều hành và kiến trúc.

  • Delphi có lẽ là trình biên dịch được biết đến nhiều nhất. Nó kế thừa dòng sảnh phẩm Borland Pascal và Turbo Pascal vốn rất thành công. Nó nhắm vào Windows 9x, gia đình Windows NT, .NET Framework (Delphi 8, Delphi 2005–Delphi 2007), macOS (Delphi XE2 và sau này), iOS (Delphi XE2 và sau này, sinh ra tập tin nhị phân nguyên bản trên XE4 và sau này), Android (Delphi XE5 và sau này, sinh ra tập tin nhị phân nguyên bản trên XE5 và sau này). Sau này, sự hỗ trợ cho.NET trở thành một sản phẩm riêng biệt biết đến với tên gọi Oxygene (xem bên dưới).
  • Free Pascal Compiler (FPC) là một trình biên dịch Object Pascal mã nguồn mở hỗ trợ cho nhiều phương ngữ Pascal, bao gồm Turbo Pascal 7 và Delphi, cùng các ngôn ngữ khác. Hiện tại, FPC có thể sinh ra mã cho các bộ xử lý IA-32, x86-64, PowerPC, SPARC, và ARM, và cho nhiều hệ điều hành khác nhau, bao gồm Microsoft Windows, Linux, FreeBSD, Classic Mac OS, và macOS (với bộ tích hợp Xcode). Một số dự án riêng biệt tồn tại để tạo điều kiện phát triển ứng dụng nhanh với FPC, mà dự án nổi bật nhất là Lazarus IDE.
  • GNU Pascal (Một phần phân phối riêng của GNU Compiler Collection) Trong khi không chính thức hướng đến phương ngữ Delphi của Pascal, nó chưa một chế độ tương thích với Borland Pascal, và kết hợp rất chậm một vài tính năng của ngôn ngữ Delphi. Nó không phù hợp để biên dịch lại trực tiếp phần lớn mã Delphi, nhưng gây chú ý khi hỗ trợ mạnh mẽ cho các hệ điều hành và kiến trúc phần cứng.
  • Oxygene (trước đây gọi là Chrome) là một trình biên dịch Object Pascal từ RemObjects Software tích hợp vào Microsoft Visual Studio. Nó cũng cung cấp trình biên dịch dòng lệnh miễn phí chạy trực tiếp trong CLI. Nó là ba trình biên dịch trong một, mỗi trình biên dịch nhắm vào mỗi nền tảng khác nhau: Echoes cho .NET Framework, Mono, WinRT và Windows Phone 8, Cooper cho JDK và Android, và Nougat cho iOS và macOS.
  • MIDletPascal là một công cụ phát triển ứng dụng di động dùng để tạo ra bytecode cho Java ME.
  • PocketStudio là một IDE dựa trên Pascal cho Palm OS.
  • Smart Mobile Studio là một trình biên dịch chuyển mã nguồn Pascal sang JavaScript (Trình biên dịch mã nguồn-sang-mã nguồn)

Các sản phẩm cũ

  • Borland Kylix là một biến thể Linux của Delphi nhưng chỉ nhằm vào Linux chạy Intel 32-bit sử dụng Qt library. Nó không hoạt động với hầu hết các bản phân phối Linux hiện đại.
  • Virtual Pascal là một trình biên dịch 32-bit tương thích với Turbo Pascal- và Delphi nhằm vào OS/2 và Microsoft Windows, mặc dù nó cũng phát triển một phiên bản DOS+ Extender và một trình biên dịch chéo Linux thử nghiệm. Quá trình phát triển của trình biên dịch này dừng lại ở mức độ Delphi 2. Vào năm 2007, cùng với việc trang web chính thức ngừng hoạt động, Virtual Pascal cũng bị ngừng phát triển thêm.

Trình thông dịch

[http://www.remobjects.com/ps Pascal Script] (trước đây là InnerFuse) và [http://code.google.com/p/dwscript/ DWScript] (Delphi Web Script) là những trình thông dịch/scripting engine Object Pascal mã nguồn mở được viết bằng Delphi. Chúng hỗ trợ các tập con của Object Pascal. DWScript cũng có thể biên dịch mã Object Pascal sang mã JavaScript (Smart Pascal), và hỗ trợ biên dịch just-in-time.

Chương trình mẫu "Hello World"

Object Pascal của Apple

program ObjectPascalExample;

type THelloWorld = object procedure Put; end;

var HelloWorld: THelloWorld;

procedure THelloWorld.Put; begin ShowMessage('Hello, World!'); end;

begin New(HelloWorld); HelloWorld.Put; Dispose(HelloWorld); end.

Object Pascal của Turbo Pascal

Vẫn được hỗ trợ trong Delphi và Free Pascal. FPC cũng đóng gói các thư viện/đơn vị của riêng nói. Nhưng Delphi thì không. Free Pascal 2.0 được viết lại theo phương ngữ giống Delphi hơn.

Cấp phát dựa trên ngăn xếp

program ObjectPascalExample;

type THelloWorld = object procedure Put; end;

procedure THelloWorld.Put; begin WriteLn('Hello, World!'); end;

var HelloWorld: THelloWorld; { allocated on the stack and can be used without explicit allocation. } begin HelloWorld.Put; end.

Cấp phát dựa trên heap

program ObjectPascalExample;

type PHelloWorld = ^THelloWorld; THelloWorld = object procedure Put; end;

procedure THelloWorld.Put; begin WriteLn('Hello, World!'); end;

var HelloWorld: PHelloWorld; { this is a typed pointer to a THelloWorld }

begin New(HelloWorld); HelloWorld^.Put; Dispose(HelloWorld); end.

Ví dụ khác:

program ObjectPascalExample;

type PHelloWorld = ^THelloWorld; THelloWorld = object procedure Put; end;

procedure THelloWorld.Put; begin WriteLn('Hello, World!'); end;

var HelloWorld: PHelloWorld; { this is a typed pointer to a THelloWorld } HelloWorld2: ^THelloWorld; { this is a direct variable to a pointer of the THelloWorld type. This variable is type incompatible with PHelloWorld. } HelloWorld3: ^THelloWorld; { the compiler sees this as being type incompatible with HelloWorld2 and PHelloWorld. Using the pointer syntax is the only way to declare a type that is assignment compatible. } HelloWorld4: PHelloWorld; { this is type compatible with HelloWorld, but incompatible with the other two variables. } begin { This works in a similar way as the code above... but it demonstrates the disadvantage of not using a specific type. The type definition between two variables using the raw pointer based notation would be seen as "different" by the compiler. }

New(HelloWorld4); HelloWorld:= HelloWorld4; { this is valid - the type assignment is valid } HelloWorld2 = HelloWorld; { this would be a compiler error } {disposes left out for brevity}

New(HelloWorld3); HelloWorld:= HelloWorld3; { this would be a compiler error } HelloWorld2 = HelloWorld3; { this would be a compiler error } {disposes left out for brevity} end.

Đây là một khác biệt quan trọng để tạo ra, và có thể được nhìn nhận là một trong những khác biệt chính dẫn đến phong cách của Delphi để "ẩn" cấp phát heap và kí hiệu con trỏ từ lập trình viên. Delphi đã loại bỏ sự cần thiết của kiểu con trỏ và cú pháp con trỏ bổ sung, nhưng vẫn giữa lại cơ chế xây dựng rõ ràng.

Object Pascal của Delphi và Free Pascal

program ObjectPascalExample;

type THelloWorld = class procedure Put; end;

procedure THelloWorld.Put; begin Writeln('Hello, World!'); end;

var HelloWorld: THelloWorld; { this is an implicit pointer }

begin HelloWorld:= THelloWorld.Create; { constructor returns a pointer to an object of type THelloWorld } HelloWorld.Put; HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld } end.

Lưu ý rằng xây dựng đối tượng vẫn có sẵn trong Delphi và Free Pascal.

Object Pascal của Oxygene

namespace ObjectPascalExample;

interface

type ConsoleApp = class class method Main; end;

  THelloWorld = class
     method Put;
  end;

implementation

method THelloWorld.Put; begin Console.WriteLine('Hello, World!'); end;

class method ConsoleApp.Main; begin var HelloWorld:= new THelloWorld; HelloWorld.Put; end;

end.

Object Pascal của DWScript (còn gọi là Smart Pascal)

type THelloWorld = class procedure Put; begin PrintLn('Hello, World!'); end end;

var HelloWorld:= THelloWorld.Create;

HelloWorld.Put;

Lưu ý rằng hiện thực phương thức có thể được thực hiện ở vị trí riêng biệt như trong các phương ngữ Object Pascal khác.

Sự phát triển

Nhiều tính năng đã được giới thiệu liên tục trong Object Pascal với phần mở rộng tới Delphi và FreePascal. Trong phản ứng trước những chỉ trích, Free Pascal đã chấp nhận tổng quát hóa (generics) với cú pháp tương tự như Delphi, cung cấp chế độ tương thích với Delphi, và cả Delphi (một phần) và Free Pascal (rộng rãi hơn) đều hỗ trợ quá tải toán tử (operator overloading). Delphi cũng giới thiệu nhiều tính năng khác kể từ phiên bản 7 bao gồm tổng quát hóa. Trong khi FreePascal cố gắng để tương thích với Delphi ở chế độ tương thích Delphi, nó cũng thường giới thiệu nhiều tính năng mới cho ngôn ngữ mà không phải lúc nào cũng có sẵn trên Delphi.

👁️ 4 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Object Pascal** chỉ đến một nhánh của phát sinh hướng đối tượng của Pascal, được biết đến chủ yếu với vai trò ngôn ngữ lập trình chính của Delphi. ## Lịch sử ban đầu tại
**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
**Free Pascal Compiler** (**FPC**) là một trình biên dịch cho các ngôn ngữ lập trình có liên quan chặt chẽ, Pascal và Object Pascal. Nó là phần mềm tự do được phát hành theo Giấy
**Lazarus** là một IDE (Integrated Development Environment) được phát triển theo mô hình RAD (rapid application development - phát triển ứng dụng nhanh chóng). Sử dụng trình biên dịch Free Pascal. Được dùng để phát
**Delphi** là sản phẩm phần mềm sử dụng phương ngữ Delphi của ngôn ngữ lập trình Object Pascal và cung cấp môi trường phát triển tích hợp (IDE) để phát triển ứng dụng nhanh chóng
**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 khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
Trong lập trình hướng đối tượng (OOP), **vòng đời đối tượng** (tiếng Anh: _object lifetime_ hay _life cycle_) của một đối tượng là khoảng thời gian giữa việc tạo ra và hủy đi của đối
Mục đích của **danh sách các ngôn ngữ lập trình** này là bao gồm tất cả các ngôn ngữ lập trình hiện tại đáng chú ý, được sử dụng hiện tại và những ngôn ngữ
Trong ngôn ngữ máy tính, các **phép toán trên thao tác bit** (tiếng Anh: _bitwise operation_) là các phép toán được thực hiện trên một hoặc nhiều chuỗi bit hoặc số nhị phân tại cấp
[[Tập tin:Nexus 4.png|thumb| Nexus 4 là một trong những thiết bị "thân thiện với lập trình viên" thuộc dòng sản phẩm Google Nexus]] **Phát triển phần mềm Android** là quy trình tạo ra các ứng
Trong lập trình hướng đối tượng dựa trên lớp, **hàm tạo** (tiếng Anh: _constructor_, viết tắt: _ctor_) trong một lớp là một kiểu chương trình con đặc biệt được dùng để tạo ra đối tượng.
**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
Đâ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
**Cocoa** là giao diện lập trình ứng dụng hướng đối tượng gốc (API) của Apple cho hệ điều hành máy tính để bàn macOS. Cocoa bao gồm các khuôn khổ Foundation Kit, Application Kit và
Programming Paradigm hay **Phương thức lập trình** là một kiểu cơ bản của lập trình vi tính (Computer Programming). Paragigm với các khái niệm và sự trừu tượng dùng trong mô tả các thành phần
Trong lập trình hướng đối tượng, **hàm hủy** (tiếng Anh: _destructor_, viết tắt: _dtor_) là một phương thức được gọi tự động để hủy bỏ một đối tượng. Điều này xảy ra khi thời gian
Trong lập trình hướng đối tượng, **giao thức** (tiếng Anh: _protocol_) hay **giao diện** (_interface_) là một phương tiện phổ biến để các đối tượng không liên quan giao tiếp với nhau. Đây là định
**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
**Định dạng dấu phẩy động độ chính xác đơn** (đôi khi còn gọi là **FP32** hoặc **float32**) là một định dạng số máy tính, thường chiếm 32 bit trong bộ nhớ máy tính; nó có
**Lawrence Gordon Tesler** (24 tháng 4 năm 1945 – 17 tháng 2 năm 2020) là một nhà khoa học máy tính người Mỹ, làm việc trong lĩnh vực tương tác máy tính của con người.
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
**Đặc tính** (tiếng Anh: _property_), trong một số ngôn ngữ lập trình hướng đối tượng, là một loại đặc biệt của thành viên lớp, trung gian chức năng giữa một trường (hay thành viên dữ
**Quadro** là một thương hiệu card đồ họa của Nvidia nhắm đến các workstation chạy computer-aided design (CAD), mô phỏng hình ảnh (CGI),ứng dụng tạo nội dung số (DCC), tính toán khoa học và máy
**GeForce** là một thương hiệu của các đơn vị xử lý đồ họa (GPU) được thiết kế bởi NVIDIA. Kể từ loạt GeForce 30, đã có mười bảy lần lặp lại thiết kế. Các sản
**Unix** (; được đăng ký nhãn hiệu là **UNIX**) là một họ hệ điều hành máy tính đa nhiệm, đa người dùng được viết vào những năm 1960 và 1970 do một số nhân viê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**
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
**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
Đây là danh sách nguồn gốc các thuật ngữ liên quan đến máy tính (hay **danh sách từ nguyên thuật ngữ máy tính**). Nó có liên quan đến cả phần cứng và phần mềm máy
**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ọ.
NetBeans IDE 5.0, một môi trường phát triển hợp nhất nguồn mở. **Môi trường phát triển tích hợp** (tiếng Anh: _integrated development environment_; viết tắt: _IDE_) còn được gọi là "_Môi trường thiết kế hợp
**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
**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
Trong lập trình máy tính, **callback** là một đoạn code chạy được (thường là một hàm A) được sử dụng như tham số truyền vào của hàm B nào đó. Hàm A được gọi ngay