Yazılım Bilimi

Masaüstü uygulamaları, virüs programları, tarayıcılar, mobil uygulamalar, oyunlar ve daha nice çeşit çeşit yazılımlar. Bunlar günümüz dünyasında en çok haşır neşir olduğumuz kavramların başında geliyorlar. Yapılması en zor ve en vakit alan işlerimiz bile bu uygulamalar sayesinde saniyeler içinde halledilebiliyor, ulaşmak istediğiniz bilgi ve dokümanlar anında önünüze getirilebiliyor. Ancak, bildiğiniz gibi yukarıda bahsedilen kavramların hepsinin gözümüze görünen arayüzünün arkasında çalışan anlamlı kod parçacıkları var. Bu durumu bir gölge oyunu gösterisiyle bağdaştırabiliriz. Gölge oyununda, sahnede seyircilerin gördüğü gölge gösterisinin arkasında bütün oyunu yaratan ve yöneten sanatçılar vardır.

Yazılım Mühendisliği

Nasıl ki bu sanatçıların farklı şekillerde perde üzerine gölgesini düşürdüğü her bir cisim, seyirciye izlenebilir bir gösteri oluşturuyorsa, bir yazılımcının programın altyapısında yazdığı her bir kod kullanıcıya kullanılabilir bir uygulama özelliği sunar. Peki bu işler nasıl yürüyor, hiç merak ettiniz mi?

Bilgisayar yazılımlarının temelinde 1 ve 0 rakamlarının yattığını hepimiz duymuşuzdur. Evet, bir yazılım temelinde belki milyonlarca 1 ve 0 rakamının çeşitli örüntülerde bir araya gelmesiyle oluşuyor ama bu 2 rakam tek başına nasıl oluyor da bizim gözle gördüğümüz, elle dokunduğumuz uygulamalara dönüşüyor? Bunun temelinde “bilgisayar” adı verilen aletin elektrik akımını farklı şekillerde kullanarak çalışan bir yapıya sahip olması yatıyor. Elektrik dünyasında ‘1’, “elektrik var” demekken ‘0’, “elektrik yok” demektir. Ortada bu ikisinden başka ihtimal bulunmadığı için -aynı anda hem elektrik var hem de elektrik yok gibi- binary (ikili) sistem kullanmak günlük hayatta kullandığımız decimal (onlu) sistem kullanmaktan çok daha verimli ve doğrudur.

1 ve 0 bilgileri ramde genelde tek başlarına, ayrı yerlerde değil; art arda bir diziymişçesine tutulurlar. Onlarca 0 ve 1’den oluşan bu “bit dizileri”, bir yazılımdaki kabaca; değişken, sabit ve çeşitli tanımları belirtirler. İşlemci, bu bit dizilerini kapı denilen yapılar yardımıyla çeşitli şekillerde işleyebilir. Örneğin “veya kapısı” verilen ikili sayıları basamaklarına göre toplarken, “ve kapısı” bu verileri basamaklarına göre çarpar, bunu yaparak da ortaya yeni ve işlenmiş bir bit dizisi, binary sayı çıkartır. Bilgisayarda, bahsedilen ve, veya kapıları dışında çeşitli işlere yarayan kapılar da vardır. Bu farklı kapıların aynı anda kullanılarak belli işlere özel işleme yaptığı yapıları “fonksiyon” olarak adlandırabiliriz. Fonksiyonlar da kapılar gibi bir arada kullanılarak veriyi çok daha karmaşık biçimde işlememize olanak sağlarlar. Bahsettiğim bu işlemler, gelişmiş bir bilgisayarda saniyede milyonlarca kez yapılabilir. Böylece ortaya, elinden neredeyse her iş gelen yazılımlar çıkartılabilir.

İlk bilgisayarların ne kadar devasa büyüklüklere ulaştığını hepimiz internette geznirken görmüşüzdür. Bu eski bilgisayarlarda 1 ve 0’lar o büyük makinelerdeki vakumlu tüplerle, lambalarla ifade edilirdi. Yani lambanın yanması “bir” demekken sönük olması “0” anlamına geliyordu, kapılar ise makinedeki çeşitli düğmeler, kollar ve farklı elektronik devre kurma yöntemleriyle tanımlanıyordu. Zamanla teknoloji gelişti, bilgisayarlar küçüldü, yazılımlar karmaşıklaştı ve yüzbinlerce 1 ve 0’ın havada uçuştuğu kodlar kontrolü imkansız bir hale geldi. Bu sorunun üstesinden gelmek için Assembly (bir araya getiren) denilen bir düşük seviyeli programlama dili geliştirildi. Bu dil adından da anlaşılacağı üzere çok kullanılan ikili sistemdeki kodları bir araya getirerek bunları belli anahtar sözcüklere atayan bir yapıya sahipti. Yazılımcı, bir fonksiyonu kullanmak istediği zaman sadece o fonksiyona verilen anahtar sözcüğü kodluyordu ve istenilen işlem yerine getiriliyordu.

Assembly

Assembly’nin yazılım dünyasına katkısı çok büyük ölçekte oldu ancak yine de çok ilkel ve gelişmemiş bir dildi, her şeye rağmen yeterli değildi. Daha sonraları Assembly temel alınarak C ve Fortran gibi orta seviyeli diller geliştirilmeye başlandı. Bu diller insan diline daha yakın ve yazması kolay dillerdi. Yazılımcı, yazılımını bu dillerde yazıyor, derleyici denilen programlarsa bu farklı dili Assembly diline çeviriyordu. Assembly ise kendisine çevrilen kodu makine dili de denilen ikili düzendeki bilgisayar tarafından anlaşılabilen biçimde ifade ediyordu. O vakitlerden günümüze kadar, hem işlemcilerin hem grafik kartlarının, hem de programlama dillerinin gelişmesiyle şimdilerde kullandığımız uygulamalar çok rahat yazılabilir hale geldi.

İşte, insan hayatında adeta bir devrim yaratmış olan Yazılım Biliminin gelişme aşamaları genel olarak bunlardır. Günümüzde bilgisayar ve mobil uygulamaların haricinde; yapay zekadan, görüntü işlemeye, siber güvenlikten gömülü sistemlere kadar bir bilgisayarın ya da daha basit anlamda bir işlemcinin kullanıldığı bütün alanlarda arka tarafta bir yazılımın çalışması mecburiyeti vardır. Yazılım bilimi olağanca hızıyla gelişmeye devam ederken artık insanoğlu geride kalacakmış gibi görünüyor. MB Dergiden İlker Tinkir’e aittir.

Bugra Alkan
Bugra Alkan
YTU Elektrik Mühendisliği eğitimini aldıktan sonra Rusya'da Nükleer Enerji Mühendisliğine devam etmekteyim. İngilizce ve Rusça bilmekteyim. Bilimsel ve teknik çevirilerimi sizler ile paylaşacağım.
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
Tüm yorumları göster
Arıcılık Malzemeleri

Yeni Yazılar

Mühendislik Maaşları

Bunları Gördünüz mü?