Makinelerin Dili

010011010100000101001011110111010100111001000101010011000100010101010010110111010100111000100000 01000100110111010100110011011101

Not: Yukarıdaki rakam dizini ikili (binary) kodla “Makinelerin Dili” yazısının karşılığıdır.

Yazan: Ahmet Cemal Kurtulmuş / Elektronik Tasarım Mühendisi

İnsanlar anlaşmak için kendi aralarında ortak bir dil konuşur. Her toplumun kendine özgü bir dili vardır ve birbirleri ile bu şekilde iletişime geçerler. Hatta o dil o kadar içselleştirilmiştir ki, insan kendi kendine 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ışır ve bu şekilde diğer toplumlarla iletişim kurabilir. 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ğlar. Bu dil; makine dili ve bu makinelere bizim dilimizi öğreten öğretmenler ise yazılım, elektronik veya bilgisayar mühendislerimiz diyebiliriz. Makine dili matematiksel bir mantık üzerine kuruludur ve biz nasıl içimizden düşünürken dahi kendi dilimizi kullanıyorsak, makinelerde kendi içlerinde işlemlerini yaparken -yani düşünürken- kendi dillerini kullanır.

Makineleri kullanmak için zorlandığımız pek söylenemez. Çünkü her şey insan için oldukça kolay bir şekilde hazırlanmış durumdadır. Örneğin bir telefondan birini aramaya çalışırken, telefonun rehber tuşuna basıp rehbere giriyor ve kendi kullandığımız dil ile daha önce kaydetmiş 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ühendisin telefona bizim dilimizi öğretmesinden kaynaklanıyor. Aslında arka planda makine tamamen kendi dilinde işlem yapıyor. Makinelerin iç dünyasına doğru olan yolculuğumuzu biraz daha derinleştirebiliriz. Makinelerin dili matematiğin bir alanımdan oluşuyor; ikili (binary) sistem. Makine dili sayılar üzerine kuruludur ve bu sayıların farklı kombinasyonları farklı verileri (kelimeleri) ifade ederek anlaşmayı sağlar. İkili sistem ise iki tabanındaki sayılardan oluşan sayı sistemidir.

Teknolojik aletlerin ana dili
İkili sisteme bir örnek vererek daha anlaşılabilir hale getirebiliriz. Sayı sayarken rakamları kullanırız ve saymaya başlayınca 0’dan 9’a kadar sayarız. Daha sonra 10 sayısı için bir rakam daha ekleyip sayımızı büyütürüz ve 11, 12 şeklinde saymaya devam ederiz. Bu kullandığımız sistemde toplamda on rakam olduğu için buna onluk sayma sistemi deriz. İkili sayı sisteminin mantığı da aslında aynıdır. Tek farkı sadece 0 ve 1 rakamlarından oluşmasıdır. Yani ikili sistemde saymaya başladığımızda 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ın en büyüklerini kullandığımızdan, işlem bir rakam daha ekleme ile 100, 101 şeklinde devam eder. İkili sistem, sıkça duyduğumuz bir birim olan byte’ın oluşmasına da neden olmuştur. İkili 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. İkili sistemde her bir rakam hanesine iki farklı değeri koyabildiğimizden, rakam hanesi sayısı kadar ikinin çarpımı sonucunda çıkan sayı bize bu miktarda farklı veriyi ifade edebilmemize olanak sağlar. Bir örnek daha vererek bu durumu daha açık bir şekilde anlatabiliriz; elimizde iki bitlik bir veri var. Bunlar 00, 01, 10, 11 değerlerinden biri olmak zorundadır. Yani iki bitte (iki hanemiz var) 2×2=4 tane veri saklamış olduk. Başka bir örnekte şöyle verebiliriz; 3 bit (3 hanemiz var) 2x2x2=8 tane farklı veri bu 3 bitle ifade edilebilir. Tüm dünyada 1 baytlık veri (8 bitlik veri) (8 hanemiz var, 2x2x2x2x2x2x2x2=256) anlamlı bir standarda oturtulmuştur ve iletişime geçerken bu standardı kullanırız. Bu veriler ASCII (American Standard Code for Information Interchange / Bilgi Değişimi İçin Amerikan Standart Kodlama Sistemi) adı altında standartlaştırılmıştır.

Aşağıda bazı sık kullanılan verilerin ASCII kodu gösterilmiştir.

Şekil 1. Sık Kullanılan ASCII Kodları ve Karşılıkları

İkili sistem, makinelerle iletişime geçerken neden ondalık sayı kullanmadığımız sorusunu akıllara getiriyor. Bunun cevabını da şu şekilde verebiliriz; ikili sayı sistemi elektriksel sinyalleri tanımlamak için oldukça kolaydır. Yani ikili sistemde 1 değeri (rakamı) +5 voltluk bir gerilim ile ifade edilirken, aynı sistemde 0 değeri 0 voltluk bir gerilim ile ifade edilir. (Bu durum farklı biçimlerde de karşımıza çıkabilir. Günümüzde çoğu cihaz 3.3V ikili 1; 0 V ikili 0 olarak algılar). Bu durumu daha iyi canlandırabilmek için olayı şu şekilde tekrar irdeleyebiliriz. Evinizde elektrik düğmesine bastığınızda odadaki lambanızın yanması olayı ikili 1, ışığı geri kapatmanız olayı ise ikili 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ş olursunuz.

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 beş saniye bekleyelim ve tekrar ışığı açıp iki saniye bekleyelim. İşte totalde sekiz saniye sonunda 10000011 verisini oluşturduk. Bu da 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 hertz’in 1 milyar kat fazlası olan gigahertz 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; bilgisayarımız 1 saniyede 3 milyar kere iş yapıyor. Yani lamba anahtar ilişkisini göz önüne alırsak bilgisayarımız bir saniyede tam 3 milyar kere ışığı aç-kapa yapabiliyor.

Sistem nasıl çalışıyor?
Yukarıda öğrendiğimiz bilgiler doğrultusunda makinelerin dili hakkında fikir edindik. 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 yapar. İşte bu kendi dilini kullanarak işlem yapan makineler muazzam bir sistem üzerinden çalışır. Bu 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 açıklamaya çalışalım; kendi dilimizde düşünme mantığı ile ikili sistemle çalıştığımızdan elimizde yalnızca birler ve sıfırlar vardır. Bu sebepten bunları kullanarak muhakeme yapmak zorundayız. Yukarıda iletişimi anlatmak için kullandığımız lamba anahtar ilişkisiyle muhakeme durumunu da açıklayabiliriz. İki tane elektrik düğmesini seri şekilde arka arkaya bağlayalım ve bu elektrik düğmelerinin sonuna da lamba bağlayalım (Şekil 2,3 ve 4). İlk düğmeye bastığımızda (ikili olarak durum 1) lamba yanmaz çünkü diğer düğmeye (ikili olarak durum 0’da) henüz basmadık. Bir diğer düğmeye basarken ilk bastığımız düğmeye basmazsak lamba yine yanmaz çünkü hat yine açıktır. Lambayı yakabilmemizin tek olanağı iki düğmeye aynı anda basmaktır. Bu muhakeme yapısı “ve” anlamına gelir ve eğer bir iş yapılacaksa iki girdinin de olmasını ister. Bunun gibi “veya” “değil” gibi muhakeme yapıları da vardır ve tüm kompleks muhakeme yapılarının temelinde bunlar yatar.

Aşağıdaki tabloda “ve” mantığı daha rahat anlaşılabilir.

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

 

Volkan İtfaiye mühendisleri de kullanıyor
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şturur ve bugün aklınıza gelebilecek hemen hemen her makine bu sistemle can alıp, akıl kazanmaktadır. 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. Bu kadar kompleks yapıların temeli olan ikili sayı sistemlerini matematiğin ilk evrelerinde görmemiz de ilginç başka bir noktadır. Volkan İtfaiye’de de ateş savaşçılarının silahı olan araçlarımızı akıllandırıp muhakeme yapmasını ve itfaiyecilerimizle iletişime geçmesini, yani aynı dilden konuşmasını mühendislerimiz bu şekilde sağlamaktadır. Hatırlarsanız meşhur Matrix filminde siyah fonda akan yeşil sayılar vardı. Bu sayılar filmin temasına uygun bir şekilde seçilmiş ve yazımızda bahsettiğimiz olaylara vurgu yapmak için hazırlanmıştır.

Ahmet Cemal Kurtulmuş Kimdir?
Eğitim hayatına Ankara’da başlayan Kurtulmuş daha sonra İzmir’de Ege Üniversitesi Elektrik Elektronik Mühendisliği Bölümü’nden mezun oldu. Öğrenciliğinde ve sonrasında TÜBİTAK, KOSGEB, İZKA gibi kurumlardan destekli projelerde elektronik tasarım mühendisi veya gömülü yazılımcı olarak yer aldı. Güç elektroniği, mikro-elektronik devreler, kontrol sistemleri ve elektrik makineleri konularında uzman olan Kurtulmuş, Volkan İtfaiye Ar-Ge Merkezi’nde Elektronik Tasarım Mühendisi olarak görev yapıyor.