Cumartesi, Ekim 22, 2005

Bilgisayar programı nedir?

Bilgisayara bir işi yaptırmak için verdiğimiz komutlar bütününe bilgisayar programı dendiğini bilgisayarlarla az çok ilişkisi olan herkes bilmektedir. Bilgisayar programı bir programlama dili kullanarak yazılır. Programı çalıştırdığımızda bilgisayar ilgili komutları okuyarak programda kendisine tarif edilen işi yapar. Aslında günümüzde her türlü elektronik cihaz bu tür programlar barındırır ve bunları işleterek değişik işler yaparlar. Bir çamaşır makinesini düşünürsek çamaşır makinelerinde A,B,C,D... gibi harflerle isimlendirilmiş programlar bulunur. Mesela A programını işletirsek makine önceden belirlenmiş miktarda su çeker sonra onu ısıtır sonra çamaşırları içine koyduğumuz tamburu belli bir hızda birkaç tur sola sonra sağa çevirir sonra belli bir süre bekler, vs.vs bu şekilde devam eder. A programı beyaz çamaşırlar için işletilir. Eğer makineden renki çamaşırlar için kullanılan D programını işletmesini istersek o zaman farklı yıkama, bekletme ve sıkma metodu işleterek çalışmaya başlayacaktır. Temel mantık açısından bilgisayar programları da benzer şekilde çalışır. Tabiiki bir çamaşır makinesine göre daha yetenekli bir cihaz olduğu için onun işleteceği programlar daha fonksiyonel olmak durumundadır.

Bilgisayar programları yazmak için birçok dil vardır. Bir programlama dilini öğrenmek aslında bilgisayarların çalışma mantığını kavrayabilmiş bir kişi için çok kolaydır. Modern program geliştirme araçları dilin yanısıra birçok yardımcı araç içerir. Bir program yazabilmek için dilin yanısıra bu yan bileşenlerin de öğrenilmesi gerekir. Bu yan bileşenlere ve yardımcı araçlara genel olarak programlama arabirimleri denmektedir. Örneğin yazıcı ile ilgili yardımcı araçları kullanmadan çıktı alabilmek mümkündür ama çok zor bir iştir. Ancak yazılım üreticileri yazıcıdan çıktı almakla ilgili yardımcı programlar yazarlar ve bunları işletim sistemine eklerler. Bu sayede programcıya düşen iş birkaç basit komutu işletmektir. Yani yazıcıdan çıktı almak için programlama dilinin yanısıra yazıcı yardımcılarını da öğrenmek gerekir. Yazdığımız programın türüne göre bu arabirimleri kullanmayı öğreniriz. Örneğin veritabanı programı yazanlar veri kaydetmek, silmek, düzenlemek gibi işler için SQL kullanırlar. Oyun programcıları ekrana istedikleri grafikleri çizebilmek için DirectX kullanırlar. Eğer DirectX arabirimi olmasaydı programcı direk ekran kartına ulaşan kodlar yazmak zorunda kalacaktı. Ayrıca yazdığı kodun her ekran kartında çalışacağı da garanti olmayacaktı. DirectX oyun programları ile ekran kartları arasındaki iletişimi sağlayan arabirim olarak görev yapmaktadır. Bu sayede bir oyun çalışırken bilgisayara takılı ekran kartının ne olduğuyla pek ilgilenmez. Bir oyun programcısı SQL ile hiç işi olmayacağı için bu aracı kullanmayı bilmeyebilir. Kısacası bir programlama dili öğrenirken yapmak istediğimiz programın türüne göre yardımcı arabirimleri de öğrenmemiz gerekir ki genellikle bunları öğrenmek dili öğrenmekten daha çok zaman alabilmektedir.

Bu arabirimlerin en temeli işletim sistemidir. İşletim sistemleri bütün programların altında çalışan programlardır ve bilgisayar açılırken otomatik olarak yüklenerek bilgisayarın işlevlerini kullanıma açarlar. Günümüzde en yaygın kullanılan işletim sistemleri Windows ve Linux'tur. İşletim sistemleri programları çalıştırır ve onların isteklerine cevap verirler. İşletim sistemini kullanmadan direk harddiske ulaşarak bir dosya kaydetmek temelde çok zor bir iştir. Harddisk içinde fiziksel olarak birkaç tane CD benzeri manyetik disk bulunur ve bilgiler bu manyetik yüzeyler üzerine kaydedilir. Bir dosyayı kaydederken diske kaydetme işini yapan program bu dosyanın hangi diskin hangi yüzüne ve hangi bölümüne yazıldığını bilmelidir ve gerektiğinde bu dosyayı tekrar bulabilmelidir. İşletim sistemi sayesinde bu karmaşık işleri programcı hiç düşünmez çünkü işletim sistemi bu tür diske kaydetme, silme, okuma gibi işleri yapmaktadır. Programcıya düşen işletim sisteminin bu işleri yapmak için programcıların erişimine sunduğu arabirime gerekli komutları vermektir. Aslında işletim sistemlerinin bu arabirimleri de çoğu programcı için karmaşıktır. Çünkü programcının ihtiyacı olabilecek her türlü işlemi yapabilmesi için bu yardımcılar birçok komut sunarlar. Delphi, .Net, Java gibi modern programlama araçları, programcıları işletim sistemlerinin bu karmaşık yapılarıyla uğraştırmak yerine kendi içlerinde ikinci bir programlama arabirimi içerir. Bir dosyanın diskte bulunup bulunmadığını kontrol edeceksek ve Delphi kullanıyorsak bunu iki şekilde yapabiliriz:

1. Windows API (Uygulama Programlama Arabirimi) kullanarak direk windows'a sorarız.
2. Delphi'nin FileExists fonksiyonunu kullanarak Delphi'ye sorarız. Delphi de Windows'a sorar ve bize cevap verir.

Windows işletim sistemi harddiske dosya kaydetmek gibi başka birçok önemli hizmet sunar. Ekrana pencereler çizmeye, içine yazı yazılabilecek alanlar eklemeye, ses ve görüntü hizmetlerine erişmeye, network sistemleri oluşturmaya, internete bağlanmaya, internetten dosya indirmeye, yazıcı, tarayıcı, webcam, mp3 player, fotoğraf makinesi gibi bilgisayara bağlanabilen donanımların sunduğu hizmetlere erişmeye ve bunlara benzer birçok işi yapmaya yarayan servislerle donatılmıştır. Bu servisleri kullanırken bu servislerin sağladığı imkanlarla sınırlıyız. Örneğin ekrana bir pencere çıkarmak programcı için çok basit bir iştir. Ancak çıkardığımız pencerenin başlığının rengini değiştirmek çok zor bir iştir. Çünkü windows pencere başlıklarının renginin değiştirilmesi ile ilgili direk bir yöntem sunmaz. Kullanıcı isterse tüm pencere başlıklarının rengini windows'un kendi ayarlarından değiştirebilir ve tüm pencere başlıkları aynı renkte görüntülenir.

Bazı programcılar programlama ortamlarının sunduğu fonksiyonları kullanmayı pek sevmezler ve direk işletim sisteminin komutlarını kullanma gayreti içindedirler. Çok hız gerektiren bazı hassas uygulamalar için bu gerekli olabilir ancak genelde işletim sistemi API'si ile uğraşmak çok da büyük bir kazanç sağlamaz. Delphi içinde gelen bu arabirim komple programımız içine ekleneceğinden yazdığımız programın boyu direk windows API ile çalışan programa göre daha büyük olacaktır. Günümüzde harddisklerin ve hafızların boyu düşünüldüğünde delphinin programa ekleyeceği birkaç yüz KB'lik yük tamamen gözardı edebilebilir. Boyu küçük program yazmaya gayret etmek yerine iyi işleyen bir program yazmayı becermek çok daha faydalı olacaktır.

Delphi işletim sistemi ile kontak kurulması gerektiğinde windows API'si üzerinden çalıştığı için Delphi ile yazdığımız programlar Linux, BSD, Unix gibi başka işletim sistemlerinde çalışmaz. Bu işletim sistemlerinde çalışacak programlar yazmak için o işletim sistemine uyumlu bir programlama aracı kullanmak gerekir. Java ile yazılan programlar hem Windows'da hem de Linux'da çalışabilmektedir. Ancak Java ile yazılmış olsa dahi işletim sisteminin sunduğu özellikleri direk olarak kullanamazsınız. Çünkü bu durumda windows için yazdığınız kodlar Linux için anlamsız olacaktır.

Delphi geliştirme ortamının programlama dili Object Pascal'dır. Delphi nin altyapısında kullandığı ve direk işletim sistemi ile iletişime geçen arabirimi RTL'dir. Görsel özellikleri içeren arabirim ise VCL'dir. Bunlar Delphi'nin temel arabirimleridir. Program yazarken bilerek ya da bilmeyerek bu arabirimlerden faydalanırız. Bu arabirimlerin sunduğu özellikler ek programlar yüklenerek genişletilebilir. Mesela Delphi standart olarak veri şifrelemekle ilgili bir özellik içermez. Bu özellikler sonradan ek araçlar yüklenerek programlama diline eklenebilir. Bunlara genel olarak 3. Parti bileşenler denmektedir. Delphi üzerine en çok bileşen yazılan ortamlardan biridir ve bu ek programların da büyük çoğunluğu internetten ücretsiz olarak edinilebilir. Delphi belkide dünyada bu konuda en çok desteklenen programlama aracıdır. Programlama araçlarının iyiliği veya kötülüğü tartışılırken dille ilgili özelliklerin yanısıra bu arabirimler ile sunduğu hizmetler ve 3. parti desteği de büyük önem taşımaktadır.

3 yorum:

Adsız dedi ki...

akillica

giresun dedi ki...

gerçekden dev bir bilgi gözlerim patladı

Ahmet dedi ki...

süper bir yazı..