Günümüzde çok büyük bir sektör olan  programlama ve yazılım ilkokul seviyesine indirilmiş durumunda. Mühendisinden ilkokul öğrencisine kadar her seviyede ilgilinilebilir olması sektörde kat alınan yoldan kaynaklanmaktadır. Programlama hayatı nereden başlar? Hangi kollara ayrılır? Bunları değerlendirirsek konu hakkında bir fikre sahip olabiliriz.

Programlama mikroişlemcinin (CPU) tasarımı anında belirlenir. Bu süreç oldukça uzun ve karmaşıktır. Süreç sonunda ortaya CPU çıkar. Bu CPU nun  bir komut listesi vardır. Her bir komut CPU içinde transistörler ile oluşturulmuş bir devreye denk gelir. Yani her bir komut bir elektronik devre ile oluşturulur. İlk üretilen ve kullanılan serilerden olan zilog Z80, motorola 6500, 6800, intel 8085, 8086 gibi CPU ların 50-100 adet civarında komut içerirken günümüz işlemcileri birkaç yüz komuttan oluşmaktadır. Bu komutlara assembler komutları denir. Bu komutlar sonradan artırılamaz, azaltılamaz, değiştirilemez. Her bir komutun hex sistemde (16 lık sistemde) tasarım anında belirlenen bir kodu vardır. Bu kod listesi üretici tarafından yayınlanır. Assembler komutları ile program yazmak bilgi ve tecrübe gerektirir. Lojik ve elektronik bilgisi olmayan birinin bu komutları anlaması beklenemez. Herhangi bir sayıyı 2 ile bölmek veya çarpmak için sayı binary sistemde sağa veya sola kaydırılır. Bazı asamler komutların icrasından sonra CPU nun bazı register ve yazmaçlarına bakmak gerekir. Yazmaçların 1 veya 0 olmasına göre program akışı yönlenecek şekilde programı yazmak gerekir. Bu programlama en alt seviye programlamadır. Bu seviyede en hızlı programlar oluşturulabilir. Teorik olarak bu böyle olsa da pratikte assambler komutları ile program yazmak doğru bir yol değildir.

Günümüzde program yazmak için bir çok program ve programlama dili vardır. Her bir dil bir amaca göre geliştirilmiş ve yazılmıştır. Temelde hepsi aynı ana unsurlara sahiptir. Nasıl ki her arabanın tekeri, motoru, egzosu, vitesi,  kasası, şanzımanı … varsa her programın değişken tanımlama, algoritma yönlendirme, matemetik işlem, mantıksal işlem, giriş çıkış, … gibi ortak işi yapan komutlara sahiptir. Bazı programlar hedeflenen konu ile ilgili daha çok fonksiyon ve komutlara sahip olabilir. Örnek; web programlama için PHP, ASP gibi programlar kullanılırken. Yoğun matematik denklemlerinin işlenmesi gereken durumlarda Matlab gibi programlar öne çıkar. Konu sistem tasarımı ve genel amaçlı bir program ise C, C++, C#, Pascal, Basic gibi programlar öne çıkar.

Yazacağınız program bir PC de çalışacak ise assambler komutlarını kullanamazsınız. C gibi bazı programlar kodlama aşamasında assambler komutlarını kullanma imkanı verse de işletim sistemi (Dos veya Windows) bu kodları çalıştırmaz. Bununda haklı bir nedeni vardır. Programlar ram denen bölgede çalışırlar. PC ilk açıldığında işletim sistemi ram da çalışmaya başlar. Daha sonra PC üzerinde açılan her program aynı ram yongalarında işletim sistemi tarafından çalıştırılır. Aynı anda bir den fazla program ram in farklı bölgelerinde, veri hafıza alanları (program ve değişkenler) çakıştırılmadan çalıştırılır. Sizin yazdığınız assambler kodları bu hafıza alanlarına direk müdahale edebileceği ve işletim sisteminin çalışan her program için tahsiz ettiği alana girebileceği ihtimaline istinaden assambler kodları işletim sistemleri tarafından çalıştırılamazlar. İşin aslı yazılan program bir PC de çalışacak ise biz işletim sistemini programlamış oluyoruz.  İşletim sistemi bizim için programı yazdığımıza uygun olarak PC içinde çalıştırır. Program yazma aşamasında PC nin hiçbir gerçek giriş çıkış adresini (ekran, port, …vs) bilmemize gerek yoktur. Bizim bilmemiz gereken işletim sisteminden neyi nasıl isteyeceğimizdir. Bu kullandığımız programlama diline hakim olmamızı gerektirir.

Yazacağınız program bir işletim sistemi tarafından çalıştırılmayacak ise … . Bu ayrı bir yazı konusu olarak yazılacak.

Hoşça kalın.

 

1 thought on “Yazılımın Y si

  1. Demekki zaman geçtikçe CPU’lar geliştiriliyor. Daha fazla akıllandırılıyor. Proglamlamaların çeşitlenmesinin sebebi günümüzde değişen hayat şartlarında hangi amaca hizmet edecekse ona göre ayarlanmasıdır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir