Ada Programlama Dili Temelleri

Bölüm 1

Ada Programlama Ortamının Tanıtımı

Bölüm 1 Sayfa 1

1.1 - Ada Programlama Dilinin Tarihçesi

Ada programlama dilinin tanınması için bilgisayarların ve programlama dillerinin tarihini kısa olarak inceleyelim.

Aynı işlemi ardarda tekrarlayan makinelerin yapımı çok eski çağlardan başlar. Bu çabalar, Wilhelm Schickard, Blaise Pascal, and Gottfried Leibniz tarafından gerçekleştirilen öncü hesap makineleri ile devam etmiştir. Bu çalışmalar, 1791 - 1871 arasında yaşamış olan ve yaşamında birçok başarılar olan Cambridge Universitesi Lucasian Profesörü Charles Babbage tarafından günümüzdeki bilgisayarlarlara benzer bir yapıda olacak bir "Analitik Makine" ile düşüncesine temel olmuştur. Analitik makine, çağının çok ilerisinde bir düşünceydi ve Babbage'in yaşamında gerçekleşememiştir. Fakat, kendisinden yüz yıl sonra yapılan örnekleri, bu makinenin çalışabileceğini ve öngörgördüğü sonuçların alınabileceğini göstermiştir. Bugün bu makinenin gerçekleşmiş örneklerinden birisi, Londra Bilimler Müzesinde sergilenmektedir.

Analitik Makine düşünüldüğü çağda gerçekleşememiştir. Fakat, düşüncesi özellikle yetkin bir matematikçi olan Lord Byron'un kızı, Lovelace kontesi Lady Augusta Ada King (doğuşu Byron) (1815 - 1842) 'a esin vermiştir. Ada Lovelace, Analitik Makinenin önemini, Babbage'den de daha iyi anlamış ve Babbage'in makinenin toplama işlemlerini öne çıkaran beklentilerini, çağdaş bir bilgisayarın çalışması ile matematik bilimine yapılabilecek Eklemeların incelenmesi aşamasına yükseltmiştir. Charles Babbage ve Ada Lovelace Analitik Makinenin çalışma kodlama sistemini tasarlamışlar ve bu kodlama sistemi daha sonra cağdaş bilgisayarlara örnek olmuştur. Ada Lovelace 1842 ile 1843 arasında İtalyan Matematikçi Luigi Manebrea'nın Analitik Makine üzerine bir makalesini tercüme etmiş ve altına notlar eklemiştir. Bu notlar, aynı günümüzdeki makinelerde olduğu gibi bilgisayar tarafından çözümlenecek bir algoritmayı içermektedir. Ada Lovelace, bu notlar ile dünyanın ilk bilgisayar programcısı ve sayısal yöntemlerin öncüsü olmak niteliğini kazanmıştır.

1936 da Alan Turing bir algoritmik makinenin tanımını yapmış ve hesaplamaların nasıl yapılabileceğini göstermiştir. Günümüzdeki makineler Turing makinesi olarak adlandırılmaktadır.

Charles Babbage'in düşündüğü Analitik Makine, teknik olanakların gelişmesi ile ancak yüzyıl sonra gerçekleşebilmiştir. Tam Turing makinesi niteliğinde olan lk örnek 1943 yılı 5 inci ayında Almanya'da Konrad Zuse öncülüğünde gerçekleşen ve Z3 adı verilen makinedir. Bu makine, savaş koşulları nedeni ile yeterince tanıtılamamış fakat yıllar sonra bile olsa, 1998 de ilk çalışan Turing Makinesi örneği olma niteliği kabul edilmiştir. Bu makinenin özel olan kodlama sistemine PlanKalkul adı verilmiştir. Zuse 1955 de bu makinenin bir başka örneğini de gerçekleştirmiştir.

Turing makinesi niteliğini taşıyan ikinci örnek 1943 yılı 6 ıncı ayında A.B.D de ENIAC adı ile matematikçi John von Neumann öncülüğünde gerçekleştirilmiştir.

1945 de John von Neumann yerleşik programlama birimi içeren bir makine mimarisini açıklamış ve bu tanıma uygun bir von Neumann makinesi ilk olarak İngiltere de Manchester üniversitesinde gerçekleştirilerek EDVAC olarak adlandırılmıştır.

1945 de Hovard H. Aiken'in gerçekleştirdiği makinenin kodlama sItemi CPC, Analitik Makinenin kodlama sistemine dayanmaktaydı. Bu da Charles Babbage-Ada Lovelace ikilisinin çalışmalarının ne kadar sağlam temellere dayandığının açık bir kanıtıdır.

Artık mimarilerinin kuramsal temlleri iyice yerleşmiş olan makinelerin kodlama sistemleri üzerine eğilinmeye başlanmış ve daha kolay programlama sağlayacak üst düzey (insana daha yakın) kodlama sistemleri geliştirilmeye başlanmıştır.

Yapılan ilk denemeler arasında en ilginçlerinden birisi 1954 de John W. Backus öncülüğünde IBM de geliştirilen FORTRAN (Formula Translation Language) programlama dilidir. FORTRAN, matematik ve uygulamalı bilimlerde en çok kullanılan programlama dilidir. İleri tarihlerde, FORTRAN II, III, IV, 66, 77, 95, 2005 sürümleri çıkartılmış olan bu dilin günümüzün programlama dili kısıtaslarına göre hayli geride kaldığı söylenebilir. Buna rağmen, geniş bir uygulama birikimi bulunmaktadır.

1958 de Associated Computing Machinery (ACM) öncülüğünde, İsviçre ETH Zürich de toplanan Avrupa ve ABD den bilim adamları, ilk adı IAL (International Algorithmic Language) olarak önerilen sonra adı ALGOL-58 olarak değiştirilen programlama dilini geliştirdiler. Algol, Fortran ile yaşanan bazı olumsuzlukların aşılabilmesi açısından önemlidir ve birçok modern bilgisayar diline model olmuştur.

1959 de CODASYL adlı bir komite tarafından önerilen COBOL programlama dili, ticari bilgilerin programlaması için uzun süre başarı ile uygulanmıştır. COBOL günümüzde giderek daha az uygulanmaktadır.

1964 de IBM ALGOL, FORTRAN ve COBOL dillerinin bir karışımı olan PL/I dilini geliştirdi. Her işe uygun olması düşünülen bu dil, bileşenlerinin uyumsuz özelliklerinden dolayı fazla kabul görmedi.

1966 da Beginner's All-purpose Symbolic Instruction Code adının akronimi olan BASIC Kemeny ve Kurtz tarafından Darthmouth College (A.B.D) de geliştirildi. BASIC basitliği yanında interaktif programlamada da öncülük yapmış ve ileride mikrobilgisayarların ilk kullandıkları programlama dili olmuştur. Günümüzde de halen kullanılmakta ve özellikle Visual BASIC sürümü geniş bir uygulama alanı bulmaktadır.

1966 da ETH den Prof. Nicklaus Wirth ve daha sonraları Cambridge de profesör olan C.A.R Hoare ALGOL diline dayanan ALGOL-W dilini geliştirdiler, bu dil ilk nesne yönelimli dil olma özelliğini taşımaktaydı ve daha sonra geliştirilen Pascal ve Modula dillerinin temelini oluşturdu.

1969 da Ken Thomson ve Dennis Ritchie tarafından bir sistem programlama dili olarak B önerildi. Bu dil daha sonra C ailesi dillerine öncülük edecektir.

1970 de Nicklaus Wirth ve Jensen tarafından Algol-W kökenli Pascal dili tanıtıldı. Bu dil, daha sonra Borland şirketi tarafından Turbo Pascal olarak geliştirildi ve mikrobilgisayarların BASIC den sonra kullandıkları en yaygın bilgisayar dili olarak geniş bir kullanıcı kitlesi buldu.

1970 lerde en büyük program alıcısı olan A.B.D Savunma Bakanlığı kısaca DoD (Department of Defense), satın aldığı programların çok değişik programlama dillerini kullandığı, bunların çoğunun donanım temelli olduğu, çoğunun hızla yeni bir sürümünün çıktığı oysa ki programlarıon en az yirmi hatta daha çok yıl kullanıldığı, sürüm farklılıkları ve kaynak çeşitliliği nedeni ile bakım zorlukları yaşandığı gerekçesi ile kendilerine en uygun bilgisayar dilinin arayışı içine girdi. Bu konuda 1975 de bir Üst Düzey Programlama Dili Seçim Komitesi , Higher Order Language Working Group (HOLWG) kuruldu. Bu komite, en uygun programlama dili standartlarını ilk olarak Strawman, sonra Woodenman, 1976 da ise Tinman olarak geliştirdi. Tinman spesifikasyonuna tam uyabilen bir programlama dili saptanamadı fakat komite, Pascal, ALGOL-68 veya PL/I nın iyi bir başlangıç olacağını belirtti.

1977 de komite, geliştirdiği en son standardı, Ironman adı ile yayınladı ve bu spesifikasyonu karşılayabilecek bir programlama dili için ihale açıldı. Bu ihaleye 17 teklif verildi ve içlerinden dördü incelemeye yeterli görüldü. Bunlara, mavi, sarı, yeşil ve kırmızı kod adları verildi ve içlerinden yeşil ve kırmızı kod adlı projeler finalist olarak seçildi.

1978 de komite en son spesifikasyon olan Steelman'ı yayınladı ve yapılan en son değerlendirmede yeşil kod adlı Jean İchbiah önderliğinde Fransız Bull (Honeywell) şirketinin teklifi en yeterli öneri olarak ihaleyi kazandı.

Programlama dili, Cii Honeywell Bull sonra Alsys ve Honeywell Systems and Research Center tarafından DoD kontratı altında gerçekleştirildi.

1979 da, bu ana kadar kod adı DoD-1 olan bu programlama diline, Augusta Ada Byron (Lady Lovelace) onuruna Ada adı verildi.

1980 de Ada programlama dili, Military Standard 1815 olarak kabul edildi. (1815 Ada Lovelace'in doğum yılıdır).

1980 lerde mikrobilgisayarların gelişmesi ile büyük bir bilgisayar devrimi yaşanmaya başlandı. Bu değişim, günümüzün ev bilgisayarları devrinin başlangıcı oldu. Dünyada bilgisayarlar olağanüstü yaygınlaşmaya başladı.

1980 yılı bitiminde HOLWG yerini AJPO (Ada Joint Program Office)' e bıraktı.

1983 de ANSI Miltary Standard 1815'i değerlendirdi ve tavsiyeleri sonunda Military Standard 1815A olarak yenilenen Ada 83 Standardı ANSI standardı (ANSI/MIL-STD 1815A) olarak kabul edildi.

Ada 83, ANSI standartları fazla değiştirilmeden 1987 de ISO-8652:1987 standardı olarak kabul edildi.

AJPO Ada 95 projesini başlattı ve S. Tucker-Taft proje başkanlığına getirildi, Intermetrics Inc. revizyon ve uyarlama işlemininin gerçekleştirilmesi için görevlendirildi.

1995 de Ada 95 ilk nesne yönelimli (object oriented) programlama dili niteliği ile, ISO ve ANSI standardı ISO-1856:1995 olarak tescil edildi. Bu şekilde Ada 83 ile Ada 95 arasında büyük bir gelişme gerçekleşmiş oldu. Ada programlama dilinin kullanımının özendirilmesi ve genel kullanımının arttırılması amacı ile A.B.D. Hava Kuvvetleri GNAT derleyicisinin yapımına büyük kaynak sağladı ve projenin tamamlanması ile ile bu derleyiciyi özgür yazılıma armağan etti. Bugün bu derleyici, GNU derleyici ailesinin bir üyesidir ve halen geliştirimeye devam edilmektedir.

1998 de AJPO kapandı. Bu kapanışın C++ standardının yayınlandığı yıl olması dikkat çekicidir.

Ada 95 geliştirilmeye devam edildi ve ilk teknik düzeltim (Technical Corrigendum) Ekim 2001 de yayınlandı. Bu teknik düzeltim, 9 Mart 2007 de Ada 95 Standardına Önemli Ekleme I (Amendment I) olarak kabul edilerek ISO/IEC 8652:1995/Amd 1:2007 olarak yayınlandı. Bu değişiklik Ada 95 standardını fazla değiştirmedi fakat özellikle nesne yönelimli özelliklerini güçlendirdi. Bu yeni değişiklikle Ada programlama dili Ada 2005 olarak adlandırıldı. Ada 2005 standardı geliştirilmeye devam edildi ve yeni bir Önemli Ekleme II (Amendment II) olarak düzenlendi. Düzenleme çalışmalarının 2012 de tamamlanacağı düşünülürken, çalışma komitesinin çabaları ile düzenleme 2010 da tamamlandı. Şu anda, Önemli Ekleme II (Amendment II) nin ISO ya sunulması aşaması devam etmektedir ve bu Eklemenın ISO tarafından kabul edilmesinde kuşku olmamasına karşın henüz son yayınlanmış resmi standart, ISO/IEC 8652:1995/Amd 1:2007 yani Ada 95 Önemli Ekleme I (kullanım adı ile Ada 2005) standardıdır. Buna karşılık, Önemli Ekleme II, resmi geliştirme komitesinde kabul edilmiş olduğundan, Ada programlama dilinin son ve en güncel sürümü olarak nitelik kazanmış olmaktadır. Bu sürüm Ada 2012 olarak adlandırılmıştır. Ada 2012, Ada 2005 standardında çoğu kuramsal planda bazı değişikler ve düzeltmeler yapılarak gerçekleştirilmiştir.

Ada spesifikasyonunda Ada 2012 olarak adlandırılan en son değişikliklerin kamu bilgisine öncelikle kazandırılması amacı ile, henüz Ada 2005 spesifikasyonuna yapılmış olan Önemli Ekleme II nin ISO tarafından onaylanması yapılmadan, The Ada Resource Association önerisi ve desteği ile, Ada Conformity Assessment Authority tarafından, Ada Reference Manual ISO/IEC 8652:1995(E) with Technical Corrigendum 1 and Amendment 1 and Amendment 2 (Draft 9) Language and Standard Libraries olarak yayınlanmıştır. Bu spesifikasyon Ada 2012 olarak adlandırılmış olup, Ada 95 olarak adlandırılmış olan (ISO/IEC 8652:1995): Information Technology -- Programming Languages -- Ada standardına,

nin uyarlanması ile düzenlenmiş ve buna Consolidated Reference Manual veya Ada 2012 Language Reference Manual (LRM) adı verilmiştir. Biz bu belgeyi kısaca, Ada 2012 Spesifikasyonu olarak adlandıracağız. Ada 2012 Spesifikasyonu, HTML ve pdf olarak, http://www.ada-auth.org/standards/ada12.html adresinden indirilebillr. Ada 2012 spesifikasyonu (Draft 9) ek 2 de HTML ve pdf olarak verilmiştir. Bu notlar da Ada 2012 spesifikasyonuna göre hazırlanmıştır.

Ada 2012 spesifikasyonunun, ilk bakışta Ada 2005 standardına büyük değişikler getirmediği ve daha çok Ada 95 den başlayarak Ada standardlarının kuramsal planda bazı belirsizliklerinin giderilmesi ve standart üzerinde küçük bazı düzeltmelerin ve dilin yapısını değiştirmeyen eklemelerin yapılması ile oluştuğu görülmektedir. Bunu gözönüne alan geliştirici grup da standarda yeni bir isim vermektense sadece Eklemeler (Annotations) olarak adlandırmıştır. Ada 2012 spesifikasyonu henüz çok yeni olduğundan, Ada 2005 ve Ada 2012 farkları literatürde detaylı olarak değerlendirilmemiştir. Ada 2012 standardını destekleyen GNAT derleyicisinin son sürümü Ağustos 2010 da kullanıma açılmıştır. Bu çalışmada da derleyinin bu son sürümü kullanılmıştır. Derleyicinin yeni bir sürümünün 2011 yılında yapılacağı açıklanmıştır.

Başlıca Kaynaklar :

1.2 - Ada Programlama Dilinin Yetenekleri

Ada programlama dili, programcılara en geniş olanakları sunabilen gelişkin bir programlama dilidir. Ada programlama dilinin sağladığı olanakları günümüzde hiçbir programlama dili kullanıcılarına sunamamaktadır. Bu olanaklar o kadar geniştir ki burada ancak en önemlilerini inceleyebileceğiz.

Tüm bu özellikler, bir programcı için bulunmaz bir hazine niteliğindedir. Böyle bir program dili varken, bir programcının başka bir program dili araması düşünülemez.

Not : Aşağıdaki satırlar, http://www.embedded.com/design/224200704?pgno=3 dan alınmış en yeni bir editoryal yorumu içermektedir. Bu yorum, bir profesyonelin Ada programlama dilinin kullanımını doğrulayan en gerçekçi yorumu olarak dikkate alınabilir.

...Also, you cannot just dismiss returning a pointer to a local variable as a beginner's mistake. It can be done in less obvious ways, for one thing. But the main point is that it is obviously dangerous and should simply be forbidden. Ada has rules that are designed to prevent such a mistake from even compiling. They make it less permissive than C in this respect. This is a good thing.

C programming is a minefield of these sorts of bugs, most of which can not occur or can readily be precluded in Ada, in part because Ada has a proper type system. The amount of effort that is required to debug and gain confidence in a C program is much greater, and you end up relying a lot on conventions that are difficult to enforce, rather than rules that are checked mechanically (as your example shows). And on top of that C syntax is much harder to read. In my experience it is typically a lot more difficult to gain confidence in 10_000 line C projects than in 100_000 line Ada ones. I think that this is the main point of the article.

Edited by: ESD editorial staff: SRambo on Apr 9, 2010 9:52 AM

Not : Bu kaynak, Ada libre sitesinden alınmıştır. Yine aynı siteden okunması gereken bir başka kaynak, AdaCore başkanı ve New York Universitesi Profesörü Robert Dewar'ın (AJPO için ADA derleyicisini oluşturan ekibin başkanı, bu derleyici bugün GNU GNAT derleyicisi olarak özgürce kullanılmaktadır) yazmış olduğu bir ilginç makaledir. Bu makale, Java-Ada-C++ karşılaştırmasını yapmakta ve Ada'nın tartışılmaz üstünlüğünü ortaya koymaktadır:

A principled approach to software Engineering Education, or Java considered Harmful

Valid XHTML 1.1