12 Aralık 2018 Çarşamba

Saatleri Ayarlama Enstitüsündeki Don Kişot

Cervantes'in büyük eseri Don Quijote 900 sayfayı aşan hacmiyle az ya da sadece özeti okunan bir roman. 400 yılı aşkın zaman önce yazılmış olmasına rağmen hala okunabilirliğini kaybetmemesini anlattığı olaylara değil de kahramanlarının hala aramızda yaşamasına bağlamak sanırım yanlış olmaz.
Özellikle Sancho Panza, Don Quijote'nin uşağı, sürekli etrafımızda gördüğümüz bir karakter. Don Quijote yaşadığı çağda şövalye olmamasına rağmen gezgin maceracı şövalye olmayı aklına koymuş ve bu uğurda her türlü deliliği yapan bir roman kahramanı. Etrafındaki herkes onun apaçık deliliğini görebiliyor ve bununla çoklukla eğleniyor. Aslında Sancho da aç, perişan gezmekten, dayak yemekten mutlu değil. Ne efendisini bir şövalye olarak görüyor ne de kendisini onun hizmetkarı. Peki neden Don Quijote'nin gün gibi açık deliliğine rağmen bu eziyete katlanıyor? Onun yel değirmenlerine, koyunlara saldırmasını, her hanı şato sanmasını, olmayan bir kadına aşık olmasını delilik olarak kendisi de görüyor olmasına rağmen Don Quijote'nin bir zafer kazanması durumunda kendisine vaad ettiği valilik makamı ona bütün bu delice şeylere rağmen tutunabileceği bir ümit ışığı olarak görünüyor. Hatta tüm deliliklerine rağmen Don Quijote'nin arada bir akıllıca tavsiyeler vermesinden cesaret alarak ümitleniyor. Kendisinin evi, eşi, çocukları olmasına rağmen ne kadar çalışırsa çalışsın sınıf atlayamayacağının farkında. Hem bu iş çalışmakla olsa bile o kadar da çalışmak istemiyor. Çok küçük bir ihtimal bile olsa bir delinin peşinden makam ümidiyle giden, onun vaadi haricindeki zırvalarına katlanan tanıdıklarınız yok mu sizin de?

Ahmet Hamdi Tanpınar'ın romanı Saatleri Ayarlama Enstitüsü'nde bambaşka bir konu işleniyor olmasına rağmen romanın ruhunda bir Don Quijote olduğunu düşünüyorum. Hayri İrdal ve Halil Ayarcı ilişkisi Don Quijote ve Sancho Panza arasındaki ilişkiye benziyor. Elbette Ahmet Hamdi'nin bu büyük romanının değerini gölgelemek için söylemiyorum bunu. Saatleri Ayarlama Enstitüsü'nü aklınızda Don Quijote varken okursanız bana hak vereceğinizi düşünüyorum. Hayri İrdal, Halil Ayarcı'nın kurduğu enstitünün, birlikte yaptıkları işin, kendisine yazdırılan kitabın zırdelilik olduğunun farkındadır. Halil Ayarcı ile tanışmadan önce o kadar saçmalıklarla dolu bir hayat yaşamıştır ve durumunun düzeleceğine karşı o kadar ümidi yoktur ki, kendisine tamamen delilik gibi görünen ama hayatını eskisinden çok yüksek standartlarda sürdürmesine imkan veren delice şeylere katlanır. Halil Ayarcı da aynı Don Quijote gibi kendisine anlamlı gelen ama okuduğumuzda en hafif ifadeyle saçmalık olan bir görevi kendisine misyon olarak belirlemiştir. Yine Don Quijote gibi misyonuna inancını kaybeder ve üzüntü içinde ölür.

Bu yazdıklarımdan Saatleri Ayarlama Enstitüsü'nün konusunun Don Quijote'den alındığını iddia ettiğim çıkarılsın istemem. Ahmet Hamdi Tanpınar edebiyatımızın çok önemli bir ismidir ve Saatleri Ayarlama Enstitüsü de bir başyapıttır.

Don Quijote ve Halil Ayarcı'nın ölümlerinden önce yaşadıkları hayal kırıklıkları ve üzüntü içinde ölmeleri hepimizi üzerken onların peşinden gidenlerin makam, mevki uğruna katlanarak geçirdikleri hayatların sonlarını bile bilmeyiz. Her iki romancı da bu karakterleri bize tanıtmış ama sonlarını bize göstermemiştir. Saatleri Ayarlama Enstitüsü'nde Halil Ayarcı romanın ilk yarısında yoktur, Hayri İrdal ana karakterdir ama Don Quijote'sini sonradan bulur.

Her Don Quijote'nin bir şekilde Sancho Panza'sını buluyor olması insanlığın dramlarından biridir.

11 Aralık 2018 Salı

"Kod yazabiliyorum ama algoritmasını yazamıyorum"

Yıllardır bilgisayar mühendisliği öğrencilerine algoritma ve programlamaya giriş anlatıyorum. Bütün eğitim hayatları boyunca sadece problem çözmeye odaklanmış olan öğrenciler için problemi çözme süreci üzerinde düşünmek çok zor geliyor. Öğrencilerin bir kısmı üniversiteye gelmeden önce de kodlamayı bir miktar biliyor olmasına rağmen bir problemi hangi süreçleri takip ederek çözdükleri üzerine neredeyse hiç düşünmemiş oluyorlar. Bu elbette bireysel olarak onların eksikliği değil, onları bu hale eğitim sistemimiz getiriyor.

Algoritma üzerinde düşünmek aslında problemi çözmek değil de onu çözümlemek anlamına geliyor. Üniversiteye gelene kadar problem çözümlerinde hep kısa yollar, formüller öğrenmiş; kavramları, tanımları önemsememiş gençler için bunları öğrenmek ve üzerinde düşünmek zorlu bir süreç oluyor. Hemen kod yazmaya geçmek istiyorlar ama problemi çözümlemeden kodunu yazmak işlevsiz bir çaba oluyor. Algoritma yazmak veya akış şeması çizmek için harcanan zaman boşa geçiyormuş gibi geliyor genç arkadaşlara.

Bu denizi doldurmak için yapılan çalışmalara benziyor biraz. Kayaları taşıyan ilk kamyonların döktüklerinin suyun içinde kaybolup gittiğini görürüz başlarda. Sanki bir sonsuzluğun içine bıraktığımız bu kayalar asla kıyının seviyesine gelemeyecek gibidir. Eğer yeterince kayayı suya dökersek zamanla suyun yüzeyinden görülebilir olduklarını görürüz. Bu işleme sabırla devam edince kayalar suyun yüzeyini de aşarlar. Programlama öğrenme sürecinin başında algoritma üzerinde düşünürken, yazarken işte bu kayaları denize döküyoruz. Hemen ortaya bir şey çıkarmak isteyenler, for'ları, while'ları ve if'leri yazmak ve o denizi hemen doldurmak istiyorlar.

Karl Marx'ın en kötü mimarı en iyi arıdan ayıran özelliğinin mimarın yapacağı işi önce aklında inşa etmesi olarak vurgulamasını yazılım dünyası için de düşünmek hatalı olmayacaktır. 



İşin doğrusu bazı durumlarda çözülecek problem üzerinde çokça düşünmeye değecek kadar derinlikli olmuyor. Hele iş hayatında insanın karşısına sürekli meydan okumalarla dolu sorunlar çıkmıyor. Süreç üzerinde düşünme disiplini olmayan biri için her sorun böyle kolayca çözülebilir gibi geliyor olabilir ama elbette her zaman böyle olmuyor.

Bir örnekle problemin önce akılda çözülmesinin önemini göstermek istiyorum. Aşağıda bir üçgen şeklinde dizilmiş sayılara bakalım. Bize yukarıdan aşağı doğru sadece birbirine temas eden sayılarla elde edebileceğimiz en büyük toplam soruluyor olsun.
Takip edilebilecek rotaların sayısı sadece 8 olduğundan olası bütün rotaları hesaplayıp en büyüğünü seçersek 308 toplamını bulmak zor olmayacaktır. Şimdi bu sayı dizisini biraz büyütelim.

Yukarıdaki şekilde 15 satır var, yani takip edilebilecek rotaların sayısı 2^14 tane. Bu da 16384 farklı rota demek oluyor. İlkine göre bir hayli fazla olsa da burada da tüm rotaları hesaplayıp en büyüğünü seçmek imkanı var. En yavaş bilgisayarlarda bile oldukça kısa sürede hesaplanabilecek şekilde kodlamak mümkün bu yöntemi.

Peki ya satırların sayısı 100 olsaydı? Bu durumda hesaplanacak farklı rota sayısı 2^99 olacaktı. Bu da 633825300114114700748351602688 farklı rota demek olur. Bu 30 basamaklı bir sayı olduğundan bütün rotaları hesaplayarak sonuca ulaşamayacağımız herkes için çok açık olmalı. Ne bu kadar farklı rotayı hesaplayabilir ne de, hesaplasak bile, bunları bir yerde saklayabiliriz. İşte "kod yazabiliyorum ama algoritmasını yazamıyorum" diyenlerin tıkandığı nokta burasıdır. Yöntem üzerinde düşünmeyen ancak sonucu apaçık görünen problemleri çözebilir.

Buraya kadar sabırla okuyanlar için çözümü de yazıp öyle bitirmek istiyorum bu yazıyı. Çözümü 8 farklı rotanın olduğu durum için anlatacağım ama kolayca genişletebilirsiniz. Problemi yukarıdan aşağıya doğru değil de aşağıdan yukarı doğru çözmeye çalışalım. En alttaki satırın bir üstüne kadar gelmiş olsaydık en alt satırdakilerden hangisini seçerdik diye düşünelim. Yani bir şekilde 17'ye gelmiş olsaydık, en büyük toplamı elde etmek için 18'e mi, 35'e mi giderdik? Elbette 35'e gitmeliydik. Aynı şekilde 47'den de 87'ye gitmeliydik. Son olarak 82'den de 87'ye giderdik. O zaman üçüncü satırdaki her sayıdan altındaki satırdaki ulaşabildiği sayıların en büyüğüne gideceğimizi görmüş olduk. Şimdi problem şu hale geldi.

                                   75
                       95                       64
17+max(18,35)  47+max(35,87)  82+max(87, 10)

İşlemleri yapınca:

     75
   95 64
52 134 169

Aynı işlemi ikinci satır için yapalım:
                         75
95+max(52,134) 64+max(134,169)

Burada işlemleri yapalım:
     75
229 233

Aradığımız sonuç böylece 75+max(229,233)=308 olacaktır. Bir kere böyle düşünmeyi akıl ettiğimizde satır sayısının ne kadar fazla olduğunun bir önemi kalmayacaktır. Yazacağımız kod 100 satır için bir saniyede çözüm bulacakken, bunu düşünmeyenlerin yazacağı kod milyarlarca yılda sonlanmayacaktır. Algoritma hakkında düşünmek ve düşünmemek arasındaki fark işte bu büyük uçurumdur.

4 Aralık 2018 Salı

LibreOffice için Türkçe imla denetimi eklentisi: zemberek-extension

Zemberek-NLP Ahmet A. Akın ve Mehmet D. Akın'ın 10 yıldan uzun zamandır geliştirdikleri bir özgür yazılım projesi. Proje Türkçe için doğal dil işleme araçları içeriyor [1]. Bir dönem Pardus tarafından kullanımı ile çok bilinen bir projeydi ama bir süre hem Pardus sahipsiz kaldı, hem de Zemberek geliştiricileri gönüllü olarak yaptıkları işe bir süre ara verdiler. Zemberek sadece imla denetimi işini yapmıyor olsa da son kullanıcıya en çok ulaştığı yer burası. Özellikle LibreOffice kullanıcılarının imla denetimi yaptırabilmeleri ciddi bir ihtiyaç.

Zemberek-NLP bu yıl içinde yeniden geliştirilmeye başlandı. Uzun yıllardır el değmemiş olan LibreOffice eklentisi de baştan hazırlandı [2]. Eklentiyi hazırlama kısmında Okan Özdemir ve Talha Kanyılmaz da çalıştılar. Eklenti henüz ilk sürümünde olduğundan hatalar içerebilir. Deneyip geri bildirimde bulunulursa çok iyi olur. Kurulum ve diğer konular için eklentinin sayfasına bakılabilir.


[1] https://zembereknlp.blogspot.com
[2] https://github.com/COMU/zemberek-extension

4 Kasım 2018 Pazar

İnsan düşünemediği kavramlarla öğrenebilir mi?

Düşünce hayatımızda kelimelerin büyük önemi var. Bir kavramla ilgili bilgimiz onu açıklayabildiğimiz kelimelerle büyük ölçüde belirleniyor. Özellikle lisans eğitimine kadar, hatta o aşamada bile, yeni duyduğumuz bir kavramı aklımızda canlandırabilmemiz çok önemli. Örneğin ben belgelendirme kelimesini duyduğumda kelime Türkçe olduğu için belge kökünden geldiğini anlayıp belgelendirme kavramının neyle ilgili olduğunu anlayabiliyorum. Benzer şekilde documentation'ı duyduğumda da kelime İngilizce ve document'in anlamını biliyorum yine kavramla ilgili bir fikrim oluyor. Şimdi dokümantasyon kelimesine bakalım; İngilizce bilmeyen biri için (neredeyse ülkenin tamamı için) bu kelime hiçbir anlam ifade etmiyor. İnsan belli bir eğitim seviyesinden sonra anlamını okulda, çalışma hayatında, günlük hayatında bilmediği kelimelerle de düşünebiliyor ama bu liseye kadar olan eğitim hayatımızda çoğunlukla yapamadığımız bir şey. Yaşımız daha küçükken ve daha az şey bilirken ancak üzerinde düşünebildiğimiz kavramları gerçekten öğrenebiliyoruz.

Bu konuya ikna olabilmeniz için size basit bir deney önermek isterim. Denek olarak meslekten matematikçi olmayan herhangi birini, mümkünse bir lise öğrencisini seçebilirsiniz. Deneyin adımlarını şu sırayla yapın:
  • Rasyonel sayı nedir diye sorun. 7. sınıfta rasyonel sayı kavramı çocuklara anlatılıyor (öğretilemediğini göreceğiz) Normalde bu soru için alacağınız cevap a/b (a bölü b) şeklinde yazılabilen sayılardır olacaktır. b'nin sıfır olamaması gibi ayrıntılara takılmayalım. Bu soruya çoğunlukla doğru cevap alacaksınız.
  • Rasyonel ne demek diye sorun. Bu soruya akla uygun, akılcı, ussal gibi cevaplar almanızı bekliyoruz. Bu soruya çoğunlukla doğru cevap alamayacaksınız. Deneğiniz rasyonel kavramını bildiğini ama açıklayamadığını söyleyecektir sıklıkla. Doğru cevabı söyleyip devam edelim.
  • İrrasyonel sayı nedir diye sorun. Cevabı siz de hatırlamıyorsanız sorun değil :) Bu soru için de doğru cevap a/b (a bölü b) şeklinde yazılamayan sayılardır olmalı. Rasyonel sayılar kümesine dahil olmayan gerçek sayılardır gibi bir cevap beklemiyoruz. Bu kavramı bildiğini gösteren bir ifade bize yetecektir.
  • İrrasyonel ne demek diye sorun. Rasyonel olmayan :) cevabını almanızın ardından akıl dışı, ussal olmayan diyerek doğru cevabı verelim.
Buraya kadar olan sorularla sanki bir matematik sınavı yapıyormuşuz gibi gelmiş olabilir ama niyetimiz bu değil. Yukarıdaki sorulara doğru cevap versin veya veremesin ortalama birinin rasyonel ve irrasyonel sayılarla işlem yapabildiğini göreceksiniz. Deneğiniz eğer yeterince büyükse ve bunu yapamıyorsa sorun başka demektir zaten. Burada cevaplamak istediğimiz soru yukarıdaki bilgilerin gerçekten irrasyonel sayı kavramını öğretmeye yetip yetmediği olacak. Son sorumuz:
  • İrrasyonel sayılarda akıl dışı olan nedir diye sorun. Deneğiniz bunu daha önce hiç düşünmemiş olacaktır muhtemelen. Bir sayı a/b şeklinde yazılamıyorsa neden akıl dışı olsun, karekök 2 neden akıl dışı, onun a/b şeklinde yazılamadığını gösterebilir misin gibi sorular en az 6 yıl matematik dersi dinlemiş birinin cevaplaması gereken sorular değil mi? 
Çok az denek bu soruya tatmin edici bir cevap verebilecektir. O halde biz verelim. Matematikçiler eskiden doğadaki uzunlukların sayıların oranlarıyla ölçülebileceğini düşünüyorlardı. Böyle düşünen birine bir dik üçgen versek bütün kenarlarını aynı cetvelle ölçebilmesi gerekir. Dik üçgenin iki kenarının uzunluğu 1 birim olsun. Hipotenüsün uzunluğunu meşhur pisagor teoreminden biliyoruz kök 2 birimdir. Yine biliyoruz ki karekök 2, a/b şeklinde yazılamayan bir sayıdır. Yani hipotenüsü cetvelimizin üzerine yerleştirsek bir ve yalnız bir noktaya karşılık gelirken biz o noktayı daha önceden olduğu gibi (rasyonel sayılarda yaptığımız gibi) okuyamayız ama o uzunluğu ölçebiliriz de. İşte irrasyonel sayıların matematikçilere akıl dışı gelen yanı burasıdır.

Liseyi bitirene kadar çocuklarımıza altı yıl rasyonel ve irrasyonel sayıları anlatıyoruz ama bu sayıların adlarının nereden geldiğini merak ettirip sordurmuyoruz. Çocuklarımızın "akıl dışı sayı mı olur öğretmenim?" sorusunu sormamalarının nedenlerinden birinin kavramların bilmedikleri kelimelerle öğretilmeye, ezberletilmeye çalışılması olduğunu düşünüyorum. Bu kavramları akılcı (rasyonel), akıl dışı (irrasyonel) karşılıklarıyla öğretmeye çalışsaydık çocuklar akıl dışı sayı mı olur derlerdi hemen. Oranlı ve oransız sayılar desek de aynı etkiyi elde edebilirdik.

Çocuklar bu kavramlar hakkında düşünmeyecekse neden anlatıyoruz bunları? Mühendislik yapmayacak veya bilimin bir alanında çalışmayacak kimsenin 2'nin karekökünü almaya veya pi'nin basamaklarını hesaplamaya ihtiyacı yoktur. Karekök 2'yi 1,4 alan biri doğruya çok yakın bir hesap yapabilir. Pi'yi 3 alan da çok şey kaybetmez. Buradan bu kavramlar hakkında düşünmemeliyiz anlamı çıkarırsak çok hata ederiz. Ediyoruz.

Çocuklarımızı düşünmeyen, sorgulamayan, merak etmeyen insanlar olarak yetiştirmeyelim.

Meraklısı için ilave soru: İmajiner sayıları okulda öğrenmiş bir lise öğrencisine -i sıfırdan büyük mü küçük mü diye sorun. İmajiner sayılarla işlem yapmayı bilenlerin pek azının soruya doğru cevap vermesinde nice ibretler var.

31 Ekim 2018 Çarşamba

Kindle Oasis: en güzeli ama şarjı en az dayananı

Belki almayı düşünenlere faydası olabilir diyerek daha önce Kindle Keyboard (2010), Kindle Paperwhite (2013) ve Kindle Voyage (2015) kullanmış biri olarak yeni aldığım Kindle Oais hakkında yazayım istiyorum.
  * Oasis'in diğer kindle'lardan en önemli farkı bence 7" ekranı. Diğer kindle'ların ekranları 6" iken Oasis onlardan daha uzun değil ama daha geniş. Elinize alınca basılı kitaplara daha yakın bir oranda olduğunu hissediyorsunuz.
* 300 ppi çözünürlüğü ile daha fazlasını aramayacağınız bir okumaya deneyimi sunan Oasis'in aydınlatması da benim bundan önce kullandığım tüm kindle'lardan daha başarılı. Yanlardan yapılan aydınlatmaların hangi noktadan geldiği belli olmayacak kadar başarılı bir tasarımı var. Parlaklığı otomatik ayarlama konusunda da çok iyi.
* Su geçirmiyor oluşu bir ekitap okuyucu için nasıl bir ihtiyaç çözemesem de böyle bir özelliği olduğunu da not düşeyim.
* Metal yüzeyi bir ekitap okuyucu için berbat. Tamamen metalden yapılmış yüzeyi asla ısınmıyor ve elinizdekinin kitaptan çok farklı bir şey olduğunu sürekli hissediyorsunuz.
* Cihazın küçük bir kısmı cep telefonunuz kadar kalınken geri kalan kısım yarısı kalınlığında. Önce bunun elimde tutarken bir denge sorununa yol açacağını düşünmüştüm ama öyle olmadı. İnce tarafı gerçekten çok ince.
* Amazon eski kindle'lara kulaklık girişi koymasına rağmen sonradan bunu kaldırmıştı. Oasis ile birlikte kulaklık girişi geri gelmese de bluetooth bağlantı imkanı getirilmiş. Görme engelliler ve sesli kitap dinlemek isteyenler için kullanışlı olacağını düşünüyorum.
* Disk kapasitesi en az 8gb olarak satılıyor ama ekitaplar o kadar az yer kaplıyor ki bu benim için ciddi bir getiri sayılmaz.
* Sayfa değiştirmek için hem dokunmatik ekran hem de yanlardaki tuşları kullanmak mümkün. Dokunmatik ekranı etkisiz hale getirmek de mümkün.
* Amazon hala kullanılabilir bir tarayıcı geliştirebilmiş değil. Neden temel işlevleri yerine getirebilen bir tarayıcı yazdırmıyorlar insan hayret ediyor.
* Ekranı hala renkli değil. 
* Şarjı diğer kindle'lara kıyasla dramatik derecede az dayanıyor. Eskiden Voyage'ı ayda bir şarj ederken Oasis'i haftada bir şarj ediyorum. Cihazın inceliğinin arkasındaki pilden alındığını tahmin etmek güç değil ama şarjdan vazgeçip daha ince bir kindle alma hayalim yoktu doğrusu.
* 250$'lık fiyatıyla çok çok pahalı.

7 Kasım'da piyasaya çıkacak Paperwhite'ın son hali 130$ olacak ve o da su geçirmeyecekmiş (kimin ihtiyacı varsa). Bence bekleyip onu alın. 7" ekran ve aydınlatması çok başarılı ama bu kadar az şarj ve bu fiyata Oasis almayın.

Saatleri Ayarlama Enstitüsündeki Don Kişot

Cervantes'in büyük eseri Don Quijote 900 sayfayı aşan hacmiyle az ya da sadece özeti okunan bir roman. 400 yılı aşkın zaman önce yazılmı...