← A–Z Röportajları

Ada

S. Tucker Taft, SofCheck’in Yönetim Kurulu Başkanı ve CTO’sudur. Taft, Ada 1995 ve 2005 revizyonlarında yoğun biçimde yer almış olup, bugün hâlâ dili hem tasarımcı hem de kullanıcı olarak kullanmaktadır.

Computerworld, Ada’nın geliştirilmesi ve bakımı hakkında daha fazla bilgi edinmek için Taft ile konuştu ve dil tasarımı ile geliştirmeye derinlemesine bağlı bir kişiyle karşılaştı.

Ada ile ilk kez nasıl ilgilenmeye başladınız?

1975’te mezun olduktan sonra, Bell Labs dışındaki ilk Unix sistemi için “sistem annesi” olarak Harvard’da dört yıl çalıştım. Bu süre boyunca bazı bilgisayar bilimi araştırmacılarıyla çok vakit geçirdim ve DOD-1 dil tasarım yarışmasından haberdar oldum. O noktada birkaç yıldır programlama dili tasarımına büyük ilgi duyuyordum ve görev açısından kritik yazılımlar için standart bir dil tasarlamaya yönelik bir yarışma olması bana oldukça heyecan verici gelmişti.

Ayrıca dil tasarımı konusunda zaten güçlü görüşlerim vardı, dolayısıyla tüm tasarımlar hakkında bazı şikâyetlerim bulunuyordu.

Eylül 1980’de, Harvard’daki işimden ayrıldıktan bir yıl sonra Boston bölgesine geri döndüm ve DOD-1 için dört yarı finalistten biri ve iki finalistten biri olan Red dilinin tasarımından sorumlu şirket olan Intermetrics’te bir işe girdim. O zamana gelindiğinde dil, Lord Byron’ın kızı ve Charles Babbage’ın çalışma arkadaşı olan Lady Ada Lovelace onuruna Ada olarak yeniden adlandırılmıştı.

Intermetrics kısa bir süre önce yarışmayı Honeywell-Bull-Inria’ya kaybetmiş olsa da, Ada standardının tamamlanmasına yönelik genel sürecin içinde hâlâ oldukça aktifti ve bu kez Hava Kuvvetleri için olmak üzere iki büyük Ada derleyici alımından biri için teklif verme sürecindeydi. Altı aylık bir tasarım dönemi ve 12 aylık kamusal değerlendirme sonrasında Intermetrics tasarımı diğer iki tasarımın önüne geçti ve ben önce Ada Program Destek Ortamı bölümünün, ardından da nihayetinde Ada derleyicisinin başına geçtim.

Hava Kuvvetleri Ada Bütünleşik Ortam sözleşmesinin gereksinimlerinden biri, tüm derleyici ve ortamın Ada’nın kendisiyle yazılmasıydı; bu da bazı ilginç önyükleme sorunları ortaya çıkardı. Hatta gerçek derleyiciyi derleyebilmeden önce Pascal ile ayrı bir önyükleme derleyicisi yapmak zorunda kaldık. Teslimat zamanı geldiğinde yaklaşık bir milyon satır Ada kodu yazmıştık ve Ada’nın taslak bir standarttan Askerî bir standarda (MIL-STD-1815), ardından bir ANSI standardına (Ada 83) ve nihayet bir ISO standardına (ISO 8652, Ada 87) dönüşmesine tanıklık etmiştik.

Ayrıca dili öğrenme, dil hakkında söylenme ve sonunda dili olduğu haliyle kabullenip verimli biçimde kullanabilme şeklinde kişisel bir ilerleme sürecinden de geçmem gerekti.

Bununla birlikte, 1988’de ABD Savunma Bakanlığı Ada standardını gözden geçirerek Ada 9X’i üretmeye yönelik süreci başlattığını duyurdu (buradaki X, 0 ile 9 arasında bir rakamdı). Eski şikâyetlerimin tamamını ve birkaç yenisini hızla yeniden gündeme getirdim ve Intermetrics’in Ada 9X Haritalama/Revizyon Ekibi (hükümetin dil tasarım ekibi için kullandığı adlandırma) olabilmesi için bir teklif yazılmasına katkıda bulundum. Bu kez Intermetrics ekibi, aralarında özgün Ada 83 standardının baş tasarımcısı Jean Ichbiah’nın da bulunduğu bir ekip dahil olmak üzere birçok ekibe karşı yarışmayı kazandı.

Intermetrics MRT ekibinin teknik lideri bendim; Hava Kuvvetleri’nden Christine Anderson ise hükümet tarafında genel Ada 9X projesinin yöneticisiydi.

Özgün Ada ile 95 revizyonu arasındaki temel farklar nelerdir?

Ada 95’teki üç büyük dil revizyonu hiyerarşik kütüphaneler, korumalı nesneler ve nesne yönelimli programlamaydı.

Hiyerarşik kütüphaneler, Ada modül ad alanının geliştirilmesini ifade ediyordu; bu, Ada 83’ün her birim için tekil bir tanımlayıcıya sahip basit düz ad alanından, ebeveyn ve alt kütüphane birimleri arasında görünürlük denetimi bulunan hiyerarşik birim ad alanına geçiş anlamına geliyordu.

Korumalı nesneler, Ada 83’ün mevcut etkin mesaj/randevu odaklı görev yapısını tamamlamak üzere tanımladığımız, yeni, pasif ve veri odaklı bir eşzamanlama yapısını ifade ediyordu.

Nesne yönelimli programlama ise Ada 95’te, Ada 83’ün mevcut türetilmiş tür yeteneğinin geliştirilmesiyle sağlandı; bu, var olan bir türden türetme sırasında tür genişletmeyi desteklemenin yanı sıra sanal işlevlerin ve çalışma zamanı tür etiketlerinin eşdeğerleriyle çalışma zamanı çok biçimliliğini de destekliyordu.

95’teki Ada revizyonunu tetikleyen neydi?

ISO standartları düzenli revizyon döngülerinden geçer. Genel olarak her beş yılda bir bir standardın gözden geçirilmesi, en az her on yılda bir de revize edilmesi gerekir. Ayrıca dile ilişkin bazı özel endişeler de vardı; ancak genel olarak dil, görev açısından kritik yazılım geliştirme gereksinimleriyle oldukça iyi örtüşmüştü.

Özellikle, paketler ve özel türler biçimindeki soyut veri türlerine yönelik güçlü Ada desteği, yazılım mühendisliğinde önemli bir sıçrama olarak ortaya çıkmıştı ve Ada’nın dizi sınırları ile null işaretçiler için yaptığı çalışma zamanı denetimleri, tipik programlama hatalarının büyük bir sınıfının yaşam döngüsünün daha erken aşamalarında yakalanmasına yardımcı olmuştu.

Çözmeye çalıştığınız belirli bir sorun var mıydı?

Nesne yönelimli programlama o dönemde popülerliğini artırıyordu, ancak görev açısından kritik yazılım geliştirme topluluğunun büyük bir kısmı tarafından hâlâ tam olarak güvenilir bulunmuyordu. Buna ek olarak, Ada 83’ün görev modeli zarif kabul ediliyordu, ancak birçok gerçek zamanlı sistem geliştiricisinin tercih edeceği verimlilik ve denetim düzeyini sağlamıyordu.

Ada 9X revizyon süreci başladıktan sonra, Ada topluluğundan hem korunması gereken hem de iyileştirilmesi gereken noktalar hakkında açık geri bildirimler toplamak üzere bir gereksinimler ekibi oluşturuldu.

Ada revizyonu sırasında zor kararlarla karşılaştınız mı?

Her dil tasarımı kararı oldukça zordu, çünkü bazıları potansiyel olarak birbiriyle çelişebilen pek çok hedef ve gereksinim vardı. Belki de en zor kararlar, ISO delegasyonları arasında dil revizyon sürecinde uzlaşma sağlamak için bizim (tasarım ekibi olarak) kişisel favori revizyon önerilerimizin bazılarından vazgeçmemiz gerektiğini fark ettiğim politik kararlardı.

Şu anda hâlâ dille çalışıyor musunuz ve hangi bağlamda?

Evet, dille hâlâ hem kullanıcı hem de dil tasarımcısı olarak çalışıyorum. Bildiğiniz gibi, Ada 2005 olarak bilinen dilin en yeni sürümü kısa süre önce resmî standardizasyona ulaştı.

Ada 2005 tasarım süreci, Ada 95 sürecinden oldukça farklıydı; çünkü Ada 2005’in Savunma Bakanlığı destekli bir tasarım ekibi yoktu ve bunun yerine tamamen gönüllü zaman ve enerji katkılarına dayanmak zorundaydı.

Buna rağmen, Ada 2005 tasarım çalışma grubunun başarılarıyla son derece gurur duyuyorum. Ada 95’in birçok yeteneğini daha da olgunlaştırarak, genel olarak bana göre daha iyi bütünleşmiş, daha güçlü ve esnek, aynı zamanda daha da güvenli ve emniyetli bir dil ortaya koymayı başardık.

Fırsatınız olsaydı Ada 95 veya Ada 2005’in geliştirilmesinde farklı yaptığınız bir şey olur muydu?

Ada 95’in geliştirilmesi sırasında ortaya çıkan ve kullanımda daha sonra fark edilen az sayıdaki teknik sorun, küçük olanlar için normal dil bakım faaliyetleri kapsamında hemen giderildi (“bunu demek istememiştik … açıkça şunu demek istemiştik” şeklinde) ya da daha büyük olanlar, büyük ölçüde Ada 2005 sürecinde ele alındı.

Ancak süreç açısından bakıldığında, uluslararası uzlaşı oluşturmak için gereken çabayı olduğundan az değerlendirmişim; geriye dönüp baktığımda, revizyon önerilerini seçkin gözden geçiricilerden oluşan panele ve ISO delegasyonlarına sunmadan önce gerekçelerini ortaya koymaya daha fazla zaman ayırmam gerekirdi.

Dilin kullanıldığı Savunma projelerinden herhangi birinden haberdar mısınız?

Ada, 1987’den 1997’ye kadar yaklaşık 10 yıl boyunca, Savunma Bakanlığı’na ait neredeyse tüm önemli yazılım projelerinde kullanımı zorunlu tutuldu ve bu tür projelerin sayısı oldukça fazlaydı. İlk yıllarda Ada derleyicilerinin olgunlaşmamış olması nedeniyle gerçek zorluklar yaşandı. Sonraki yıllarda ise, kısmen bu erken zorluklar nedeniyle, başka dillerin kullanılmasına izin verilmesi için başvuru yapıp muafiyet alan birçok proje oldu.

Buna rağmen, özellikle 1989’dan 1995’e kadar olan orta dönemde Ada kullanımında bir patlama yaşandı ve bunun büyük bir kısmı oldukça başarılıydı.

Belirli projeler açısından Apache helikopteri ve Lockheed C-130J (Hercules II Nakliye Uçağı) iki tanınmış örnektir. Lockheed C-130J özellikle ilginçtir; çünkü Praxis High Integrity Systems tarafından geliştirilen SPARK Ada tabanlı araç seti kullanılarak, biçimsel doğruluk-yapılandırma süreciyle geliştirilmiştir.

Bu süreçle ilgili deneyim, emniyet açısından kritik aviyonik yazılımların geliştirilmesine yönelik endüstri normlarıyla karşılaştırıldığında, C-130J geliştirmesinin on kat daha düşük hata oranına, dört kat daha yüksek verimliliğe, yarı maliyetli bir geliştirme sürecine ve kapsamlı yeniden kullanım sayesinde sonraki bir projede dört kat verimlilik artışına sahip olduğunu göstermiştir.

NASA da uydu yazılımları için Ada’yı kapsamlı biçimde kullanmış ve önceki Ada dışı sistemlerine kıyasla belirgin biçimde daha yüksek yeniden kullanım oranları belgeleyebilmiştir.

Genel olarak, çalışmadan çalışmaya Ada, istenen kalite düzeyine ulaşmanın en maliyet etkin yolu olarak öne çıkmıştır; çoğu zaman, aynı miktarda testten sonra karşılaştırılabilir Ada dışı sistemlere göre bir büyüklük mertebesi daha düşük hata oranına sahip olmuştur.

NASA Space Stations IV&V adına Ada için geliştirilen Static Interface Analysis Tool (SIAT) hakkında daha fazla ayrıntı verebilir misiniz?

SIAT projesi, karmaşık bir yazılım sistemi içinde gezinmeye yönelik tarayıcı tabanlı bir araç geliştirmeye yönelik erken bir girişimdi. Bu özel kullanımda amaç, Uluslararası Uzay İstasyonu’ndaki büyük bilgisayar ağı için tasarlanan yazılımı analiz etmekti.

Bu sistemlerin, bir bilgisayarın Uzay İstasyonu’nun bir bölümünü izleyip durumunu diğer bilgisayarlara, büyük bir küresel değişkenler tablosu aracılığıyla bildirdiği çok sayıda veri arayüzüne sahip olduğu ortaya çıktı. SIAT aracı, bu arayüzlerin tutarlı olmasını ve verinin bilgisayarlar ile bu küresel değişken tabloları arasında uygun şekilde akmasını sağlamaya yardımcı olmak üzere tasarlandı.

Ada’nın geliştirilmesinin başında Green önerisinin Red, Blue ve Yellow önerilerine tercih edilmesinin nedenini biliyor musunuz?

Green önerisi, diğer tasarımlara kıyasla daha erken bir aşamada kararlılık ve bütünlük düzeyine ulaştı ve Jean Ichbiah, özelliklerini değerlendiricilerin anlayıp takdir edebileceği bir biçimde sunma konusunda mükemmel bir iş çıkardı.

Diğer tasarımlarda parlak fikirler görülse de, hiçbiri Green tasarımının ulaştığı incelik ve olgunluk düzeyine erişemedi.

Jean Ichbiah ile hiç yakın çalıştınız mı? Eğer öyleyse, çalışma ilişkisi nasıldı ve birlikte neler yaptınız?

Ada 83 tasarımının son günlerinde ve Ada 9X tasarım süreci başlamadan önceki bazı Ada bakım faaliyetleri sırasında Jean ile zaman zaman birlikte çalıştım. Ada 9X sürecinin başında Jean kendi şirketini yönetmekle meşguldü, ancak 1992 ve 1993 yıllarında bir süreliğine sürece gözden geçirici olarak katıldı. Ortaya çıktığı üzere, Jean ile güncellenmiş dilin nesne yönelimli özelliklerinin nasıl tasarlanması gerektiği konusunda oldukça farklı görüşlere sahiptik ve nihayetinde tasarım ekibinin önerilen yaklaşımının izlenmesine karar verildiğinde projeden ayrıldı.

Sizce Ada ve Ada 95 Web’e ne tür kalıcı bir miras bıraktı?

Bana göre Ada, güvenlik, emniyet, çoklu iş parçacığı ve gerçek zamanlı denetim boyutlarında diğer tüm dillerin karşılaştırıldığı ölçüt olmaya devam ediyor. Ayrıca diğer programlama dillerindeki birçok gelişmiş özelliğin de kaynağı olmuştur. Ada, yaygın biçimde kullanılan diller arasında bir soyutlamayı temsil eden dil yapısına (paket), bir soyut veri türüne (özel tür), çoklu iş parçacığına (görevler), jenerik şablonlara, istisna yönetimine, güçlü tipli ayrı derlemeye, alt program içe almaya vb. sahip olan ilk dillerden biriydi. Bazı açılardan Ada zamanının ilerisindeydi ve bu nedenle aşırı karmaşık olarak algılandı. Ancak ortaya çıkışından bu yana, özellikle C++ başta olmak üzere diğer diller bu karmaşıklığı kolaylıkla aşmışken, Ada’nın güvenlik, verimlilik ve gerçek zamanlı denetim birleşimi eşitlenememiştir.

Ada’nın geleceğinin nerede olduğunu düşünüyorsunuz?

Yukarıda da belirtildiği gibi, Ada güvenlik, emniyet, çoklu iş parçacığı ve gerçek zamanlı denetim alanlarında öncü dil olmaya devam etmektedir. Ancak Ada bilen programcı havuzu, yüksek bütünlüklü nişi dışında yeterince başarı elde edememesi nedeniyle yıllar içinde küçülmüştür. Bu da Ada’nın bu niş içinde kalabileceği anlamına gelir; ancak yazılımın emniyet açısından kritik ve yüksek güvenlikli sistemlerin giderek daha büyük bir parçası hâline gelmesiyle bu nişin zamanla büyüdüğü görülmektedir. Buna ek olarak, çok çekirdekli yongaların yeni büyüme alanı, Ada’nın çoklu iş parçacığı ve gerçek zamanlı denetimdeki güçlü yönleriyle örtüşmektedir.

Ayrıca Ada’nın, diğer dil tasarım çabaları için bir ölçüt olarak rol oynamayı sürdüreceğini ve yaygın dağıtık, büyük ölçekte paralel, emniyet ve güvenlik açısından kritik sistemlerdeki artan zorluklara çözüm getirmek üzere yeni diller ortaya çıktıkça, Ada’nın bu dillerin tasarımcıları için hem bir ilham kaynağı hem de bir model olacağını düşünüyorum.

Bilgisayar programlama dillerinin gelecekte, özellikle önümüzdeki 5 ila 20 yıl içinde, hangi yöne gittiğini görüyorsunuz?

Yukarıda da belirtildiği gibi, sistemler giderek daha dağıtık, daha paralel ve daha kritik hâle geliyor. İyi tasarlanmış bir programlama dilinin, programcıların bu büyüyen karmaşıklığı yapılandırmasına, soyutlamasına ve güvence altına almasına imkân vererek bunun bir kısmını dizginlemeye yardımcı olabileceğine inanıyorum. Ne yazık ki son zamanlarda, özellikle betik dilleri biçiminde, sahnede çok sayıda yeni dilin ortaya çıktığını da gördüm ve bu dillerin tasarımcılarının birçoğu programlama dili tasarımının tarihinin büyük bir bölümünü görmezden gelmiş gibi görünüyor; dolayısıyla daha önce yapılmış pek çok hatayı tekrarlamaya mahkûmlar.

Yeni yetişen programcılara herhangi bir tavsiyeniz var mı?

Birden fazla farklı programlama dili öğrenin ve onlar hakkında dinî bir sevgi ya da nefret geliştirmeden önce gerçekten kullanmayı deneyin. Scheme’i deneyin, Haskell’ı deneyin, Ada’yı deneyin, Icon’u deneyin, Ruby’yi deneyin, CAML’ı deneyin, Python’ı deneyin, Prolog’u deneyin. Sadece tek bir dili kullanma alışkanlığına saplanıp, onun programlamanın ne anlama geldiğini tanımladığını düşünmenize izin vermeyin.

Tek bir dilin sözdizimi ve anlambiliminin ötesine geçerek algoritmalar ve veri yapıları hakkında soyut düzeyde düşünmeye çalışın. Ve madem öyle, Hoare, Dijkstra, Wirth, Gries, Dahl, Brinch Hansen, Steele, Milner ve Meyer gibi dil tasarımı öncülerinin yazdığı makaleleri ya da kitapları okuyun.

Eklemek istediğiniz başka bir şey var mı?

Programlama dillerinin evriminin sonuna ulaştığımızı söyleyen kimseye inanmayın.