Temel C Programlama -3- Bilgisayar Yazılımı Temelleri

Alt seviye programlama yaparken bilgisayar yazılımından çok mikroişlemci yazılımı tabirini kullanmamız gerekir. Çünkü biz bilgisayar kasasına veya anakarta yönelik değil doğrudan doğruya mikroişlemcinin çalıştıracağı komutları yazmaktayız. Donanım soyutlamasının tam manasıyla görüldüğü yüksek seviye diller ve geliştirme ortamlarında o platforma göre yazdığımız yazılım bile temelde bir alt seviye programın ürettiği yazılım ile aynı özelliği taşır. Eninde sonunda mikroişlemci komut kümesini işleten ve 1 ve 0’lardan oluşan makine kodu bilgisayar yazılımını çalıştırmaktadır.

Gömülü sistemlerde programın çalışması için .hex uzantılı ve makine dilindeki kodu mikrodenetleyicinin program hafızasına yükleriz. Yani programın program olarak çalışması için öncelikle metin editöründe metin halinde bulunan ve programlama dilinde yazılmış olan programın makine koduna çevrilmesi gerekir. BASIC, Python gibi dillerde çevirmen yardımıyla (interpreter) derlenmeden de program çalıştırılabilmektedir. Ama bizim alışkın olduğumuz C, C++ gibi dillerde programın muhakkak makine diline çevrilmesi gereklidir. Yani C dilinde mikrodenetleyici için program yazıp bunu makine dilinde çalıştırmakla bilgisayar için C dilinde uygulama yazıp bunu çalıştırmak arasında çok fark yoktur. .hex uzantılı program burada yerini .exe uzantılı programa bırakmaktadır. İşletim sistemi ise bu makine kodunu çalıştıran programı kısıtlar, denetler ve düzenler. Örneğin bu program her makine kodunu istediği gibi çalıştırıp her adrese erişim sağlayamaz. Diğer programların ve ana programın (işletim sistemi) sağlıklı çalışması için bu uygulamaya bir kısıtlama getirilmesi gereklidir. Arada güvenlik açığı olur da bu programlar kritik noktalara ulaşırsa bunlara “bilgisayar virüsü” adı verilir. Bilgisayar virüslerinin normal bir programdan hiçbir farkı yoktur fakat çalışma mekanizması farklıdır.

Bilgisayarlarda işletim sisteminin olmasının en büyük sebeplerinden biri de bu güvenliği sağlayabilmesidir. Güven vermeyen işletim sistemleri işletim sistemi olabilmeyi tam anlamıyla yerine getiremez. O yüzden Linux tabanlı işletim sistemleri virüssüz ve güvenli olmalarından dolayı işletim sisteminde olması gereken özellikleri daha iyi karşılamaktadır. İşletim sistemlerine baktığımızda ise pek çok çeşitte işletim sistemlerini görsek de üç ana işletim sisteminin günümüz bilgisayarlarında etkin olarak kullanıldığını görürüz. Bunlardan biri başlarda DOS tabanlı olarak piyasaya sürülmüş olan Windows diğer ikisi ise Unix tabanlı olan Linux ve MacOS işletim sistemleridir. Windows şu an DOS tabanlı olmasa da Windows 98 kullanırken DOS programlarına çift tıklayarak programları açmamız mümkündü. Windows ve MacOS işletim sistemleri kapalı kaynak olduğundan perde arkasında ne olduğunu bize söylememekteler. Yalnız bunların kapalı kaynak olması onları kullanarak program yazamayacağımız anlamına gelmez. Windows’un kütüphanelerini, derleyicilerini ve öğelerini kullanarak yine programımızı yazabiliriz. Yazdığımız program işletim sistemi platformunda olduğu için işletim sistemi altında çalışacaktır. O yüzden Linux programları Windows’da, Windows programları da Linux’de çalışamaz. Aynı mimari, aynı platform ve aynı donanım olmasına karşın makine dilinde yazılan programlar işletim sistemine ait parçaları kullandığı ve dosya sistemleri farklı olduğu için birbiriyle uyumlu olmamaktadır.

Biz Linux işletim sistemi üzerinde program yazmak istediğimizde ilk olarak GNU kavramıyla karşılaşırız. GNU, FSF yani özgür yazılım vakfının en büyük projelerinden biridir ve bir açık kaynak derleyici arşividir. Bu derleyicileri herhangi bir şirkete veya platforma bağlı kalmadan özgürce ve herkes kullanabilir. Windows’da program yazmak istediğimizde ise karşımıza genelde Visual Studio ve .NET Framework çıkmaktadır. Bu Microsoft’un kendi ürünlerine program yazmak isteyen geliştiricilerine verdiği araç ve kütüphanelerdir. Visual Studio’yu geliştirerek ve kütüphaneleri artırarak geliştiricileri elinde tutsa da Windows işletim sisteminde farklı bir derleyici ve geliştirme stüdyosu ile program yazan bir derleyici de yine eninde sonunda Windows öğelerini ve kütüphaneleri kullanmak zorunda kalacaktır. Çünkü donanımı denetleyen işletim sistemi olmaktadır.

Visual Basic, Visual C++, Visual C# Windows’da masaüstü program yazmakta tercih edilen yöntemlerden olmuştur. Visual Basic ve C# hakkında 1000 sayfaya yakın pek çok Türkçe kitap yazılmıştır. Fakat bugün uzun yıllardır kitap yazan bir yazarın Visual Basic kitabını incelediğimde F1 yardım menüsünün tercümesinden ibaret olduğunu gördüm. Pek çok hazır fonksiyonu, kütüphaneyi ve özelliği içeren bu platformlarda programlayıcı programlama dilini çok bilip anlamasa da hazır olan parçaları birbirine birleştirerek program yazabilmektedir. O yüzden bilişim dünyasında “buton altı programcılık” denen bir tabir ortaya çıkmıştır. Bu tabir Visual Studio gibi ortamlarda pencere üzerine birkaç düğmeyi sürükleyip düğme fonksiyonlarına birkaç satır ezbere ya da kopyala yapıştır kod yazma işini bize anlatmaktadır. Böyle bir yazılımcılık ve geliştiriciliği asla tasvip etmiyoruz. Siz C ve C++ dillerini öğrendiğinizde asla tek bir platforma veya firmaya bağlı kalmayacaksınız. İstediğiniz derleyicide, kütüphanede, platformda özgürce program yazabileceksiniz. Çünkü C ve C++ dilleri herhangi bir firmanın ticari ürünü değildir. O yönüyle kendileri günümüzde kullanılan çoğu dilden çok daha ayrıcalıklı bir noktadır.

Yazılıma dair önemli gördüğümüz noktaları bu başlık altında sizlerle paylaştık. Bir sonraki başlıkta programlama dilleri hakkında bir karşılaştırma yapacağız ve yazılım çeşitlerinden bahsedeceğiz.

Last updated