Gerçek programcı Herhangi bir Dilde Yazabilir (C, Java, Lisp, Ada)

Belirli yaşlardaki profosyonel yazılımcılar iki jenerasyon önce, yapısal programlamanın moda olduğu zamanlarda söylenen şu sloganı hatırlayacakalardır: Gerçek programcılar herhangi bir dilde Fortran yazabilir. Bu slogan, programcıların düşünce alışkanlıklarının öğrendikleri ilk programlama dilliyle nasıl etkilendiğini hatırlatır ve bütün programlama işlerinizi tek bir dille yapıyorsanız bu alışkanlıkları değiştirmenin ne kadar zor olduğunu gösterir. Diğer taraftan söylemek isteriz ki ehil bir programcı birkaç değişik programlama dilini kullanabilir ve bu dillerden birinde tercih edilen zihinsel araçları diğer programlama diliyle yazarken bile kullanabilir. Örneğin Ada veya C++ gibi imperatif bir dilin kullanıcısı özyinelemeli yapıları gerçekleştirirken Lisp ve ML[65] kullanarak kazandığı fonksiyonel stili uygulayabilmelidir. Bu, değişik programlama dillerini derinliğine öğrenmenin öneminin göstergelerinden biridir. iyi öğrenilmiş dillerin gerçek programcıların zihinsel araç setini oluşturduğunu ve bunun önemli olduğunu düşünüyoruz. Örneğin, gerçek programcı C'de kalıtım ve dinamik gönderme (dispatching), Lisp'de bilgi saklama (information hiding), Ada'da ağaç manipülasyon kütüphaneleri ve Java hariç her dilde çöp toplama yapabilmelidir. Bu yüzden öğrenilen dillerin çeşitliliği iyi yetişmiş bir programcı için vazgeçilmezdir.

C neden önemlidir?

C herkesin bilmesi gereken düşük seviye bir dildir. Taşınabilir Makine dili olarak görülebilebileceği gibi, makine seviyesini ortaya çıkarır ve öğrenciyi yazılım ve donanım arasındaki ilişkiyi anlamaya zorlar. Performans analizi daha basittir çünkü yazılımın tüm durumlarının maliyeti açıktır. Son olarak, derleyiciler (örneğin GCC) üretilen assembli kodun incelenmesini basitleştirir ve bu da Makine dilini ve mimariyi anlamanın mükemmel bir aracıdır.

C++ Neden Önemlidir?

C++ C'ye modern yazılım mühendisliğinin temel kavramlarını getirdi: sınıf ve isim uzaylarıyla (namespace) sarmalama, özel ve korumalı veri ve operasyonlar ile bilgi saklama, sanal metodlar ve türetilmiş sınıflarla genişleyebilme, vb. C++ ayrıca yapıcılar ve yıkıcılar ile, tam bir çöp toplama mekanizması olmadan bellek yönetimi yapmayı sağlar.

Lisp Neden Önemlidir?

Her programcı fonksiyonel dilleri ve önemli bir kavram olan referans saydamlığını bilmelidir. Çoğu programcı imperatif dilleri daha sezgisel bulsa da, bir çok bağlamda fonksiyonel, durumsuz (stateless) stilin açık, doğal, anlaşılması kolay ve verimli olduğunu farkedebilmelidir.

Lisp kullanmanın başka bir faysadı da programın soyut sözdizim ile yazılması, böylece dahili temsilin çok kullanıldığı derleyici, ayrıştırma (parsing) ve kod üretimi konularını öğrenmeyi sağlamasıdır. Lisp bilmk dil işleme ile ilgili herhangi bir yazılım için mükemmel bir ön hazırlıktır.

Son olarak Lisp (en azından zayıf biçimi olan Scheme) çok karmaşık öz-tanımlamaları yapabilir. Lisp ile yazılmış bir Lisp yorumlayıcısını görmek tüm bilgisayar mühendislerinin tecrübe etmesi gereken bir şeydir.

Java Neden Önemlidir?

Java'nın ilk veya tek programlama dili olması hakkındaki yorumlarımıza rağmen, Java CS eğitiminde önemli bir rol oynar. Burada Java'nın, gerçek programcının yetenekleri arasında olması gereken sadece iki yönünü ele alacağız:

1.eş-zamanalı programlamayı anlama (iş-sıralarının (thread) temel, düşük-seviye bir model oluşturmasından dolayı).

2.Refleksiyon, diğer bir deyişle program kendi durumunu inceleyecek şekilde yazılabileceğinin ve dinamik olarak değişen bir ortamda kendi davranışını tespit edebileceğinin anlaşılması.

Ada Neden Önemlidir?

Ada yazılım mühendislerinin dilidir. Programlama dilleri derslerinde gösterilmese bile yazılım mühendisliği derslerinde kullanılan bir dildir. Bunun sebebi Ada'nın sahip olduğu keskin yazımlı (strong typing), sarmalama (encapsulation), bilgi saklama, eş zamanlılık, generic programlama, kalıtım ve pek çok diğer özelliklerindendir. Bu özellikler dilin belirli teknik özellikleriyle ortaya çıkar. Bizim ve müşterilerimizin tecrübelerinden şunu söyleyebiliriz ki gerçek bir programcı herhangi bir dilde Ada yazabilir. Örneğin Ada'nın paket modeline alışkın bir Ada programcısı -ki öyleyse belirtimlerle gerçekleştirimleri birbirinden ayırabilir- C ile programlama yaparken Ada'daki paket stiline uygun olarak iyi tanımlanmış başlık (header) dosyaları yazma eğiliminde olacaktır. Programcı Ada programlamaya benzer bir şekilde altprogramlar arasında değişmesi muhtemel yapılar kullanırken tutarlılık ve ölçü kontrolleri ekleyecektir [6]. Eş-zamanlı programları iyi tanımlanmış senkronizasyon ve iletişim mekanizmaları ile görevlere ve korumalı nesnelere bölerek organize edecektir.

Ada'nın eş zamanlılık özelliği çağımızın çok çekirdekli mimarilerinde ayrıca önemlidir. Şunu da farketmemiz sürpriz olmuştur ki 30 yıl önce Ada güvenli yazım ve eş zamanlılık özellikleri ile tasarlandığında bu mimariler yeni yeni ortaya çıkıyorlardı.



[65] Bir çok programlama dili ve sistem isimleri şu anda bilinen şekilleriyle artık normal teleffuzları uygulanabilir olmayan kısaltmalardan türemişlerdir. ML, Lisp, GCC, PHP ve SPARK bu katagoride sayılabilir.