Bahasa Pemrograman Ada

Ikhtisar

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.

Aspek Historis

Penciptaan

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.

Terinspirasi dari dan Hubungan dengan Bahasa Lain

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.

Keadaan Saat Ini

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.

Fitur Sintaksis

Pengetikan Kuat

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

Modularitas

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;

Konkruensi

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;

Penanganan Eksepsi

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;

Pemrograman Berorientasi Objek

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

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;

Tipe Enumerasi

Ada mendukung tipe enumerasi, yang mendefinisikan tipe dengan sekumpulan nilai bernama.

type Color is (Red, Green, Blue);

Tipe Terkontrol

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;

Atribut

Ada menyediakan atribut yang dapat digunakan untuk mendapatkan informasi tentang tipe atau objek.

X : Integer := 10;
Size : Natural := X'Size; -- Mendapatkan ukuran integer

Model Mental Memori

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;

Alat Pengembang, Runtime, dan IDE

Runtime dan Kompiler

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.

IDE Populer

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.

Membangun Proyek

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.

Aplikasi Ada

Ada digunakan terutama dalam sistem kritis yang mencakup tetapi tidak terbatas pada:

Keandalannya dan kemudahan pemeliharaannya menjadikannya pilihan yang disukai di sektor-sektor ini.

Perbandingan dengan Bahasa Lain

Meskipun Ada memiliki beberapa kesamaan dengan bahasa pemrograman lain, ia menonjol karena penekanan pada keselamatan dan keandalan.

Tips Terjemahan Sumber ke Sumber

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: