Bilgisayar Bilimleri -20- Yüksek Seviye Dil Örnekleri

Bu başlıkta yüksek seviye programlama dillerinden örnek getireceğiz. Bundan sonra C dilini anlatmayı düşünsem de sitemizde yazdığımız C programlama ile makalelerin olmasından dolayı çoğu yerde tekrara düşeceğimden okuyucuyu o makalelere yönlendirmek zorundayım. İlerleyen zamanlarda C programlama yazılarını bitireceğimizin haberini de buradan verelim. Ama öncelikle yüksek seviye programlama dillerinin avantajlarını anlatarak yazıya başlayalım.

Yüksek seviye programlama dillerinde programcı veriler üzerinde çalışırken Assembly dilinde olduğu gibi verinin nerede kaydedildiğini, hangi adresten çağırılacağını veya 4 baytlık bir verinin hangi adresler arasına yazılacağını düşünmek zorunda değildir. Programcı sabit veri ise sabit olarak tanımını yapar. Eğer bir değişken veri çeşidiyse değişkeni tip ve ismiyle tanımlar ve onun üzerinde çalışır. Bellek adreslerini hiç dert etmemek en büyük avantajlardan biridir.

İkinci büyük avantaj ise artık programcı alt seviye ve basit donanım işleriyle uğraşmak yerine büyük düşünebilme fırsatı bulur. Programdaki ince ayrıntılarla uğraşmaktan büyük resmi görmemize engel olan Assembly dili yerine ayrıntıların azaldığı, kod bloklarının fonksiyon haline geldiği hatta birbiriyle alakalı fonksiyonların da kütüphane olarak anıldığı bir ortamda artık binlerce makine kodu yerine birkaç kütüphane ve birkaç düzine fonksiyonla çalışma fırsatı bulur. Bu da büyük programlar yazabilmenin önünü açar.

Bir diğer avantaj ise makine dilinde (yani Assembly dilinde) yazılmış programların yerine yüksek seviye dilde program yazmak programı oldukça taşınabilir hale getirecektir. O halde programı yazmakla meşgul oluruz yazdığımız programı çeşitli makinelere uydurmakla değil. Bu da bizim gerçek programa odaklanmamıza ve algoritma kurmamıza daha fazla zaman tanır. Yukarıda Assembly dili yerine makine dili dememiz gayet doğrudur. Çünkü siz de Assembly dilinin makine dilinin kısa bir çevirisi olduğunu biliyorsunuz.

Prosedürel Diller

Daha öncesinde emirli diller olarak da bahsettiğimiz prosedürel diller günümüzde kullanılan programlama dillerinin büyük bir kısmını oluşturmaktadır. Ada, C, C++, Python, Java gibi pek çok dil bu kategori kapsamına girmektedir. Prosedürel diller adından da anlaşılacağı üzere komutların sıra halinde dizildiği ve genelde tek satırda tek komut ilkesince program yazılan dillerdir. Aynı algoritma kurarken yaptığımız gibi prosedürel dillerde de şart ve döngü ifadeleri kapsamına sıralanmış komutlar yerleştirilir ve böylelikle program meydana gelmiş olur. Burada yazdığımız program ayrı ayrı işleri yapmak üzere parçalara ayrılabilir ve hatta bu kod parçaları ayrı birer dosya da olabilir.

Programcılığa yeni başlayanlar aynı yeni dil öğrenenler gibi bütün dillerin birbirinden çok farklı olduğu ve hiç benzemediği yanılgısına kapılabilir. O yüzden üniversitelerde yabancı dil bölümlerinde dilbilim dersleri ilk yıllardan itibaren okutulmaktadır. Temel bir dilbilim bilgisine sahip olan birisi dünya dillerini sınıflandırabilir, karşılaştırabilir ve aralarındaki benzerliği ortak dil özellikleri üzerinden saptayabilir. Eğer karşısına yeni bir dil çıkarsa bu dili dil ailesi kapsamında ele alır ve o dili öğrenirken sıfırdan bir dil öğreniyormuş gibi davranmaz. Ama dilbiliminden habersiz biri yabancı dil öğrenmeye kalktığında belki öğrendiği 5-6 dilden sonra bunu tecrübe ederek öğrenebilir. Bu noktada belki bazen sırf dilde yer alan yabancı kelimelerden dolayı iki dilin birbirine benzediği iddiasında bile bulunabilir.

İnsan dilinde olduğu gibi programlama dillerinde de bu yanılgıya düşmemek için diller arası bir sınıflandırma yapılmıştır ve dillerin genel özellikleri dillerden bağımsız olarak kaynaklarda anlatılmıştır. Bu belirttiğimiz özelliklerin sayısı oldukça fazla olup burada anlatmamız aşırı ayrıntı sayılacağı için okuyucuya bırakıyoruz. Prosedürel, fonksiyonel, mantıksal tipte programlama dillerinin yanında nesne yönlü programlama dilleri de prosedürel dillerin içerisine dahil edilebilir. Nesne yönlü programlama diline örnek olarak C++ dilini verebiliriz. C++ dili aslında bir prosedürel bir dil olan C diline nesne ve ilgili kavramların ilave edilmesiyle ortaya çıkmıştır. Bu arada nesne tabanlı ve nesne yönlü programlama dilleri ayrı olarak object-oriented ve object-based olarak zikredilmektedir. İleri okuma için şu iki Vikipedi makalesinden faydalanabilirsiniz.

https://en.wikipedia.org/wiki/Programming_paradigm

https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms

Program Örnekleri

Burada günümüzde yaygın olarak kullanılan programlama dillerinden örnekler vereceğim ve yüksek seviye dilleri tanımanıza yardımcı olacağım. Diğer bilgisayar bilimi kitaplarında çoğu tarihe geçmiş veya pek kullanımda olmayan programlama dillerine ait örnekler olsa da ben bunları sizin için çok da yararlı bulmuyorum. Bu yazıları okuyanların pek çoğu C, C++, C# veya Java gibi dilleri öğrenecekse bu dillerden örnek vermemiz en doğrusudur.

Öncelikle C++ dilinde yazılmış bir program örneğine bakalım.

Eğer C dilini biliyorsanız bu programın C diline oldukça benzediğini görebilirsiniz. Burada C++ dilinde konsola “Merhaba Dunya!” yazdırdık. Burada dil üzerinde yapılan bazı modifiyeler haricinde dil temel olarak C dili ile aynı olsa da Nesne-Sınıf ve ileri yazılım özellikleri eklendiğinden ileri özellikleri kullanmak istediğimizde C dilinden farklılığı ortaya çıkmaktadır. Aslında C++ dili C dilinde olmayan özelliklerin C diline yüklenmesi bir diğer tabirle dilin güncellenmesi gibi görünebilir. Operatörleri aşırı yükleme kavramı C dilinde olmasa da burada C dilinde bit kaydırma operatörü olan “<<” operatörü çok farklı bir yerde çok farklı bir görevde kullanılabilmiştir. C++ dili C diline benzerliğinden dolayı alt seviye özelliklere sahiptir ve aynı zamanda ek özelliklerinden dolayı daha yüksek seviyede programcılık yapılabilir. Bu da hem performanslı hem de çok özellikli bir dil demektir. Yalnız içerdiği kavramların ve çalışma alanının genişliğinden dolayı öğrenmesi ve kullanması zor bir dildir. Günümüzde C++ dili ile pek çok yüksek performans gerektiren uygulama yazılmaktadır. Bunlardan başlıcaları oyunlar, oyun motorları, grafik işlem programları, bilgisayar destekli çizim programları, ofis programları, internet tarayıcılarıdır. Şimdi aynı program örneğini C dili üzerinden verelim, benzerlik ve farklılıkları görelim.

 

C dilinin daha sade bir yapıya sahip olduğunu görebilirsiniz. Günümüzde kullanılan yüksek seviye programlama dilleri arasında en sade yapıya sahip olan dilin C dili olduğunu söyleyebilirim. Bunun sebebi C dilinin kalabalıktan uzak, donanıma daha yakın ve ileri özelliklerle şişirilmemiş olmasıdır. Bu da dilin eskiliğinden kaynaklanır. C dilinde artık günümüz dillerinde olmazsa olmaz gibi olan nesne ve sınıflar bile yoktur. Diğer bir programlama dilini 1000 sayfada anlatabiliyorsanız C dilini 300 sayfada anlatabilirsiniz. Yalnız bu asla C dilinin güçsüz ve kolay olduğu anlamına gelmemelidir. C dili ile oldukça karmaşık programlar da yazılabilir ve bu yönde bir engel yoktur. İşletim sistemi, programlama dilleri, oyun motorları bunlara örnek olarak verilebilir. Günümüzde kullanılan programlama dillerinin çoğu C dili üzerine yazılmış veya C dilini esas almıştır. Gömülü sistemlerde kullanılan bir numaralı dil C dilidir ve alternatifi bulunamamaktadır. Çünkü hiçbir popüler yüksek seviye dil C dilinin verdiği performansı verememektedir. C dilinde program yazarken programcılığın temel ilkelerini çok daha fazla kullanırız. Karşımıza hazır fonksiyonlar veya kütüphaneler pek çıkmaz. Bunları kendimiz yazarız. O yüzden öğrenilmesi gereken ilk programlama dili benim görüşüme göre C dilidir.

Yukarıda Java diline ait “Merhaba Dünya” program örneğini verdik. Java dilinden daha önce bahsetmiştik ve nasıl bir devrim yaptığını söylemiştik. Java dili C++ dilinde ek özellik gibi görünen nesne-sınıf özelliğini dilin bütün parçaları içerisine yaymıştır. Yukarıda göreceğiniz üzere ekrana “Merhaba Dünya!” yazdırmak için bile nesne yönlü programlamaya ihtiyaç duymaktayız. Operatörler ve söz dizimi C ve C++ dillerine oldukça benzemektedir çünkü Java dili meydana gelirken bu dillerden büyük ölçüde ilham alınmıştır. Şimdi ise Java dilinden ilham alındığı bariz belli olan C# dilinde aynı programı görelim.

Programlama dilleri insan dillerinde olduğu gibi farklı dil aileleri arasındaki uzaklık kadar birbirine uzak değildir. Daha çok İngilizce, Almanca, Danca, İsveççe ve biraz da Fransızca, İspanyolca gibi bir benzerliğe sahiptir. Bu dillerin birbirinden tamamen ayrı olduğunu düşünmek bu yabancı dillerden bir kaçını öğrenecek biri için zararlı olabilir. Sizin de programlama dillerinin birbirinden tamamen ayrı olduğunu düşünmeniz birbirleri arasında bağlantı kuramamanıza ve mantığını kavrayamamanıza yol açar.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.