29 Ocak 2016 Cuma

Marvin Minsky'nin anısına!

Geçen gün kaybettiğimiz Marvin Minsky'nin anısına, 2008'de yazdığı "Matematiği zor kılan nedir" başlıklı yazısının bir kısmını dilim döndüğünce çevirmek istedim. Minsky, Ali Nesin'in de birçok kez dile getirdiği gibi, Matematik eğitiminin eksiğini, konuya örneklerden başlanmasına ve sistemin yaratıcılığı köreltmesine bağlıyor. Bu yazının sonunda yaratıcılığa nasıl engel olunuyorun cevabı da var.
Matematiği zor kılan nedir?
Neden birçok öğrenci Matematiği zor bulurlar? Öyle sanıyorum ki bu, derse önce örnek ve aritmetik alıştırmalarından başlamaktan kaynaklanıyor. Dolayısıyla yaratıcılığı körüklemekten çok hata yapmayı engellemeye odaklanmaktan ortaya çıkıyor. Birçok öğrencinin bu olumsuz vurgudan ötürü Aritmetiği sevmediğini ve sonrasında teknoloji kokan her şeye karşı gönülsüz hale geldiğini düşünüyorum. Hatta daha uzun dönemli olarak sembolik temsillere karşı bir gönülsüzlüğe neden olduğuna inanıyorum.

Anekdot: Günün birinde çarpım tablosunu öğrenmede sorunu olan çocuğu için bir aile benden yardım istedi. Çocuk bunun çok büyük bir iş olduğundan şikayet ettiğinde ona diyagonal simetriyi açıklamaya çalışıyordum.
Ancak, çocuğun daha büyük bir şikayeti vardı: "Geçen sene toplama tablosunu öğrendim ve çok sıkıcıydı. Bu sene daha zor bir şeyi öğrenmek zorundayım. Anladım ki bunu bu sene öğrenirsem önümüzdeki seneler daha da zor olanlarını öğrenenmek zorunda kalacağım ve bu saçma şeylerin sonu gelmeyecek."

Çocuk Matematiği sonu gelmeyen şeyler olarak görüyordu, sürekli alıştırmalar, örnekler... Onu, bundan sonra başka tabloların olmayacağına ikna etmek gerçekten zor oldu.
Bu sorunun üstesinden gelebilmek için bir iskambil destesi hazırladım. Bunların ön yüzünde çarpılacak iki sayı ve arkasında da cevapları vardı. Her defasında bir kart çekilecek, cevabı tahmin edilecek ve eğer doğruysa kart desteden ayrılacaktı. Destenin azalmasına bakarak bir insanın gelişim sürecini gösteren bir tür oyuna benziyordu. Sonunda çocuk heyecanla "bu deste" dedi, "gerçekten akıllı bir öğretim makinesi! Benim bildiklerimi hatırlatıyor, sadece bilmediklerimi soruyor bu yüzden de zaman kazanıyorum."

Ancak daha ciddi problemse çocuğun öğrendiği bu konunun sonucunun ne olacağına dair bir fikri yoktu. Matematik ileride nasıl işine yarayacaktı? Bunu başarmak için hedefleri ya da hırsı ne olmalıydı?

Anekdot: 6 yaşındaki çocuğa 15 ile 15'in toplamını sordum, hemen 30 dedi. Bunu hemen nasıl cevapladığını sordum, "herkes 16 ile 16'nın toplamının 32 oldunu bilir. Bu yüzden her birinden 1 çıkarttım ve sonucu buldum."

Bildiğimiz öğretmenin cevabı şöyle olur: "Cevabın doğru ancak yöntemin yanlış: Önce 5'leri toplayıp 10 bulmalıydın, daha sonra 0'ı yazıp elde 1 diyeceksin, en sonunda da toplama eldeyi katacaksın."

Çoğu yetişkinle yarışabilecek düzeyde 2'nin katlarıyla işlem yapıp yakınsamayla sonucu bulması, çocuğu özel kılacak yerde geleneksel tarzın kurbanı yapıveriyor.

23 Ocak 2016 Cumartesi

Başarılarını bir kenara yaz!

Tim Peterson'un yazısına Hacker News'da denk geldim. Kısaca alıntılamak istedim.
Ne yapıyorsanız yapın, başarılarınızı bir yerlere yazın. Hepsini ve her daim. Kendi kendinizin tarihçisi olmalısınız. Hiç kimse sizin ne yaptığınızı hatırlamaz. Siz yazmazsanız siz de hatırlamazsınız. O yüzden ne yaptığınızı yazın, tarihinizi kendiniz oluşturun. Bunu yaptığınızda hem ne yaptığınızı daha iyi hatırlayacak, hem de geleceğe dair daha kesin hedefler koyabileceksiniz.
Tim Peterson moleküler biyolojide postdoc yapıyormuş.

7 Ocak 2016 Perşembe

Telepati: Ne düşündüğünü anlıyorum

Japon Kyushu Teknoloji Enstitüsü araştırmacıları, insan henüz konuşmaya başlamadan, onların beyin dalgalarını okuyan ve kelimeleri çözen bir bilgisayar geliştirdiler.
Araştırmacılar bu telepatik bilgisayarla, insan beynindeki elektriksel aktivitelerin oluşma şeklinin, sesli veya içeriden konuşma anında aynı olduğunu keşfettiler.

Bu şu demek aslında:
İnsanların beyin dalgalarından, onların konuşmadan bile ne demek istediklerini tahmin edebiliyorlar. Peki bu nasıl oluyor?
Şöyle: İnsanların konuşurken beyinlerinde oluşan elektriksel dalgaların şekillerini kaydediyorlar. Bunun için erkek, kadın ve çocuklardan oluşan 12'şerli kişilere belli birkaç kelimeyi söylemeleri ve daha sonra bu kelimeleri sadece düşünmeleri isteniyor. Her iki durumda da oluşan beyin dalgalarını kaydediyorlar. Bu dalgalardan o kişilerin kelimeleri söylerken ve düşünürken birbirine benzer şekiller çıkardıklarını tespit ediyorlar.

Bu beyin dalgalarının benzerliklerinden yararlanarak, insanların konuşmadan sadece düşünerek ne söylemek istediklerini tahmin etmeye çalışıyorlar. Geliştirdikleri sistem, yüzde 30 civarında bir kesinlikle çok basit kelimeleri tahmin edebiliyor. Daha ötesi Japonca tek karakterli denemelerde ise yüzde 90'a varan bir kesinlikle hangi karakterin o anda düşünüldüğü belirlenebiliyor.
Bu çalışmayı yapan araştırmacılar, böyle bir sistemin konuşma yeteneğini kaybetmiş kişilerde kullanılabileceğini belirtiyorlar.

5 Ocak 2016 Salı

Yorumlanan ve Derlenen Diller

Bilindiği gibi, bilgisayarlar dijital makineler olduklarından sadece tek bir dilden anlarlar, o da makine dilidir. Makine dili sadece 0 ve 1'lerden oluşan ve insanların anlayamacağı kodlardan oluşur. Bu yüzden insanlar, kendi bildikleri yüksek seviyeli bir dilde programlarını yazarlar. Bilgisayarlar, yazılan bu programları kendi anlayacakları dile çevirmek için derleyici denilen özel yazılımları kullanırlar. Derleyici yazılımları kendisine girdi olarak gelen yüksek seviyeli dilde yazılmış kodu, bilgisayarların anlayabileceği makine koduna çevirirler. Yorumlanan ve derlenen diller ayrımı da işte burada ortaya çıkıyor.
Derlenen dillerde yazılmış bir program bir kere makine koduna çevirilir ve bir "çalıştırılabilen kod" ortaya çıkar. Buna bilgisayar bilimlerinde "executable code" deniyor. Bu kod ortaya çıktıktan sonra çalıştırılabilir ve istenen işi yapar. Bir kere çalıştırılabilir kod oluştuktan sonra bütün çalıştırma işlemlerinde bu kod çalışır.
Yorumlanan dillerde yazılmış bir program ise çalıştırılma işleminin her defasında makine diline çevrilir ve daha sonra istenen işi yapar. Burada her runtime anında iki işlem (çevirme ve çalıştırma) ardarda yapılır.
Derlenen diller için C, C++ veya kısmi olarak Java'yı örnek olarak verebiliriz. Yorumlanan diller içinse Python, JS gibi dilleri örnek gösterebiliriz.
Derlenen ve yorumlanan dillerin birbirine karşı üstünlükleri vardır. Örneğin yukarıda bahsettiğimiz, bir kere derle ve onu kullan özelliğinden dolayı derlenen diller, yorumlanan dillere göre hızlıdır. Çünkü yorumlanan dillerde ardarda iki işlem yapılır, bu da programın çalışmasının yavaşlamasına neden olur. Aslına bakılırsa, işlemcilerin gelişen saat performansları böyle üstünlükleri ortadan kaldırmaktadır. Hızlı işlemcilerle birlikte, derlenen ve yorumlanan diller arasındaki bu hız farkı artık önemsenmeyecek noktalara gelmiştir. Ancak gömülü sistemler gibi sınırlı kaynaklara sahip işlemcilerde bu üstünlük hala anlamlıdır. Raspbery Pi, Arduino gibi nispeten düşük özellikli mikrodenetleyicilerde bu fark hala devam etmektedir. Bu yüzden bu dillerin (derlenen, yorumlanan) hangisini kullanacağınızın kararı, hangi platformu kullanacağınıza bağlı olarak değişir.
Ayrıca yorumlanan dillerin, derlenen dillere göre runtime anına daha fazla adapte olabilme üstünlükleri vardır. Örneğin derlenen dillerde bir tamsayı değişken kullanmak isterseniz, önce bu değişkeni tanımlamak/deklare etmek gerekir.
int x;
gibi bir ifadeyi programın üstünde bir yerlerde tanımlamış olmanız gerekir.
Ancak Python gibi bir dilde bu tamsayıyı tanımlamadan istediğiniz herhangi bir yerde kullanabilirsiniz. Derleyici (Yorumlayıcı) kullanılan değişkenin, kendisine refere edilen değerine bakarak tamsayı, kayan noktalı sayı vb. olduğuna kendisi karar verir.

2 Ocak 2016 Cumartesi

Derin Sular

Bugün 2016'nın ikinci günü. Bu sene yeni bir bloga başlıyorum. Bu kararıma sebep olan Twitter'daki Vala Afsar'ın şu tweeti oldu:
"2016'nın 2. günü. Şunları yapmak için önünüzde tam 365 gün var: kodlama, blog yazma, yeni bir yetenek öğrenme, topluluğa konuşma yapma."
Bu blogda yazmayı planladıklarım ise; makine öğrenmesi, sinir ağları, derin öğrenme ile alakalı okumalarımın yanısıra ayrıca; arduino programlama, javascript gibi konu başlıklarında olacak.
Bu yazdıklarıma ek olarak çeşitli teknoloji konularında, özellikle STEAM konularında yazmayı da istiyorum. Umarım düşündüklerimi uygulayabilir ve menzile ulaşabilirim.
Güzel günler diliyorum.