Ada adalah bahasa pemrograman tingkat tinggi yang terstruktur, dirancang terutama untuk pemrograman sistem dan aplikasi waktu nyata. Bahasa ini dinamai setelah Ada Lovelace, yang sering dianggap sebagai salah satu programmer komputer pertama. Ada dikenal karena pengetikan yang kuat, modularitas, dan dukungan untuk pemrograman konkuren, menjadikannya cocok untuk sistem kritis di industri seperti dirgantara, otomotif, dan pertahanan.
Ada diciptakan pada akhir 1970-an di bawah proyek yang didanai oleh Departemen Pertahanan Amerika Serikat (DoD) untuk memenuhi kebutuhan akan bahasa pemrograman standar untuk sistem embedded dan waktu nyata. Bahasa ini dirancang oleh tim yang dipimpin oleh Jean Ichbiah dan secara resmi dirilis pada tahun 1983. Salah satu tujuan utamanya adalah untuk mengurangi keragaman bahasa pemrograman yang digunakan dalam sistem pertahanan, sehingga meningkatkan pemeliharaan dan keandalan.
Ada mengambil inspirasi dari beberapa bahasa pemrograman, termasuk Pascal, C, dan ALGOL. Desainnya menggabungkan fitur-fitur dari bahasa-bahasa ini, seperti pengetikan yang kuat dan pemrograman terstruktur. Pengembangan Ada juga merespons tantangan yang ditimbulkan oleh C, terutama dalam hal keamanan tipe dan dukungan pemrograman tingkat sistem.
Sejak awalnya, Ada telah mengalami beberapa revisi, dengan Ada 83 diikuti oleh Ada 95, Ada 2005, dan standar terbaru, Ada 2012. Revisi ini memperkenalkan fitur-fitur baru, seperti pemrograman berorientasi objek dan dukungan yang lebih baik untuk sistem waktu nyata. Saat ini, Ada dikelola oleh Asosiasi Sumber Daya Ada dan terus digunakan, terutama dalam sistem kritis di mana keselamatan dan keandalan sangat penting.
Ada menerapkan pemeriksaan tipe yang ketat, yang membantu menangkap kesalahan pada waktu kompilasi daripada waktu eksekusi.
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- Ini valid
Count := 150; -- Ini akan menyebabkan kesalahan waktu kompilasi
Bahasa ini mendukung pemrograman modular melalui penggunaan paket, yang mengenkapsulasi tipe, data, dan prosedur yang terkait.
package Geometry is
type Point is record
X : Float;
Y : Float;
end record;
procedure Move(Point : in out Point; DeltaX, DeltaY : Float);
end Geometry;
Ada memiliki dukungan bawaan untuk pemrograman konkuren melalui tugas, yang memungkinkan eksekusi beberapa proses secara bersamaan.
task My_Task is
begin
-- kode tugas
end My_Task;
Ada menyediakan mekanisme penanganan eksepsi yang kuat, memungkinkan pengembang untuk mengelola kesalahan waktu eksekusi dengan baik.
begin
-- kode yang mungkin menimbulkan eksepsi
exception
when Constraint_Error =>
-- tangani kesalahan
end;
Ada mendukung pemrograman berorientasi objek dengan fitur-fitur seperti pewarisan dan polimorfisme.
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- kode untuk menampilkan informasi kendaraan
end Display;
Generik memungkinkan pengembang untuk menulis kode yang fleksibel dan dapat digunakan kembali dengan mendefinisikan tipe dan subprogram yang diparameterisasi.
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
Ada mendukung tipe enumerasi, yang mendefinisikan tipe dengan sekumpulan nilai bernama.
type Color is (Red, Green, Blue);
Tipe terkendali memungkinkan kontrol yang lebih halus atas pembuatan dan penghancuran objek.
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
Ada menyediakan atribut yang dapat digunakan untuk mendapatkan informasi tentang tipe atau objek.
X : Integer := 10;
Size : Natural := X'Size; -- Mendapatkan ukuran integer
Ada menekankan konsep manajemen memori melalui kontrol eksplisit atas penyimpanan dan alokasi data.
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
Ada dapat dikompilasi menggunakan berbagai kompiler, dengan GNAT menjadi salah satu yang paling banyak digunakan. GNAT adalah bagian dari GNU Compiler Collection (GCC) dan menyediakan cara gratis dan sumber terbuka untuk mengompilasi kode Ada.
Ada beberapa lingkungan pengembangan terintegrasi (IDE) yang tersedia untuk Ada, seperti GNAT Studio, AdaGIDE, dan GPS (GNAT Programming Studio). Alat-alat ini menyediakan fitur seperti penyorotan sintaks, penyelesaian kode, dan kemampuan debugging.
Untuk membangun proyek Ada menggunakan GNAT, seseorang biasanya menulis kode sumber Ada dan kemudian menggunakan perintah berikut di terminal:
gnatmake my_program.adb
Perintah ini mengompilasi file sumber Ada dan menghasilkan executable.
Ada digunakan terutama dalam sistem kritis yang mencakup tetapi tidak terbatas pada:
Keandalannya dan kemudahan pemeliharaannya menjadikannya pilihan yang disukai di sektor-sektor ini.
Meskipun Ada memiliki beberapa kesamaan dengan bahasa pemrograman lain, ia menonjol karena penekanan pada keselamatan dan keandalan.
Ketika berurusan dengan terjemahan sumber ke sumber, ada alat tertentu yang dapat membantu mengonversi kode Ada ke bahasa pemrograman lain. Misalnya, alat seperti Gnat2Go dapat digunakan untuk menerjemahkan kode Ada ke Go. Namun, perlu diingat untuk memastikan bahwa fungsionalitas dan fitur keselamatan dari kode Ada asli tetap terjaga selama proses terjemahan.
Beberapa alat umum untuk terjemahan sumber ke sumber meliputi: