Ada, öncelikle sistem programlama ve gerçek zamanlı uygulamalar için tasarlanmış yüksek seviyeli, yapılandırılmış bir programlama dilidir. Ada Lovelace'den adını almıştır; kendisi genellikle ilk bilgisayar programcılarından biri olarak kabul edilir. Ada, güçlü tip kontrolü, modülerlik ve eşzamanlı programlama desteği ile tanınır ve bu özellikleri onu havacılık, otomotiv ve savunma gibi endüstrilerde kritik sistemler için uygun hale getirir.
Ada, 1970'lerin sonlarında, gömülü ve gerçek zamanlı sistemler için standart bir programlama diline duyulan ihtiyacı karşılamak amacıyla Amerika Birleşik Devletleri Savunma Bakanlığı (DoD) tarafından finanse edilen bir proje kapsamında oluşturulmuştur. Dil, Jean Ichbiah liderliğindeki bir ekip tarafından tasarlanmış ve 1983 yılında resmi olarak piyasaya sürülmüştür. Temel hedeflerden biri, savunma sistemlerinde kullanılan programlama dillerinin çeşitliliğini azaltarak bakım ve güvenilirliği artırmaktı.
Ada, Pascal, C ve ALGOL gibi birkaç programlama dilinden ilham almıştır. Tasarımı, bu dillerden güçlü tip kontrolü ve yapılandırılmış programlama gibi özellikleri içermektedir. Ada'nın geliştirilmesi, özellikle tip güvenliği ve sistem düzeyinde programlama desteği açısından C'nin getirdiği zorluklara da yanıt vermiştir.
Kuruluşundan bu yana, Ada birkaç revizyon geçirmiştir; Ada 83'ten sonra Ada 95, Ada 2005 ve en son standart olan Ada 2012 gelmiştir. Bu revizyonlar, nesne yönelimli programlama ve gerçek zamanlı sistemler için geliştirilmiş destek gibi yeni özellikler getirmiştir. Bugün, Ada, Ada Kaynak Derneği tarafından korunmakta ve özellikle güvenlik ve güvenilirliğin ön planda olduğu kritik sistemlerde kullanılmaya devam etmektedir.
Ada, derleme zamanında hataları yakalamaya yardımcı olan katı tip kontrolü uygular.
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- Bu geçerlidir
Count := 150; -- Bu, derleme zamanı hatasına neden olur
Dil, ilgili türleri, verileri ve prosedürleri kapsülleyen paketler aracılığıyla modüler programlamayı destekler.
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, birden fazla işlemin aynı anda yürütülmesine olanak tanıyan görevler aracılığıyla eşzamanlı programlama için yerleşik destek sunar.
task My_Task is
begin
-- görev kodu
end My_Task;
Ada, geliştiricilerin çalışma zamanı hatalarını zarif bir şekilde yönetmelerine olanak tanıyan sağlam istisna yönetimi mekanizmaları sağlar.
begin
-- bir istisna oluşturabilecek kod
exception
when Constraint_Error =>
-- hatayı yönet
end;
Ada, miras alma ve çok biçimlilik gibi özelliklerle nesne yönelimli programlamayı destekler.
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- araç bilgilerini görüntüleme kodu
end Display;
Genel türler, geliştiricilerin parametreli türler ve alt programlar tanımlayarak esnek ve yeniden kullanılabilir kod yazmalarına olanak tanır.
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
Ada, adlandırılmış değerler kümesi ile bir tür tanımlayan sıralı türleri destekler.
type Color is (Red, Green, Blue);
Kontrol edilen türler, nesnelerin oluşturulması ve yok edilmesi üzerinde ince ayar yapma olanağı sağlar.
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
Ada, türler veya nesneler hakkında bilgi almak için kullanılabilecek nitelikler sağlar.
X : Integer := 10;
Size : Natural := X'Size; -- bir tam sayının boyutunu alma
Ada, veri depolama ve tahsisi üzerinde açık kontrol ile bellek yönetimi kavramını vurgular.
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
Ada, çeşitli derleyiciler kullanılarak derlenebilir; GNAT en yaygın kullanılanlardan biridir. GNAT, GNU Derleyici Koleksiyonu (GCC) parçasıdır ve Ada kodunu derlemek için ücretsiz ve açık kaynaklı bir yol sunar.
Ada için mevcut birkaç entegre geliştirme ortamı (IDE) bulunmaktadır; bunlar arasında GNAT Studio, AdaGIDE ve GPS (GNAT Programming Studio) yer alır. Bu araçlar, sözdizimi vurgulama, kod tamamlama ve hata ayıklama yetenekleri gibi özellikler sunar.
GNAT kullanarak bir Ada projesi oluşturmak için genellikle Ada kaynak kodu yazılır ve ardından terminalde aşağıdaki komutlar kullanılır:
gnatmake my_program.adb
Bu komut, Ada kaynak dosyasını derler ve bir çalıştırılabilir dosya oluşturur.
Ada, öncelikle aşağıdakiler de dahil olmak üzere güvenlik açısından kritik sistemlerde kullanılmaktadır:
Güvenilirliği ve bakım kolaylığı, bu sektörlerde tercih edilen bir seçenek olmasını sağlamaktadır.
Ada, diğer programlama dilleriyle bazı benzerlikler paylaşsa da, güvenlik ve güvenilirlik konusundaki vurgusuyla öne çıkmaktadır.
Kaynak-kaynağa çeviri ile ilgilenirken, Ada kodunu diğer programlama dillerine dönüştürmeye yardımcı olabilecek belirli araçlar vardır. Örneğin, Gnat2Go gibi araçlar, Ada kodunu Go'ya çevirmek için kullanılabilir. Ancak, çeviri sürecinde orijinal Ada kodunun işlevselliği ve güvenlik özelliklerinin korunmasına dikkat edilmelidir.
Kaynak-kaynağa çeviri için bazı yaygın araçlar şunlardır: