Hepimiz “yazılım” kelimesini son yıllarda çok sık duymaya başladık. Bu sebeple de yazılım nedir sorusuyla çok yaygın bir şekilde karşılaşıyoruz. Baş döndürücü bir hızda devam eden teknolojik gelişmeler insanları -özellikle gençleri- kendilerini bu alanda geliştirmeye fazlasıyla zorluyor. Bu işle uğraşmak isteyen insan sayısı çok fazla ancak en çok sorulan sorular daha önceden de belirttiğimiz gibi: “Yazılım nedir?” ve “Nereden başlamalıyım?”dır. İşte tam da bu noktada, bu soruya cevap arayanlar için bir yazı dizisi başlatmak istiyoruz. İlk yazımızda, “Makine kodu (machine code), kaynak kod (source code), algortima ve yazılım nedir?” sorularına cevap aramaya çalışacağız.
İçindekiler
Bilgisayarın Yapısı
İlk olarak bilgisayarın yapısına çok basit seviyede değinmek gerekir. Bilgisayarlar, donanım ve yazılım olmak üzere iki parçada incelenebilir. Donanımı, bilgisayarın fiziki ve elle dokunabildiğiniz parçaları olarak tanımlayabiliriz. Yani bir bilgisayarın klavyesi, monitörü, faresi gibi aklınıza gelebilecek elemanlar donanım kısmını oluşturur. Peki siz klavyenin tuşuna bastığınızda nasıl oluyor da monitörünüzde bu karakteri görebiliyorsunuz ya da fareniz ile bir dosyaya tıkladığınızda ilgili dosyayı nasıl açıyorsunuz? Bu ve bunun gibi aklınıza gelebilecek birçok sorunun cevabı ise bilgisayarın yukarıda bahsettiğimiz diğer parçası olan “yazılım” olarak cevabını buluyor. Bu yazılarda daha çok ikinci parça üzerinde duracağız.
Yazılım Bilgisayarın Neresinde?
Donanımla ilgili parçalar görülebildiği için insan zihninde yerini alması kolay oluyor. İnsanların doğası gereği görmediği, eliyle tutmadığı nesneleri algılamakta zorlandığı için yazılım ifadesi biraz hava da kalıyor denilebilir. İşte bu “havada kalma” seviyesini mümkün olduğunca zemin seviyesine yaklaştırmayı deneyeceğiz. Başlangıç olarak bilgisayarda mevcut olan yazılım ürünlerini de zihnimizde daha iyi yer etmesi açısından kabaca gruplandıralım:
- İşletim Sistemleri (Windows, Linux, MacOS, Android…)
- Programlama Dilleri (C, C++, C#, Java, Python, PHP, Swift, Javascript, Julia…)
- Uygulama Programları (Microsoft Office Programları, Adobe, Chrome…)
Yukarıda saydığımız bu ürünler, bilgisayarda ne gibi işlevler görüyor diye soruyorsanız basit bir örnekle bunu açıklamaya çalışalım. Bilgisayarın yazılımı diyebileceğimiz ve hepimizin adını duyduğu işletim sistemleri, bilgisayara yüklediğimiz diğer yazılım ürünleri (örneğin Microsoft Office programları) ile donanım arasında ilişkiyi sağlar. Siz, Microsoft Office Word programı ile “a” karakterine bastığınızda, ekranınızda bunun “a” olarak görünmesini sağlayan aracıdır aslında.
Algoritma ve Programlama Dilleri Nedir? Ne İşe Yarar?
Şimdi de yazılım denilen ama elimizle tutup ya da gözümüzle göremediğimiz bu soyut varlık nasıl oluşuyor sorusuna yanıt vermek gerekir. Aslında bir yazılım ürününü çalıştırdığımızda arka planda çalışan şey bir kurallar silsilesidir denilse hatalı bir açıklama olmuş olmaz.
Algoritma Nedir?
Bu soruya günlük hayattan bir örnek verilebilir. Nasıl ki Microsoft Office Word programının amacı yazılı bir metin oluşturmaksa bizim amacımızın da sabah kalktığımızda üstümüzü giyinmek olduğunu düşünelim. Üstünüzü giyinmek basit bir iştir. Ama bunu daha kendi kıyafetini giymeyi henüz öğrenmemiş 4 yaşındaki bir çocuğa yaptırırsanız olaylar karmaşık bir hale bürünebilir.
Size göre çok basit olan bu iş, çocuk için çok kafa karıştırıcı olabilir. Bu durumu kısa bir şekilde şöyle açıklayabiliriz, 4 yaşındaki çocuk henüz bu işin algoritmasını bilmiyordur. Algoritma, bir problemi çözmek için izlenecek kuralların sıralı bir listesidir. Yine bir örnek üzerinden gidecek olursak üstümüzü giyinirken önce gömleğimizi, sonra da ceketimizi giyeriz. Tam tersi gerçek hayatta mümkün olsa da, bir programlama dilinde bu toleransı asla göremezsiniz. İstediğiniz işlemin yapılması kesin bir şekilde reddedilir. Programlama dili nedir ve bizim yanlış bir şey yaptığımızı, yani önce ceketi sonra gömleği giydiğimizi nasıl anlar?
Programlama Dili Nedir?
Programlama dili, bir bilgisayara ya da bir aygıta (mesela bir drone, markette kullanılan bir POS cihazı, para çekilen ATM ya da bir e-ticaret sitesinde sepete ürün eklerken tıklanılan buton) ne yapması gerektiğini kesin bir dille, ilgili aygıtın yorumuna mahal vermeden öğreten ve kendi içinde de dilbilgisi kuralları barındıran bir yazılım ürünüdür. Bu dil, bizim yapmak istediğimiz işi ilgili aygıta nasıl anlatıyor? Bu soru da cevabını her programlama dilinin kendisine has bir özelliği olan “syntax” yani sözdizimi terimiyle buluyor.
Çözmek istediğimiz bir problem varsa öncelikle bu problemin çözümü için algoritmamızı oluşturmalıyız. Daha sonra seçtiğimiz programlama dilini kullanarak, algoritmamıza uygun kod parçalarını yazarak sonuca adım adım yaklaşmalıyız. Kod yazarken bizler genelde İngilizce dilinde söz dizimi kuralları içeren programlama dilleri kullanıyoruz. Bilgisayarlar bu durumu nasıl anlayıp bizi bir sonuca götürüyor? Elbette bu durum kaynak kod ve makine kodu yardımıyla gerçekleşiyor.
En Popüler 5 Yazılım Alanı
Yazılım çok geniş bir iş yelpazesine sahip. Size uğraşmak istediğiniz alan konusunda çok fazla seçenek sunuyor. Bunlardan en popüler olanları ise :
- Web Development (Backend, Frontend)
- Mobile Development (iOS, Android, Cross Platform)
- Oyun Geliştirme
- Embedded Systems
- Yapay Zeka – Veri Bilimi
Kaynak Kod ve Makine Kodu
Tabii ki bilgisayarlar herhangi bir doğal dil bilmezler. Onlar bizim için sadece “0 ve 1” mantığıyla hareket eden aracılardır. 0 ve 1 mantığı ise elektronik birer araç olan bilgisayarların, bizim yazdığımız kodları –source code(kaynak kod)– “0” yani elektrik yok ve “1” yani elektrik var olarak algılamasıdır. Buna göre de bir tepki vermesinden başka bir şey değildir. Böylece, adım adım istediğimiz sonucu üretme sürecine girmiş olurlar. İşte bu “0” ve “1” mantığı aslında makine kodu teriminin karşılığıdır. Kısaca bizim yazdığımız ve insanların anladığı kodların, bilgisayarın sadece 0 ve 1’den oluşan kendi alfabesine çevirerek anladığımız hale getirmesidir. Bilgisayarlarla onun anladığı dil olan makine diliyle konuşuyoruz dersek elbette yanlış olmaz. Ama bu süreçte bize kim tercümanlık ediyor? Yani programı yazan kişi ile onu çalıştıracak olan bilgisayar farklı diller konuşup anlaştığına göre bunu sağlayan bir şey olmalı. İşte bunun da adı “compiler” yani derleyicidir.