Programlama Dili Ada

Genel Bakış

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.

Tarihsel Boyutlar

Oluşum

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ı.

Diğer Dillerden İlham

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.

Mevcut Durum

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.

Sözdizimsel Özellikler

Güçlü Tip Kontrolü

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

Modülerlik

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;

Eşzamanlılık

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;

İstisna Yönetimi

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;

Nesne Yönelimli Programlama

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

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;

Sıralı Türler

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

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;

Nitelikler

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

Bellek Yönetimi Zihinsel Modeli

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;

Geliştirici Araçları, Çalışma Zamanları ve IDE'ler

Çalışma Zamanları ve Derleyiciler

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.

Popüler IDE'ler

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.

Bir Proje Oluşturma

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'nın Uygulamaları

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.

Diğer Dillerle Karşılaştırma

Ada, diğer programlama dilleriyle bazı benzerlikler paylaşsa da, güvenlik ve güvenilirlik konusundaki vurgusuyla öne çıkmaktadır.

Kaynak-Kaynağa Çeviri İpuçları

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: