26 Eylül 2014 Cuma

"Geriye" Doğru Uyum

Bir uçak düşünün, 120,000 metre irtifa ve toplam yaklaşık 200 kilometre mesafeden bir havaalanına indirmeniz isteniyor. Uçağı indirmek için size verilen süre 1 saat. Ayrıca bir koşul daha var, ana motorlarınız çalışmıyor. Uçağı indirmek için harekete geçtiğiniz andan itibaren pas geçme hakkınız da yok.

Bunun neredeyse mümkün olmadığını düşünüyorsunuz öyle değil mi? Hatta uçaktan korkan biri için çok kötü bir şaka gibi de gelebilir. Ama yanılıyorsunuz. Yakın geçmişin teknolojisi ile geliştirilen uzay mekiklerinin mürettebatları bunu her uzay yolculuğunda yaptı. Mekiğin dünyaya dönüşünde ana motorların hiçbiri çalışmıyor. Dönüş yolculuğu başladığı andan itibaren pas geçme hakkı bulunmuyor ve mevcut irtifa ve mesafeden pisti tam tutturmaları gerekiyor. Zaten bu nedenle eskiden bir kullanımlık olan uzay araçlarından farklı olarak bunlara mekik adı verilmiş.

Uzay mekiğinin uçuş manevraları birbirine benzer 5 bilgisayar tarafından kontrol edilir. Bunların 4’ü yazılım ve donanım olarak birbirinin tamamen eşdeğeri olarak üretilmiştir. 5. bilgisayar ise farklı tasarıma sahip olmasına rağmen aynı işlemleri yapar. Aktif çalışan 4 bilgisayar elde ettikleri sonuçları birbirleriyle karşılaştırırlar. Eğer içlerinden biri çoğunluğun elde ettiği sonuçtan farklı bir sonuca ulaşırsa, çoğunluk tarafından devre dışı bırakılır. Kalan 3 bilgisayar aktif olarak çalışmaya ve sonuçları karşılaştırmaya devam eder. İşlemler böylece sürer gider. Eşitlik durumunda, örneğin 4 bilgisayardan ilk ikisi bir sonuca, diğer ikisi de birbirinin aynı başka bir sonuca ulaşmışsa kura çekilir. Kazananlar devam eder, diğerleri devre dışı kalır. 4 aktif bilgisayarda da hata olursa, farklı yazılım ve donanımla aynı işi yapan 5. bilgisayar devreye girer. Tüm bunlara rağmen bilgisayarların tamamı devre dışı kalırsa mürettebat iniş işlemini manuel yürütür. Bu esnada da şimdiki modern uçaklarda kullanılan "fly-by-wire" teknolojisi kullanılır. Yani mürettebatın manevra için yaptığı kontroller doğrudan hidrolik sistemlere gitmez, kablolar aracılığıyla küçük servo-motorlara iletilir. Servo-motorlar da gerçek uçuş birimlerini kontrol eder.

İniş esnasında mekik doğru süzülme açısı ile yerküreye ilerler. Bilgisayarlar, dünyanın dönüş hızını dikkate alır, yerküreye yaklaşırken havada dairesel hızın yeryüzündeki doğrusal hıza dönüşüm hesaplarını yapar ve izdüşümü mesafesini bulur. Bulunan sonuca göre de pozisyonda düzeltmeler yapılır. Yörüngeden ayrılıp teker koyana dek iniş boyunca mekiğin hızı saatte 30.000 km’den 350 km’ye düşürülür. Bunun için mekik atmosfere ters takla atarak girer, sonra da bir düz takla atarak doğrulur. Sonrasında da bir dizi "S" biçimli dönüş yapar. Süzülme esnasında saniyede 50 metre gibi bir değerle irtifa kaybeder. Bu esnada olabilecek hava olaylarını hiç anlatmayayım. Doğrusu her düşündüğümde büyülenirim ve insanların teknolojide ulaştıkları noktaya tekrar tekrar şaşırırım.

Gelelim yazılım dünyasında "geriye doğru uyumluluk" konusuna. Yeni geliştirilen bir ürün, eski sürümler veya teknolojiler tarafından da kullanılabiliyorsa "geriye doğru uyumlu" olarak nitelenir. Geriye doğru uyumluluk konusu eğer abartılırsa yaratıcılığı önler ve gelişimi durdurur. Kullanıcılar çoğunlukla geriye doğru uyumluluk ister, yazılım geliştiriciler ise yeni kabiliyetleri kullanmak için bundan vazgeçmek etmek ister. Amacım burada kimin haklı, kimin haksız olduğunu tartışmak değil. Fakat konuyu uzay teknolojisine benzeştirirsek geriye doğru uyumluluk, uzay mekiğinin Roma İmparatorluğu dönemindeki ilk atlı arabalar ile uyumlu üretilmesine benzer. Evet, kulağa komik geliyor, ama teknoloji harikası uzay mekiği ile Roma İmparatorluğu dönemindeki atlı arabalar arasında bir tür uyumluluk var. Şaşırdınız mı?

Romalılar ilk atlı arabaları tasarlarken, dengeli ve rahat bir sürüş için arabayı koştukları at ile tam olarak paralel olmasına dikkat ettiler. Daha yüksek performans içinse iki atı yan yana arabaya koştular. Hatta ikiden fazla at kullandıklarında da atları ikili sıra halinde yan yana koştular. Dengeli sürüşün koşulu paralellik idi ve bunu iki at için uyguladıklarında arabanın eni, yan yana duran iki atın her birinin ortasından geçen kesitler arasındaki mesafe kadar olmalıydı. Mükemmel arabanın genişliğini bu şekilde hesapladılar. 1800’lü yıllarda Amerika Birleşik Devletleri’nin ilk demiryolları tasarlandığında, geriye doğru uyumluluk kaygısı ile vagonların genişliği eski atlı arabalar ile aynı yapıldı. Böylece tren rayları arasındaki mesafe, 4 feet ve 8.5 inch, yani yaklaşık 142 cm olarak belirlendi. Bu hesaba göre raylar döşendi, tüneller açıldı ve trenler geliştirildi.

1981 yılında ilk görevine gönderilen uzay mekiği Columbia’nın tasarımında ilk kalkış için sağda ve solda olmak üzere iki katı yakıt tankı kullanıldı. Yakıt tankları Florida’da kalkış rampasının olduğu üsse Utah’tan trenle getirildi. Tren yolculuğunu ve tünellerin genişliğini hesaplayan mühendisler yakıt tanklarını buna uygun genişlikte tasarladılar. Geriye doğru uyumlulukta ısrarcılık bir kez daha tasarımcıları sınırlandırdı ve belki de geliştirilebilecek daha iyi çözümleri engelledi.

Roma İmparatorluğu’nun atlıları uzay mekiğini hiç göremedi ama onun teknolojisine bir şekilde etki etti. 1986 yılında yakıt tankındaki çatlakta oluşan sızıntı nedeniyle kalkıştan kısa bir süre sonra infilak eden Challenger’ın sonunu geriye doğru uyumluluk mu getirdi bilemeyiz. Ama benim düşünceme göre her şeyi silip sıfırdan başlamak size her zaman yeni ufuklar açar. Değilse kendinizi bir anda "atların gerisine" kadar uyumlu bulursunuz.

9 Eylül 2014 Salı

Basitin Güzelliği

Bundan uzun yıllar önce bilgisayara aynı anda birden fazla iş yaptırmak büyük bir hayaldi. "Çoklu görev" (multi-tasking) olarak bilinen bu hayal için bilişim dünyasının önde gelen isimlerinin neredeyse tamamı yarışıyordu. Aynı anda birden fazla iş yapmak üzere işlerin yönetimini devralacak bir nevi orkestra şefine ihtiyaç vardı. O dönemde zaten kısıtlı işlem gücünü bölüştürme sorunu bir yana, orkestra şefinin de var olan işlem gücünden tüketmesi ayrı bir sorundu. Herkes mükemmel algoritmaların peşinde idi.

1964 yılında geliştirilen işletim sisteminin mottosu adına da yansımış, birden fazla işi yapan anlamında "Multics" adını almıştı. 1970 yılında Brian Kernighan ve Dennis Ritchie ise, geliştirdikleri işletim sistemini hem çoklu görev için tasarlamış, hem de "Multics"e nazire yaparak adını "Unics", ya da daha sonra popüler hale gelen adıyla "Unix" olarak vermişlerdi. Geliştirdikleri işletim sistemi basit temellere dayanıyordu. İşletim sistemi ile beraber programlama dünyası için de büyük bir adım sayılan C programlama dilini de geliştirdiler. Nesneye dayalı programlamanın (Object Oriented Programming) temellerini atan ikili, üst sınıf, alt sınıf, kalıtım, arkadaşlık gibi birçok sosyal kavramın da bilişim dünyasındaki karşılıklarını tanımlamış oldu.

Basitliğin güzelliğini yalnızca işletim sisteminde değil, Kernighan ile Ritchie’nin "The C Programming Language" adlı kitabında da görürüz. C programlama dünyasına ilk adım attığımda bana bu kitabın C ile iligli her detayı tartışmaya yer vermeyecek düzeyde içerdiği anlatılmıştı. Bunu ilk duyduğumda anılan kitabın kalın ve hatta birkaç ciltten oluştuğunu düşündüm. Kitap elime geçtiğinde ise hem şaşırdım, hem de Kernighan-Ritchie ikilisine olan hayranlığım bir kat daha arttı. 272 sayfadan oluşan kitap tek ciltti, ve gerçekten de tartışmaya yer vermeyecek kadar basit ama detaylı kurallar içeriyordu. Hatta elimdeki kitap ikinci basımdı ve ilk baskıda sayfa sayısının daha da az olduğunu öğrendim. Kitapta anlatılan hali ile programlama dili, "Standart C" anlamında "ANSI C" (American National Standards Institute) olarak adlandırıldı. Kernighan-Ritchie ikilisi kitabın önsözünde şöyle der:

"C dili büyük bir dil değildir, ve büyük bir kitap da ona hizmet etmez."

Kitabın içinde yalnızca anlatım değil, konuyu iyice pekiştiren özgün örnekler de vardı. Örneklerin tamamı çalıştırılabilen kodlardı ve aralarında en ünlüsü, görüntü çıktı birimine "hello, world" yazısını yazdıran program idi. Bu örnek gelenekselleşerek tüm programlama dilleri için eğitimlerde ilk uygulanan örnek haline geldi.

Unix işletim sistemi ve C programlama dili zamanla evrimleşip farklı kurumlar ve topluluklar tarafından yeniden yorumlandı. Hatta Linus Torvalds’ın geliştirdiği "Linux" işletim sisteminin de atası oldu. Unix ilk zamanlar performans gerektiren ve son kullanıcıların doğrudan etkileşim kurmadığı uygulamalar için kullanıldı. Bugün dünyada halen kullanılan süper bilgisayarların %99,6’sı Unix ve türevi işletim sistemi kullanılıyor. Son kullanıcıya, yani bizlere hizmet eden Unix türevleri ise son yıllarda akıllı telefonlar ve tabletler ile yaygınlaştı. Akıllı telefon ve tabletlerde halen %79,3 oranında Unix ve türevi kullanılıyor. Bunu ne yazık ki pek kimse bilmiyor.

5 Ekim 2011 günü beni oldukça üzen Steve Jobs kaybının hemen ardından, 12 Ekim 2011 günü de Dennis Ritchie’yi kaybettik. İki ölüm haberinin ardından dünyanın verdiği tepki, bilişim dünyasının doğasına uygundu. Son kullanıcılar, yani dünyanın neredeyse tamamı Steve Jobs için yas tutarken, yalnızca ofis ardındaki bilişimciler ve programcılar Dennis Ritchie’nin kaybını duymuş ve üzülmüştü. Benim içinse her ikisinin de değeri aynı ve tartışılamaz. Fakat şunu söylemeliyim ki, Kernighan ile Ritchie’nin C dünyası olmasaydı, Steve Jobs’un Objective C dünyası olmazdı.

9 Şubat 2014 Pazar

Üç Başlı Köpek - 2

Efsaneye göre Titanlar ile yaptığı savaşı kazanan Olimposlu Tanrıların en güçlüsü olan Zeus, dünyanın hakimiyetini kardeşleri arasında paylaştırırken Hades’e yeraltının yönetimini verir. Hades ise hakimiyeti altındaki yeraltı ülkesine bekçilik etmek üzere üç başlı köpek Kerberos’u görevlendirir. Kerberos o kadar güçlüdür ki, onu hileye başvurmadan yenebilen yalnızca bir kişi vardır. Bu kişi de güçlülerin güçlüsü Herkül’dür.

Efsaneleri ve gerçeküstü olayları ile Yunan Mitolojisi her zaman ilgimi çekmiştir. Fakat hiçbiri, tüm gerçekliği ile doğrudan tanıklık ettiğim güncel efsaneler kadar beni heyecanlandırmaz.

Bir önceki yazımda sertifikalardan ve internet üzerinden kimlik doğrulama yöntemlerinden bahsetmiştim. Matematikçiler Diffie ve Hellman’ın geliştirdiği yöntemler sayesinde internet üzerinden güvenli alışverişler, bankacılık işlemleri ve hayatımızı kolaylaştıran türlü diğer işlemler yapabildiğimizi fakat buna rağmen türlü sahtekarlıkların yapılabileceğini anlatmıştım. Hatta geçtiğimiz yıllarda Ankara EGO’da gerçekleştirilen bir sahtekarlıktan bahsetmiştim.

İnternet üzerinden hizmet veren sistem sayısı arttıkça, kullanıcıların kafasını karıştırmadan birden fazla sisteme yönlendirme gereği duyulur. Bu da kimlik doğrulama işlemlerini daha karmaşık ve zorlu hale getirir. ABD’nin ünlü teknoloji ve araştırma enstitüsü olan Massachusetts Institute of Technology (MIT)’ de çalışan Steve Miller ve Clifford Neumann yürüttükleri projenin sonuçlarını 1980 yılında yayımladılar. Athena Projesi adını verdikleri çalışmanın sonunda, adını mitolojik figür Kerberos’tan alan kimlik denetim yöntemini geliştirerek tüm dünyada bir standart haline getirdiler. Bu yönteme göre kimlik denetimi merkezi bir sistem tarafından gerçekleştirilir ve başarılı giriş yapanlara birer bilet verilir. Bileti veren sisteme güvenen diğer sistemler de, elinde bilet olan kullanıcılara sahip oldukları yetkiler çerçevesinde çalışma izni verir. Kerberos, bileti dağıtan üç başlı köpeğe benzetilirse, bileti alanlar da Hades ülkesine giriş yapanlar olarak düşünülebilir. Hades ülkesinde Kerberos’a güvenen bölgelerin sorumluları elinde bileti olanların ilgili bölgelere girmelerine izin verirler. Bu yönteme bilişim dünyasında tekil oturum açma, veya İngilizcesi ile Single Sign-On denir. Elbette ki aldığınız biletin bir ömrü vardır ve bu sürenin sonunda sistemler sizden yeni bir bilet almanızı isterler.


Kerberos yöntemi öyle başarılıdır ki, ABD hükümeti uzun süre boyunca yöntemin ülke dışına çıkarılmasını ve kullanılmasını yasakladı. 2000 yılında İsveç’te Royal Institute of Technology tarafından yeniden geliştirilen ve uygulanan yöntem böylece ilk defa ABD dışında kullanılmış oldu. Şu anda ise tüm dünyada uygulanmakta ve gelişimini devam ettirmektedir.

26 Ocak 2014 Pazar

Üç Başlı Köpek - 1


Bilişim ve bağlantı teknolojileri geliştikçe, günlük yaşamımızı etkileyen birçok işlemi sanal ortamlarda yapar hale geldik. İlk üniversite yıllarımda para çekmek için banka şubesine giderdim. Gişe memuru, soyadlara göre sıralanmış dosyaların arasından dosyamı bulur, yaptığım işlemi dosyaya ve hesap cüzdanına yazar ve bir nüshayı bana verirdi. Şimdi bırakın banka şubesine gitmeyi, oturduğumuz yerden kıpırdamadan neredeyse tüm bankacılık işlemlerini yapabiliyoruz. Bunca işlemi yaparken, sisteme kendimizi tanıtmamızın önemini hepimiz biliyoruz. Peki ya sistemin kendini bize tanıtma yöntemini hiç düşündünüz mü? İnternet üzerinden eriştiğiniz banka web sitesinin, gerçekte banka ile ilgisi olmayan kimselerin şifrenizi çalmak üzere kurduğu bir düzen olmadığından nasıl emin oluyorsunuz?

Kullanıcıların ve sistemlerin birbirine kendilerini tanıtma yöntemine kimlik denetimi (İngilizce authentication) denir. Kullanıcı kimlik denetiminin en yaygın bilinen yöntemi, kullanıcı adı ve parola çiftidir. Sistemlerin kendini tanıtma yöntemi ise sunucu adı ve alan adı yöntemidir. Basitçe, web tarayıcınızda ulaşmak istediğiniz adresi yazdığınızda, ulaşmak istediğiniz sistemi bildirmiş olursunuz. Oturum açma sayfası karşınıza geldiğinde adres doğru görünüyorsa kullanıcı olarak sistemin kimlik denetimini tamamlamış olursunuz. Kullanıcı adı ve parolanızı girip oturum açtığınızda ise sistem sizin kimlik denetiminizi yapmış olur. Buraya kadar normal gibi görünen işlemde iki temel sorun var:
  • Kullanıcı adı ve parolanız internet ortamında açık olarak seyahat etti. Sizinle, erişmeye çalıştığınız sistem arasında dinleme yapan biri, kullanıcı adı ve parolanızı açık olarak görebilir.
  • Bilgisayar korsanları sizi aldatarak yanlış sunucuya erişmenizi sağlamış olabilir. Hatta bunu yaparken kullanıcı adı ve şifrenizi çaldıktan sonra erişmeye çalıştığınız gerçek sunucuya sizi yönlendirerek bunu farketmenizi engellemiş bile olabilir.
1973 yılında İngiliz matematikçi Malcolm J. Williamson ve ekibi tarafından geliştirilen şifreleme yöntemi uzun bir süre boyunca gizli tutuldu. 1976 yılında ise Amerikan matematikçiler Whitfield Diffie ve Martin E. Hellman tarafından yeniden ve bağımsız olarak geliştirilen aynı yöntem tüm dünyaya açık olarak yayımlandı. Matematiksel detaylara girmek istemiyorum, ama basitçe şöyle açıklayayım: Belirli bir hedefe göndermek için şifrelediğiniz bilgiler, yalnızca hedefteki sistem tarafından deşifre edilebiliyor. Bilgilerin seyahati boyunca geçtiği yerlerden dinleme yapanlar içerik hakkında hiçbir fikre sahip olamıyor.

Çok büyük asal sayılarla hesaplama gerektiren bu şifreleme yöntemini kullanan iletişim şekline bilişim dünyasında SSL (Secure Sockets Layer) yöntemi adı verilir. Internet üzerinden eriştiğiniz web sayfalarının adresi "https" ile başlıyorsa SSL yöntemi ile şifreli iletişim yapıyorsunuz demektir. Bu yöntemde en büyük yardımcılarımız, web tarayıcılarımızdır. İnternette güvenilir bir siteye erişimde karmaşık matematiksel hesaplamaları bizim yerimize yapar ve eriştiğimiz sunucunun (web sitesinin) güvenilir olup olmadığını bize bildirirler. SSL yönteminde gerekli olan asal sayılar sertifikalar içinde saklanır. Bir web tarayıcı, sunucunun güvenilir olup olmadığına aşağıdaki ölçütlere göre karar verir:

  • Sertifika güvenilir bir sağlayıcı tarafından onaylanmış mı? SSL sertifikasının bir pasaport olduğunu düşündüğünüzde, dünyada tanınan bir devlet tarafından verilmesi durumu ile eşdeğerdir.
  • Sertifika erişmeye çalıştığımız sunucu adını içeriyor mu? Yine pasaport örneğinden hareket ederek, pasaport içinde kendi adımız doğru olarak yer alıyor ise güvenilir demektir.
  • Sunucu sertifikası tarihi geçerli mi? Aynı örnekle, pasaport geçerli bir tarihe sahip ise güvenilir demektir.


Eğer yukarıdaki sorulardan en az birinin yanıtı hayır ise güvenlik uyarısı alırsınız. Gördüğünüz gibi yukarıda anlattığım iki güvenlik sorunu da SSL ile çözülüyor. Fakat ne yazık ki kötü niyetli insanlar her zaman var ve sürekli olarak güvenlik açıklarından yararlanmaya çalışıyorlar.

Bundan birkaç yıl önce EGO, güvenli web sunucusu için TürkTrust kurumundan SSL sertifikası aldı. TürkTrust, dünyada kabul görmüş güvenilir bir sertifika sağlayıcıdır. Fakat EGO'ya yanlışlıkla kendi mühürleri sayılabilecek sertifikayı da gönderdiler. Yani artık EGO da istediği her sunucu için sertifika onayı verebilecekti. Aynı yanlışlık KKTC Merkez Bankası ile de yaşandı ve banka yanlışlığı farkedip TürkTrust'ın özel sertifikasını iade etti. EGO'da neler oldu dersiniz?

EGO'ya yanlışlıkla gelen TürkTrust sertifikası ile Google için sertifikalar üretilip onaylandı. Üretilen sertifikalar ise EGO'nun iç ağında kurulan bir sunucuya yüklenerek çalışanların bu sunucudan Google hizmetlerine erişimi sağlandı. EGO çalışanları gerçekte Google sunucusuna eriştiğini sanıyordu çünkü web tarayıcıları Google için üretilen sertifikanın TürkTrust tarafından onaylandığını algılayıp güvenlik uyarısı vermiyordu. Böylece şifreli iletişim yönteminde araya bir sunucu kurulmuş ve verilerin orada deşifre edilme olanağı sağlanmış oldu. Bunun sonucunda kimin hangi özel bilgilerine erişildi bilemeyiz. Ama niyetin iyi olmadığını açıkça görüyoruz.

Google tarafından farkedilen durum dünyada büyük yankı buldu ve Google, Microsoft, Mozilla gibi web tarayıcı sağlayıcıların tamamı çeşitli duyurular yapıp önlemler aldılar. TürkTrust ise mühür niteliğindeki sertifikasını dünya çapında geçersiz sayıp yenisini üretti. Microsoft'un konu ile ilgili uyarısını http://support.microsoft.com/kb/2798897/tr linkinde bulabilirsiniz. Listenin en başındaki "*.EGO.GOV.TR tarafından verilen *.google.com" maddesine dikkatinizi çekerim.

Şimdi tüm bunların üç başlı köpek ile ne ilgisi olduğunu soracaksınız. Uzun bir yazı oldu, onu da bir sonraki yazıya bırakıyorum.

19 Ocak 2014 Pazar

Sevdiğim Şarkılar

Lise ve üniversite dönemimde iyi bir walk-man sahibi olabilmek neredeyse statü simgesi idi. Sevdiğim şarkıların bir listesini hazırlar, sonra da mahallenin tek müzik dükkanına götürüp boş bir kasete kaydettirirdim. Müzik dükkanı dediğim, hem müzik enstrümanı hem de plak ve kaset satan bir yerdi. Bugün MP3 çalarda veya bilgisayarda birkaç dakika içinde hazırladığımız çalma listeleri için günlerce bekler, harçlığımızı aşan paralar öderdik.

Eski günleri hatırlamışken, biraz daha eskiye gitmek istiyorum. 1789 yılını hatırlarsınız, yani tarih kitaplarından hatırlarsınız, Fransız Devrimi’nin olduğu yıl. Yetim olarak büyüyen, yatılı okulda okuyup subay olmak isteyen, ama türlü zorluklarla karşılaşınca vazgeçip matematik öğretmeni olan birinden bahsedeceğim. Bu kişinin adı Jean-Baptiste Joseph Fourier. Titizliği ve mükemmeliyetçiliği ile bilinen Fourier, eminim askerlik mesleğinde ilerleseydi yine adını biliyor olacaktık. Fakat iyi ki matematik alanında çalışmış.

O yıllarda Fourier şöyle demişti: "Doğadaki tüm periyodik fonksiyonlar, birbirine dik iki farklı periyodik fonksiyonun artan frekanslardaki değerlerinin dik toplamı şeklinde gösterilebilir". Yani başka bir ifade ile:
Bu deyişi ile kendinden yeterince nefret ettiren ve okulda öğrencilerin: "Peki ama tüm bunları nerede kullanacağız ki?" dedirten Fourier’i başkaları da izlemiş ve olayı daha ileriye götürmüşler. Yukarıdaki özdeyişi başlangıç noktası olarak alan Calude Elwood Shannon da 1950’li yıllarda şunu demiştir: "Sonsuz tüm seriler mükemmel bir örnekleme ve interpolasyon kullanılarak, belirli bir sapma kabulü ile sonlu hale getirilebilir". Bunun da tercümesi şudur:
Aslında yukarıdaki özdeyişlerin çok basit bir anlamı vardı: doğadaki her şey sayısallaştırılabilir. Bu durum, ses için de geçerlidir ve sesin sayısallaşmış halinin sonucu olarak elimizde MP3 biçiminde kodlanmış şarkılar bulunuyor. Fourier’in serileri ve Shannon’un açılım teoremini nerede ve nasıl kullanacağını bilen diğer bilim insanları MP3, MP4, MPEG ve benzeri diğer biçimleri geliştirmişlerdir.

Bu arada bir detayı belirtmeden geçemeyeceğim: Fourier, ünlü serilerini geliştirmeden önce Napolyon tarafından Mısır’a götürülmüş ve eski Mısır Uygarlığı ile ilgili araştırmalar yapması istenmişti. İyi bir komplo teorisi ile MP3’ün temellerinin eski Mısır Uygarlığı’na dayandığını bile söyleyebiliriz.

4 Ocak 2014 Cumartesi

Geribildirimin Değeri

Uzun zamandır makinelerle insanları karşılaştırmaya çalışıyorum. Matrix filmindeki ana temadan tutun, üniversitede aldığım teorik derslere, profesyonel iş yaşamımda edindiğim deneyimlere kadar çeşitli dönemlerde bunu düşündüm ve varsayımlar yaptım. Özellikle bilgisayarlar ile ilgili olarak vardığım nokta şu: Eğer bilgisayar çıktısı beklediğiniz gibi değilse mutlaka giriş verilerinizde hata var demektir. Çünkü bilgisayarlar hata yapamayacak kadar basit bir mantığa dayanır. Peki ya insanlar beklediğiniz gibi bir çıktı üretmiyor, beklediğiniz tepkiyi vermiyorsa? 

Kontrol teorisinde makineler için öğrendiğimiz ilk şey, bir otomasyon sisteminin doğru çalışabilmesi için negatif geribildirim verilmesi gerektiği idi. Eğer pozitif geribildirim verirseniz sistemi karasız hale getirir ve büyük felaketlere yol açabilirsiniz. Bunu aynen insanlar için uygulayabileceğimi düşünmüştüm. Bir insanın yalnızca eksiklerini kendisine bildirerek düzeltebileceğimi düşünüyordum. Fakat düşünemediğim bir şey vardı: insan psikolojisi. Bir süredir okuduğum kitaplarda, insanlara geribildirim yaparken, olumlu ve olumsuz her şeyi olduğu gibi söyleyerek düzeltmesini beklemek gerektiği anlatılıyor.

Harry Nyquist 1889 yılında İsveç’te dünyaya geldi. 1907 yılında ailesinin Amerika Birleşik Devletleri’ne göç etmesi ile eğitimini orada tamamladı. 1917 yılında Yale Üniversitesi’nde doktorasını tamamlayarak önce AT&T şirketinde, daha sonra da Bell Laboratuvarları’nda çalışmaya başladı. Kontrol teorisi üzerinde yaptığı çalışmalar ile ünlendi ve bir otomasyon sisteminin kararlılığını gösteren Nyquist Eğrisi’ni geliştirdi. Bugün neredeyse tüm otomasyon sistemlerinin geliştirilmesinde Harry Nyquist’in payı vardır. Uçakların otomatik pilot ile güvenli uçuşundan, roketlerin doğru yörüngeye oturmasına, enerji santrallerindeki türbin hareketi kontrolünden, otomatik açılan kapılara kadar her yerde otomatik kontrol sistemleri bize hizmet eder. Geribildirimler de bu sistemlerin karar vermesi için anahtar görevi görür.

Sistemler doğru geri bildirim almadan hiçbir işe yaramaz. Durum böyle iken, insanların yaptığı işler için hiçbir yorum yapmadan iyiye gitmesini beklemek de mümkün olamaz. Yazının başında da belirtmiştim, bir sisteme pozitif geribildirim vermek işleyişi olumsuz etkiler ve sistemin kararsız hale gelmesine neden olur. İnsanlarla benzerlik kurduğumda aklıma ilk olarak politikacılar geliyor. Etrafındaki herkesten pozitif geribildirim alan liderlerin kontrol dışına çıkmaları belki de bu yüzdendir.

15 Aralık 2013 Pazar

Bir Böceğin Yaşamı

Önceki yazılarımda bilgisayar işlem gücünü ölçmenin oldukça karmaşık olduğundan bahsetmiştim. Öyle ki, ilk bilgisayarlar işlem gücü yerine, içerdiği vakumlu lamba sayısı ile anılırdı. Bu da bilgisayarın kapladığı alanı belirliyordu. Örneğin 1946 yılında geliştirilen ENIAC I adlı bilgisayar 167 metrekare iken, 1948 yılında geliştirilen IBM SSEC, 93 metrekare büyüklüğünde idi. Böylesine büyük yapıların içinde canlı varlıkların yaşaması da aslında doğal karşılanmalı.

9 Aralık 1906 yılında New York şehrinde dünyaya gelen Grace Murray Hopper, Yale Üniversitesi’nde Matematik ve Fizik eğitimleri aldıktan sonra akademik olarak iyi bir kariyere ulaştı. Hemen ardından da Amerikan Donanması’na katılarak ilk bilgisayarlar üzerinde çalışmalar yapmaya başladı. COBOL programlama dilinin geliştirilmesine ön ayak oldu ve ilk derleyicilerin de geliştirilmesinde aktif rol aldı.

9 Eylül 1947 günü, Amerika Birleşik Devletleri’nde bulunan Harvard Üniversitesi’ndeki bir bilgisayarda Hopper ve ekibi testler yaparken programın işleyişinde hatalar tespit ettiler. Hatanın nedeni araştırılmaya başlandığında saat sabah 08:00 idi. Saatler 15:45’i gösterirken sonunda hatanın nedeni bulundu. 70 numaralı rölenin F panelinde sıkışmış olan bir güve bilgisayarın yanlış sonuç üretmesine neden oluyordu. Güve yerinden çıkarılarak bilgisayar böceklerden arındırılmış oldu. Yapılan işlemin günlüğü ve çıkarılan böceğin fotoğrafı halen donanma web sitesinde http://www.history.navy.mil/photos/images/h96000/h96566k.jpg adresinde sergilenir.

Grace Hopper bu olaydan sonra bilgisayar programlarında oluşan hataları böcek anlamına gelen "bug" sözcüğü ile ifade etti. Hataların düzeltilmesi işlemini ise böcekten arındırma anlamına gelen "debug" olarak adlandırdı. Günümüz bilgisayarları bir böceğin yaşaması için çok uygun olmasa da, dünyadaki tüm bilgisayar uzmanları bug ve debug terimlerini kullanmaya devam ediyorlar.