Bölüm 1: Programlama nedir?
Tamam, önce bu soruyla başlayalım: Programlama nedir? En basit tanımıyla, bilgisayarın donanımına ne yapması gerektiğinin söylenmesi eylemidir. Örneğin bilgisayara işlemcide bir işlemi yapmasını, hafızada veri saklanmasını, ekranda belirli pikselleri yakıp bir resim göstermesini veya bir fabrika robotunun kollarının nasıl hareket edeceğini programlayarak söyleyebilirsiniz. Bu tanımdan yola çıkarak, programlama dili bir insanın bilgisayarlarla iletişim kurup onları programlamak için kullandığı bir arayüz dilidir. Yani en basitinden “kolunu 1 cm sola hareket ettir” cümlesi bir robotu programlamak için kullanılan bir dilin parçası olabilir. Tamam, tanımı verdim, yazı bitti mi? Hayır, okumaya devam.
Bölüm 2: Peki o gördüğümüz 0 ve 1’ler nedir?
O 0’lar ve 1’ler, makine kodudur. Bu kod dilinde 0 ve 1’in farklı kombinasyonları belirli komutları temsil eder. Örneğin “1100” toplamayı temsil ediyorsa, mesela “1100 0 1” komutu 0 ve 1 sayılarının toplama işlemini temsil ediyor olabilir. “Olabilir” diyorum çünkü “makine kodu” dediğimiz tek bir dilden ibaret değildir. Aslında her farklı işlemci markası (örneğin Intel ve ezeli rakibi AMD) veya modeli için 0 ve 1’in farklı kombinasyonlarını kullanan farklı bir makine kodu dili vardır, fakat bu yazıda spesifik makine kodu komutlarını görmeyeceğimiz için bu detay üzerinde çok durmaya gerek yok.
Şimdi, dünyadaki tek dilin, bilgisayarla konuşmanın tek yolunun 0 ve 1’ler olduğunu varsayalım, çünkü ilk dijital bilgisayarlar icat edildiğinde durum aynen böyleydi. Bir sürü sorunuz olduğuna eminim, fakat en önemlisiyle başlayalım: Niye 0 ve 1 kullanmak zorundaydılar?
Bu, bilgisayarların elektroniğiyle alakalıdır (söz veriyorum, çok teknik olmayacak). 0 elektrik akımının yokluğunu ve 1 varlığını temsil eder. Peki akımları kullanarak nasıl herhangi bir işlem yapılabilir? Bunu anlayabilmek için 20. yüzyılın belki de en önemli icadı olan transistörleri anlamamız lazım. Bu cihazları (ki çoğunlukla Silikon Vadisi’ne ismini veren silikon elementinden yapılır) aşağıdaki şemadaki gibi hayal edebiliriz.
A, B ve C bu şemada elektrik kablolarını ve bu üç kabloyu birleştiren yuvarlak ise transistörü temsil eder. Transistör normalde A kablosunun taşıdığı elektrik akımının B kablosuna erişmesine izin vermez, bu durumda B’nin elektrik akımı daha önce dediğimiz kurala göre 0 değerini taşır. Ne zaman ki C kablosuna elektrik akımı verilir (yani 1 değerini taşımaya başlar), o zaman transistör A kablosundaki akımın B’ye geçmesine izin verir.
Eğer düzgün anlatmayı becerebildiysem de hâlâ benimleyseniz, transistörlerden yapılan bir başka cihaza, yani Exclusive OR (XOR) kapısına bakalım:
Daha önce gördüğümüz gibi, bu şemada da A, B ve C kabloları var. Fakat bu cihaz biraz daha farklı çalışır: Bu sefer, B’de akım olması için yalnızca A veya C’den bir tanesinde elektrik akımı olması lazım. Ne demek istediğimi anlamak için aşağıdaki tabloya bakabilirsiniz:
Girdiler | Çıktı | |
---|---|---|
A | C | B |
0 | 0 | 0 |
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
Yukarıdaki tabloyu, örneğin birinci satırını, böyle yorumlayabiliriz: Eğer A kablosu 0 ise (yani elektrik akımı yoksa) ve C kablosu da aynı anda 0 ise, o zaman B kablosu da 0 olacaktır.
Bu cihazı ilkel bir “bilgisayar” olarak düşünürsek, kullandığı makine kodu dili yukarıdaki tablodaki gibi olur, yani örneğin eğer girilen kod “00” ise, bu “bilgisayar” bize 0 cevabını verecektir. Peki bu ilkel makine kodu ne işimize yarayabilir? Toplama!
İlk bakışta inanması zor, fakat göstereyim: Tabloda 00 -> 0 yazıyor. Aynı şekilde, 0 + 0 = 0. Ayrıca 10 -> 1 yazıyor, ve 1 + 0 = 1. Bu da doğru. Peki ya ikinci sıra (11 -> 0)? 1 + 1 = 0 doğru bir işlem değil. Bunu açıklayayım: biz insanlar, ondalık sistemde matematik yaparız. Yani, bizim için 1 + 1 = 2. Fakat, bilgisayarlar sadece 0 ve 1 sembollerini kullanan ikili sistemi kullanır. Bu sistemde:
Ondalık sistemdeki sayı | İkili sistemdeki karşılığı |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
Yukarıdaki bilgisayar, ikili sistemdeki cevabın sadece ilk hanesini verir, yani 1 + 1 = 10 işleminin cevabında bu en sağdaki 0 değeri olur.
Bu ilkel cihazları birbirine bağlayarak çok daha kompleks işlemler yapabilirsiniz ve en sonunda “moden bilgisayar”ı yaratabilirsiniz.
Bir sonraki yazımda, modern dillerden bahsedeceğim. Umarım bu yazı, bilgisayar bilimi alanının dışındaki okuyucularımız için yeterince açıklayıcı olmuştur.
Hayır bakın benim adım Başak AY peki adımı 0 ve 1ile nası yazcam?
şöyle yazılıyor:0100001001100001011100110110000101101011 01000001010111001
şu sitede var: denizhummasi.com/bilgisayarlarin-hucreleri-1ler-ve-0lar/
Asil karsiligini ASCII tablosundan bulabilirsiniz. Her karakterin, sayinin vs. 0 ve 1 den olusan karsiligi vardir.
-... .- .--.. .- -.- / .- -.--
peki 5 6 7 8 9. . . gibi bu sayıların devamını paylaşma şansınız var mı