Makinelerin Dili

1.004 okunma

010011010100000101001011110111010100111001000101010011000100010101010010110111010100111000100000 01000100110111010100110011011101

(Sıfır ve birlerin ne anlama geldiği aşağıdaki dipnotta belirtilmiştir.)

İnsanlar anlaşmak için kendi aralarında ortak bir dili konuşurlar her toplumun kendine özgü bir dili vardır ve birbirleri ile bu şekilde iletişime geçerler hatta o dil o kadar oturmuştur ki, insan kendi kendine içinden düşünürken bile o dil ile düşünür. Bir toplumun diğer toplum ile anlaşabilmesi için ise insanlar yeni dil öğrenmeye çalışırlar ve bu şekilde diğer toplumlarla iletişim kurabilirler bu öğrenme yolunda onlara dili öğreten veya öğrenmelerini kolaylaştıran dil öğretmenleri vardır. Günümüzde teknolojinin gelişmesi ile birlikte ortaya bir dil daha çıkmıştır ve bu dil bizim makinelerle iletişime geçmemize olanak sağlıyor. İşte bu dil makine dili ve bu makinelere bizim dilimizi öğreten öğretmenler ise yazılım, elektronik veya bilgisayar mühendislerimiz. Makine dili bir matematiksel mantık üzerine kuruludur ve biz nasıl içimizden düşünürken bile kendi dilimizi kullanıyorsak makinelerde kendi içlerinde işlemlerini yaparken bu dil üzerinden yaparlar.

Makineleri kullanmak için çok zorlandığımız söylenemez çünkü her şey insan için oldukça kolay bir şekilde hazırlanmış. Örneğin bir telefondan birini aramaya çalışırken telefon rehberi tuşuna basıp rehbere giriyor ve kendi kullandığımız dil ile daha önce kayıt etmiş olduğumuz kişiyi bularak ara tuşuna basmamız yeterli oluyor. Tabii ki bu işlemi bu kadar kolay yapabilmemiz daha önce bir mühendisimizin telefona bizim dilimizi öğretmesinden kaynaklanıyor. Aslında arkada planda makine kendi dilinden konuşuyor.

Artık makinelerin iç dünyasına doğru biraz daha girmeye başlayalım. Makinelerin dilinin aslında matematiğin bir alanını oluşturduğunu daha öncede söylemiştim. Matematikte bu dal binary (ikili) sistem olarak geçmekte. Aslında makine dili sayılar üzerine kuruludur ve bu sayıların farklı kombinasyonları farklı şeyler ifade ederek anlaşmayı sağlarlar.

Binary sistem iki tabanındaki sayılardan oluşan sayı sistemidir. Yani şöyle daha anlaşılabilir hale getirebiliriz: Örneğin biz sayı sayarken sıfırdan dokuza kadar saydık ve on sayısı için bir rakam daha ekledik ve on dedik bu bizim kullandığımız normal sayı sistemidir. İkili sayı sisteminin mantığı da aslında aynıdır yani sadece 0 ve 1’den oluşan bir sayı sistemidir. Yani 0’dan sonra 1 gelir ve daha sonra başka rakam olmadığı için yanına yeni bir rakam alarak işlem 10 ve 11 diye devam eder. Yine rakamlarımızın en büyüklerini kullandığımızdan işlem bir rakam daha eklemeyle devam eder ve 100, 101…. şeklinde devam eder. İşte bu sisteme matematikte binary sistem denir.

Binary sistem bizim sıkça duyduğumuz bir birimin oluşmasına da neden olmuştur ki bu birimin adı byte (bayt)‘dır. Binary sistemdeki rakamların her birini bit olarak isimlendiririz ve 8 bit 1 byte değerini oluşturur; 1024 byte 1 kilobyte, 1024 kilobyte ise 1 megabyte eder.

Binary sistemde her bir rakam hanesine iki farklı değeri koyabildiğimizden 2 üzeri rakam hanesi sayısı kadar farklı veriyi binary sistem ile rahatça ifade edebiliriz. Şöyle bir örnekle bu durumu daha açık bir şekilde anlatabiliriz. Örneğin iki bitlik bir veri elimizde var; bunlar 00, 01, 10, 11 değerlerinden biri olmak zorundadır. Yani iki bitte = 4 tane veri saklamış olduk. Tüm dünyada 1 byte’lık veri (8 bitlik veri) anlamlı bir standarda oturtulmuştur ve iletişime geçerken bu standardı kullanırız. 8 bit = 256 olduğundan 256 farklı veriye işaret eder ve bu veriler ASCII adı altında standarttır. Aşağıda bazı sık kullanılan verilerin ASCII kodu gösterilmiştir.

Ascii Kod: Harflerin binary (ikili sistemde) karşılıkları.
Ascii Kod: Harflerin binary (ikili sistemde) karşılıkları.

İkili sistem sayesinde artık makinelerle nasıl iletişime geçtiğimizi biliyoruz. Fakat aklınıza hemen neden böyle bir sayı sistemi ile iletişime geçmeye çalışıyoruz, kendi bildiğimiz sayıları kullansak olmaz mı sorusu gelmiş olabilir.

Bunu cevabını da şu şekilde verebiliriz;

İkili sayı sistemi elektriksel sinyalleri tanımlamak için oldukça kolaydır. Yani 1 değeri (rakamı) için +5 voltluk bir gerilim oluştururken 0 (rakamı) değeri için 0 voltluk bir gerilim uygulamamız kafi olacaktır. Daha çok kafada canlandırabilmek için şu şekilde tekrar olayı irdeleyebiliriz. Evinizde elektrik düğmesine bastığınızda odadaki lambanızın yanması olayı 1, ışığı geri kapatmanız olayı ise 0’dır. Işığı belli zaman aralıklarında sekiz kere açıp kapadığınızda artık bir baytlık bir veri oluşturmuş oldunuz.

İşte bu noktada da frekans diye ifade ettiğimiz bir kavram ortaya çıkar. Şöyle ki; ışık kapalıyken ışığı açtığınız an kronometreyi başlatıp bir saniye boyunca ışığı açık bırakalım daha sonra ışığı bir saniye sonunda kapayıp 5 saniye bekleyelim ve tekrar ışığı açıp iki saniye bekleyelim. İşte totalde 8 saniye sonunda 10000011 verisini oluşturduk. Buda bize ASCII‘ye göre ƒ karakterini ifade etmiş oldu. Yukarıdaki örnekte her bir saniyede bir iş yaptığımız için frekansımız 1 Hertz olmuş oldu. 1 hertzin 1 milyar kat fazlası olan Giga (Ciga) hertz günümüzde telefonlarımızın veya bilgisayarlarımızın hızını ifade eden sıkça duyduğumuz bir değerdir. Yani benim bilgisayarım 3 gigahertz diyorsak artık şunu biliyoruz: 1 saniyede 3 milyar kere o bilgisayar işlem yapıyor! Yani lamba anahtar ilişkisini göz önüne alırsak bilgisayarımız bir saniyede tam 3 milyarkere ışığı aç-kapa yapabiliyor.

Makinelerin dilini hafiften çözdük gibi yani artık iletişim kurabiliriz fakat düşünmeyen insanın iletişime geçmesi ne kadar beyhude ise aynı şekilde işlem yapmayan bir makinenin iletişimine de pek ihtiyacımız olmaz. İnsanlar kendi içlerinde nasıl kendi dilleri ile düşünüyor ise makinelerde kendi dillerinden işlem yaparlar. Buna yukarıda daha önce değinmiştik. İşte bu kendi dilini kullanarak işlem yapan bilgisayarlar (makineler) muazzam bir sistem üzerinden çalışırlar. Bu binary (ikili) sistemle oluşturulmuş muhakeme ve mantık kabiliyetleri sistemi matematikte başka bir dal olan boolen cebiri ile oluşturulmuştur.

Basit bir örnekle bu sistemi hafifçe açıklamaya çalışalım;

Binary sistemle çalıştığımızdan elimizde yalnızca birler ve sıfırlar var. Bunlarla muhakeme yapmak zorundayız. Yeniden yukarıdaki lamba anahtar ilişkisiyle durumu anlatmaya çalışalım. İki tane elektrik düğmesini seri şekilde arka arkaya koyalım ve bu elektrik düğmelerinin sonuna da lamba bağlayalım. İlk düğmeye bastığımızda (binary olarak durum 1) lamba yanmaz çünkü diğer düğmeye (binary olarak durum 0’da) henüz basmadık ve bir diğer düğmeye basarken ilk bastığımız düğmeye basmaz isek lamba yine yanmaz çünkü hat yine açıktadır. Lambayı yakabilmemizin tek olanağı iki düğmeye aynı anda basmaktır. Aşağıdaki tabloda bu durum daha rahat anlaşılabilir.

Binary sistemde iki anahtar ve lamba tablosu.
Binary sistemde iki anahtar ve lamba tablosu.

Yukarıda görüldüğü gibi küçük bir muhakeme olayı yapmış olduk yani eğer bir işlemi yapacaksak düğme birden de düğme ikiden de sinyalin gelmiş olması lazım.

Bu temel ve basit matematik mantığı ve sayı sistemi çok büyük ve kompleks sistemlerin oluşum noktasıdır. Bu yapılar mikroişlemci, ram, mikro denetleyici, gibi sistemleri oluştururlar ve bugün aklınıza gelebilecek hemen hemen her makine bu sistemle can alıp, akıl kazanmaktadırlar. Uçaklar, çamaşır-bulaşık makineleri, motor sürücüleri, televizyonlar, telefonlar, arabalar ve daha milyonlarca farklı makine bu şekilde çalışmaktadır. Ve bu kadar kompleks yapıların temeli olan ikili sayı sistemlerini matematiğin ilk evrelerinde görmekteyiz. Son olarak da hatırlarsanız meşhur Matrix filminde siyah fonda akan yeşil sayılar vardı. Bu sayılar filimin temasına çok uygun bir şekilde seçilmiş ve yazımızda bahsettiğimiz olaylara vurgu yapmak için hazırlanmıştır.

Dipnot: Yukarıdaki başlığın altındaki binary kod, makine dilinde ‘MAKİNELERİN DİLİ‘ yazısının karşılığıdır.

Ahmet Cemal KURTULMUŞ

Yorum Yaz

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