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á tước xứ Lovelace (1815 – 1852), nhà toán học với ý tưởng tiên phong coi phần cứng và phần mềm là hai mặt khác nhau đã đi vào lịch sử như lập trình viên đầu tiên của loài người.
Nhu cầu của Lầu Năm Góc lúc đó là một ngôn ngữ lập trình duy nhất thay thế cho khoảng 500 ngôn ngữ dùng cho các hệ thống nhúng (embedded). Đặc trưng của các hệ thống như thế là phần cứng đa dạng, phần cứng liền với phần mềm, phần mềm hệ thống liền với phần mềm ứng dụng, thời gian sử dụng lâu dài, tính chất thời gian thực (real-time) và độ bền cao (high-integrity) thể hiện rõ, nhiều hệ thống nhúng là hệ phân tán (distributed).
Ngôn ngữ lập trình đáp ứng những yêu cầu đó phải chặt chẽ, nhỏ gọn nhưng có sức biểu diễn lớn, viết mã nguồn dễ đọc, sinh mã đích hiệu quả.
Vì thế Ada xuất phát từ Pascal, nhưng kiểm tra kiểu mạnh hơn. Mở rộng kiểu (type extension), kế thừa (inheritance) và đa kế thừa giao diện (multiple interface inheritance) hỗ trợ lập trình định hướng đối tượng. Ngoài các kết cấu điều khiển thông thường như rẽ nhánh, lặp, xử lý ngoại lệ (exception), và kết cấu đơn vị thông thường như thủ tục (procedure), hàm (function), Ada còn có kết cấu gói (package) hỗ trợ lập trình theo thành phần (modular), kết cấu mẫu (generic) hỗ trợ lập trình mẫu, kết cấu tác vụ (task) và kiểu có bảo vệ (protected type) hỗ trợ lập trình song song và tương tranh.
Cú pháp
Ada có cú pháp tương tự như ngôn ngữ lập trình Pascal, thể hiện rõ nhất ở ký hiệu := dùng trong lệnh gán và begin... end bao quanh mỗi khối lệnh.
Trong một file chương trình Ada, cần có một thủ tục (procedure) có tên trùng với tên chương trình, nó sẽ được kích hoạt khi chạy chương trình:
-- dòng chữ bắt đầu bằng hai dấu gạch ngang là dòng chú thích
-- ví dụ file chương trình có tên là hello.adb
with text_io; use text_io; --sử dụng thư viện nhập - xuất chuỗi ký tự
procedure hello is
begin
put_line("Hello World"); -- in dòng chữ
end hello; -- nhắc lại tên thủ tục
Một số đặc điểm cú pháp khác như sau:
--vòng lặp thoát bởi exit:
i: integer; -- khai báo i là biến số nguyên
i:= 10;
loop
i:= i - 1;
put_line("Hello World");
exit when i = 0;
end loop;
Một vòng lặp viết theo dạng for:
for i in 1..10 loop
put_line("Hello World");
end loop;
Ứng dụng
Ngoài các ứng dụng truyền thống trong vũ khí, khí tài và các hệ thống liên lạc, tham mưu, chỉ huy, tác chiến, sau hơn 2 thập kỷ ngày nay Ada còn được dùng trong các ứng dụng của ngành thám hiểm không gian, hàng không, giao thông sắt & bộ, năng lượng hạt nhân, viễn thông, và tài chính – ngân hàng.
Trên thế giới, tỉ lệ lập trình viên sử dụng ngôn ngữ Ada chiếm khoảng 5%.
Ada có bộ biên dịch miễn phí GNAT và môi trường phát triển miễn phí GPS, sinh mã đích cho rất nhiều platform khác nhau.
**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á
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**
**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ọ.
Đâ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
**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
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ữ
**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
**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
**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 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
Trong điện toán, **lập trình hướng khía cạnh** (tiếng Anh: _aspect-oriented programming_, viết tắt: _AOP_) là một mẫu hình lập trình nhằm tăng tính mô đun bằng cách cho phép phân tách những mối quan
**Lập trình tổng quát** (tiếng Anh: _generic programming_) là một dạng lập trình máy tính mà trong đó thuật toán được viết theo cách kiểu _được-xác-định-sau_ và sau đó được _khởi tạo_ (_instantiate_) nếu cần
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
nhỏ|Mã nguồn VHDL cho một [[mạch cộng có dấu]] **VHDL** (**VHSIC-HDL, Very High-Speed Integrated Circuit Hardware Description Language**, tạm dịch: Ngôn ngữ Mô tả Phần cứng cho Vi mạch tích hợp Tốc độ cao) là
**Ada Lovelace** (tên đầy đủ: **Augusta Ada** **Byron**; 10 tháng 12 năm 1815 – 27 tháng 11 năm 1852) là một nhà toán học và nhà văn người Anh, nổi tiếng với công trình nghiên
nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] **Chương trình máy tính** là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính
**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
**A#** là một phiên bản chuyển giao của ngôn ngữ lập trình Ada tới nền tảng Microsoft .NET. A# được phân phối miễn phí bởi Khoa Khoa học Máy tính tại Học viện Không quân
**Coraline Ada Ehmke** là nhà phát triển phần mềm và người ủng hộ nguồn mở có trụ sở tại Chicago, Illinois. Ehmke bắt đầu sự nghiệp với tư cách là một nhà phát triển web
**Nạp chồng hàm** (tiếng Anh: **function overloading** hay **method overloading**) là một tính năng được hỗ trợ trong nhiều ngôn ngữ lập trình như Ada, C#, VB.NET, C++, D và Java. Tính năng này cho
nhỏ|Mã spaghetti **Mã spaghetti** (Spaghetti code) là một cụm từ mang tính cho mã nguồn có tính phi cấu trúc và khó bảo trì. Mã spaghetti có thể được gây ra bởi vài yếu tố,
Đâ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
thumb|right|Sơ đồ luồng vòng lặp Do While Trong hầu hết ngôn ngữ lập trình máy tính, một **vòng lặp do while** (tiếng Anh: _do while loop_) là một câu lệnh luồng điều khiển để thực
Trong các lĩnh vực an ninh máy tính và lập trình, một **lỗi tràn bộ nhớ đệm** hay gọi tắt là **lỗi tràn bộ đệm** (tiếng Anh: _buffer overflow_) là một lỗi lập trình có
Trong khoa học máy tính, **hàm nội tuyến** (tiếng Anh: _inline function_) là một cấu trúc trong ngôn ngữ lập trình được sử dụng để đề nghị với chương trình biên dịch rằng một hàm
**Nhà phát triển phần mềm** là một cá nhân hay một tổ chức có liên quan đến các vấn đề trong quá trình phát triển phần mềm ở mức cao hơn việc chỉ thiết kế
thumb|**Simple DirectMedia Layer** **Simple DirectMedia Layer** (thường được viết tắt là SDL) là một thư viện lập trình có khả năng trừu tượng hóa các phần cứng đồ họa, âm thanh hay thiết bị vào
nhỏ|GNU Debugger Trình gỡ lỗi GNU (GNU Debugger) hay còn gọi là GDB là một chương trình gỡ lỗi chuẩn cho hệ thống phần mềm GDB. Nó là một trình gỡ lỗi di động có
Đây là một danh sách chưa đầy đủ của các tiêu chuẩn ISO. Một số tiêu chuẩn được ISO/IEC JTC1 công bố, đã được đăng cho mọi người [http://isotc.iso.org/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm tự do truy cập] ## ISO
nhỏ| Một sơ đồ cho thấy cách người dùng tương tác với [[phần mềm ứng dụng trên một máy tính để bàn thông thường. Lớp phần mềm ứng dụng giao tiếp với hệ điều hành,
Dưới đây là danh sách các môi trường phát triển tích hợp ## Các môi trường phát triển tích hợp nguồn mở/miễn phí ### Các môi trường phát triển tích hợp đa nền miễn phí
thumb|Bản đồ thể hiện các quốc gia sử dụng nhiều tiếng Indonesia. Xanh đậm = quốc gia, xanh nhạt = được nói bởi > 1%. thumb|Một người nói tiếng Indonesia được ghi âm ở [[Hà
Trong toán học và trong khoa học điện toán, **hệ thập lục phân** (hay **hệ đếm cơ số 16**, tiếng Anh: _hexadecimal_), hoặc chỉ đơn thuần gọi là thập lục, là một hệ đếm có
[[Phần cứng|Phần cứng máy tính là nền tảng cho xử lý thông tin (sơ đồ khối). ]] **Lịch sử phần cứng máy tính** bao quát lịch sử của phần cứng máy tính, kiến trúc của
Trong khoa học máy tính, **luồng điều khiển** (tiếng Anh: _control flow_ hay _flow of control_) là thứ tự các câu lệnh, tập lệnh hay lời gọi hàm riêng biệt của một chương trình mệnh
phải|nhỏ|277x277px| Minh họa của một ứng dụng sử dụng libvorbisfile để phát file Ogg Vorbis Trong khoa học máy tính, **thư viện** là tập hợp các tài nguyên không biến động được sử dụng bởi
Đâ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
**Tàu khu trục lớp Kongō** (tiếng Nhật: こんごう型護衛艦) là lớp tàu khu trục mang tên lửa có điều khiển (DDG) đầu tiên của Lực lượng Phòng vệ trên biển Nhật Bản (JMSDF) được chế tạo
**ImageMagick** là bộ phần mềm (có thể gọi là thư viện) xử lý các file ảnh. ImageMagick là phần mềm tự do với một giấy phép riêng, tương đương với GPL. Tên gọi _ImageMagick_ ghép
Trong các ngôn ngữ lập trình máy tính, **câu lệnh switch** hay **câu lệnh chuyển đổi** (tiếng Anh: **'switch statement**') là một loại cơ chế điều khiển lựa chọn để cho phép giá trị của
phải|nhỏ| Các phép toán đại số trong lời giải cho [[phương trình bậc hai. Dấu khai căn, √ biểu thị một căn bậc hai, tương đương với lũy thừa với số mũ ½. Dấu ±
_Đừng nhầm lẫn với diễn viên Margaret Brainard Hamilton.**_Margaret Heafield Hamilton** (sinh ngày 17 tháng 8 năm 1936) là một nhà khoa học máy tính, kỹ sư hệ thống, và là chủ doanh nghiệp. Bà
Môi trường phát triển tích hợp Eclipse phiên bản 3.1.2 trên nền Windows XP. **Eclipse** là một môi trường phát triển tích hợp dùng cho lập trình máy tính., Nó chứa một không gian làm
Thuật ngữ **MPI** là viết tắt của **Message Passing Interface**, chỉ một dạng giao thức kết nối của máy tính. Nó nằm trong chuẩn _de facto_ cho kết nối giữa các nút chạy một chương
**Alexandros III của Macedonia** (, ), thường được biết đến rộng rãi với cái tên **Alexander Đại đế** (tiếng Hy Lạp: _Megas Alexandros_, tiếng Latinh: _Alexander Magnus_), hay còn được một số tài liệu tiếng
**Dhrystone** là một chương trình kiểm chuẩn máy tính tổng hợp được Reinhold P. Weicker phát triển vào năm 1984, nhắm đến đánh giá lập trình hệ thống (lập trình integer). Sau đó Dhrystone đã
**Macedonia** (; ), còn được gọi là **Macedon** (), là một vương quốc cổ đại nằm ở ngoài rìa phía bắc của nền văn minh Hy Lạp Cổ xưa và Hy Lạp Cổ điển, và
**Thủy ngân** (**水銀**, dịch nghĩa Hán-Việt là "nước bạc") là nguyên tố hóa học có ký hiệu **Hg** (từ tên tiếng Latinh là **_H**ydrar**g**yrum_ ( hy-Drar-jər-əm)) và số hiệu nguyên tử 80. Nó có nhiều