Algoritmalar Neden Önemlidir?

  • Son zamanlarda algoritma sözcüğüne haberlerde daha sık rastlıyoruz. Haber sitelerinde algoritma kelimesini (bkz https://www.ntv.com.tr/ara?q=algoritma) arattığımızda çok sayıda güncel haber listeleniyor. “WhatsApp, ‘herkesten sil’ özelliğini değiştirdi”  (https://bit.ly/2Dm4p84) haberinde yeni algoritmayla “atılan mesajı silme” özelliğinin çalışma prensibinin değiştiği; “Pelikan yuvadan uçmaya hazırlanıyor” (https://bit.ly/2oOGYjg) haberinde Meteksan Savunma’nın geliştirdiği Pelikan Güdümlü Mermi Simülatörü’nün kullanıcıya farklı algoritma ve parametreleri deneyebilme imkanı verdiği; “Facebook kaç paranız olduğunu bilecek” (https://bit.ly/2ovrPmL) haberindeyse Facebook’un satın aldığı yeni algoritma anlatılıyor.

Önümüzdeki günlerde bu sözcüğü daha çok duyacağız gibi görünüyor. Henüz ülkemizde yaygınlaşmadı ama bir “algoritma çağı”ndan bahsedenler de var (http://radioopensource.org/the-algorithmic-age/, http://firstmonday.org/ojs/index.php/fm/article/view/8097/6583). Rainie vd.’ye (2017) göre algoritmalar her şeyi optimumlaştırmaya çalışıyor, hayat kurtarıyor, işleri kolaylaştırıyor ve kaosu önlüyor ancak şirket ve hükümetlerin elde edebileceği güç nedeniyle de endişe uyandırıyor. Rainie vd.’nin (2017) algoritmalar ve etkileri üzerine yaptıkları çalışmaya katılan bilişim teknolojileri uzmanların neredeyse tamamı algoritma tabanlı uygulamalar hakkındaki endişelerini ifade ediyor. Bu uzmanların %38’i algoritmaların olumlu ve %37’si olumsuz etkilerinin daha ağır bastığını düşünüyor. %25’ine göreyse algoritmaların olumlu ve olumsuz etkileri yarı yarıya. Ancak uzmanların büyük çoğunluğu, algoritmaların görünmez bir şekilde hızla yayılacağı ve gelecekteki etkilerinin çok daha büyük olacağı hakkında hemfikir.

Enformasyon çağı, bilgi çağı ve şimdi karşımıza çıkan algoritma çağı gibi tanımlamalara karşı bazı çekincelerim olsa da önümüzdeki günlerde algoritmaları daha çok konuşacağımız ve tartışacağımız kesin. Algoritmaları daha sağlıklı tartışabilmek için de bir zamanlar sadece matematikçilerin ve yazılım geliştirenlerin aşina olduğu bir terim olan algoritmanın ne olduğunun ve bilgisayımsal (computational) işlemlerdeki yerinin anlaşılması gerekiyor. Dolayısıyla kodlama eğitimlerini yalnızca bir meslek edindirme kursu olarak değerlendirmemeli. Bu eğitimler, öğrencilere bilgisayımsal bakış açısı kazandırmak için önemli bir fırsat. Hatta kodlamayı, eğitimin amacı değil, bilgisayımı anlamanın ve yaparak öğrenmenin bir aracı olarak ele almak daha yerinde bir yaklaşım olabilir. Birçok okulda yeterli bilgisayar altyapısının olmadığını düşünerek karamsarlığa kapılmamak lazım. Bilgisayımsal bakış açısı, bilgisayar olmadan da (belki daha başarılı olabilir) kazandırılabilir. Örneğin https://classic.csunplugged.org/ adresinde çocuklara bilgisayar bilimini, bilgisayar olmadan öğretebilmek amacıyla çeşitli oyunlar ve etkinlikler hazırlanmış. Aynı sitede, ücretsiz indirebilen ve çeşitli dillere çevrilmiş bir kitap da var. Kitap henüz Türkçeye çevrilmemiş olmasına karşın kitaptaki bazı etkinliklerin Türkçe çevirileri de var. İkilik düzeni, sıralama, arama ve metinleri sıkıştırmada kullanılan algoritmaları oyunla öğreten eğlenceli etkinlikler var.

Okullarda yıllardır Word, Excel, Power Point vb anlatılarak yapılan teknoloji eğitiminden kökten farklı bir eğitim anlayışına gereksinim var. ABD ve Avrupa’da kodlama eğitiminin hedefleri arasında ucuz işgücü yetiştirmek olabilir; belki biz de sadece onların acemi bir taklitçisiyiz. Buna rağmen bilgisayar bilimini, çeşitli algoritmaları ve kodlamayı neden öğrenelim? Bilişim teknolojilerinden yararlanmak (örneğin tweet atmak, sosyal ağlarda örgütlenmek) için tüm bunları bilmeye gerek var mı? Sonuçta, televizyon izleyebilmek için elektronik ya da modern sağlık hizmetlerinden yararlanmak için tıp üzerine çalışmıyoruz.

Kimi zaman eğlenceli de olabilecek bu öğrenme zahmetine katlanmak için başlıca iki nedenimiz olduğunu düşünüyorum. Birincisi, adı ister algoritma çağı isterse başka bir şey olsun algoritmalara dayalı toplumsal düzenlemelerin çoğalacağı bir sisteme doğru ilerliyoruz. Bilgisayarların çalışma ilkelerinin büyüden arındırılması gerekiyor. Bilgisayarların nasıl çalıştığı bilinmediği zaman bilişim teknoloji hakkındaki mitsel düşüncelere daha kolay kapılıyoruz. Ayrıca Erwig’in (2017) belirttiği gibi yaşadığımız dünyada kendi başına hareket edemeyen nesnelerle etkileşim halindeyiz ve temel mekanik bilgisi bu nesnelerin hareketini önceden tahmin edebilmemizi böylece daha güvende olmamızı sağlıyor. Erwig’e (2017) göre bilgisayar bilimi de benzer bir yarar sağlayacaktır. Toplumsal yaşamı ve politik sistemleri etkileyen algoritmaların nasıl çalıştıklarının, varsayımlarının, hangi koşullarda daha iyi sonuç verebildiklerinin ya da sonuçlarının kesin mi yoksa olasılık hesabına mı dayandığının bilinmesi önemlidir.

İkinci neden ise bilgisayar biliminin, bilgisayar ve elektronik cihazlar dışında da gündelik yaşamdaki sorunları anlamaya ve çözmeye katkıda bulunabilme potansiyelidir. Algoritma kelimesi, Ebu Abdullah Muhammed Bin Musa El-Harezmi’den (780-850) gelmektedir. Harezmi, Hindistan’da geliştirilmiş onluk sistemi ve Arap rakamlarıyla sıfır kavramını Avrupa’ya tanıtmıştır. Cebir kelimesi El-Harezmi’nin 1830’da yazdığı “El’Kitab’ül-Muhtasar fi Hısab’il Cebri ve’lMukabele” (Cebir ve Eşitlik Üzerine Özet Kitap) adlı eserinde geçmektedir. El-Harezmi bu kitabında “hangi sayının karesi, sayının 10 katı ile toplanırsa 39 eder?” probleminin çözüm yolunu hem sözlü hem de geometrik olarak göstermektedir. El-Harezmi’nin adını “Algorizm” olarak telafuz eden Avrupalılar da “Arap sayıları kullanarak aritmetik problemler çözme kuralları”na algoritma adını vermiştir (http://bit.ly/1hcAajP). Fakat algoritmalar, bu terim kullanılmaya başlamadan önce de vardır. Ayrıca belirli bir problemi çözmek için uygulanan bu alışılmış yöntemler (rutinler), olarak tanımlayabileceğimiz algoritmaların kullanım alanları matematikle sınırlı değildir. Babiller’in hukuksal sorunlarda karar verebilmek ve Latince öğretmenlerinin doğru gramer elde edebilmek için algoritmalardan yararlandığı bilinmektedir. Tüm kültürlerde algoritmaların geleceği tahmin etmek, hangi tıbbi tedavinin uygulanacağına karar vermek, yemek hazırlamak gibi uygulama alanları vardır (Barbin vd., 2012). Yemek ya da bir sandviç hazırlarken bir tarifte yer alan talimatları uygularız. Aslında yaptığımız şey malzeme, mutfak gereci, enerji ve hazırlama zamanı gibi kaynaklardan yararlanarak alışılmış yöntemleri uygulamak ve ham içeriği nihai bir ürüne dönüştürmektir. Bilgisayımsal eğitim, gündelik yaşamımızdaki bu tip süreçleri tekrar gözden geçirmemizi sağlayabilir.

Bu bağlamda, Erwig’in (2017) Once Upon an Algorithm: How Stories Explain Computing (Bir Zamanlar Bir Algoritma: Masallar Bilgisayımı Nasıl Açıklar) adlı kitabının güzel bir çeviriyle bilgisayımsal eğitim için eşsiz bir kaynak olacağını düşünüyorum. Erwig (2017), popüler masallar, romanlar ve filmler aracılığıyla bilgisayar biliminin temel kavramlarını basit ama ayrıntılı bir biçimde anlatıyor. Erwig’in (2017) Hansel ve Gretel’den nasıl yararlandığına bakalım.

Hansel’in Algoritması

Erwig (2017) algoritmaları tartışmaya bilgisayımın ne yaptığı ve ne olduğu sorularıyla başlar. Birinci görüş, bilgisayımın problem çözdüğüdür. Bu bakış açısında, bir problemin uygun biçimde gösterildikten ve alt problemlere ayrıldıktan sonra çözülebileceği vurgulanmaktadır. Bilgisayımla problem çözme arasındaki farklılıkları dikkate alan ikinci görüşe göreyse bilgisayım herhangi bir problem çözme değil bir algoritmanın uygulanmasıdır. Algoritma, bilgisayımı kesin olarak tanımlar, bilgisayımın otomatikleştirilmesini ve analizini olanaklı hale getirir. Bilgisayımda problemler ortak özelliklerine göre sınıflandırılır ve bu sınıfta yer alan problemlerin çözümü için bir algoritma tasarlanır. Böylece algoritmalar, belirli bir sınıfta yer alan problemlerin çözümünde uygulanabilecek bir beceri haline getirilir.

Erwig (2017) daha sonra bu tartışmayı Hansel ve Gretel adlı masalla derinleştirir. Masalı hatırlayalım. Hansel ve Gretel, babalarıyla ve üvey anneleriyle yaşayan iki kardeştir. Üvey anneleri, çocuklardan kurtulmak ister ve babalarını, çocukları ormanın derinliklerinde bir yere bırakmaya zorlar. Babasıyla üvey annesinin konuşmasına kulak misafiri olan Hansel’in aklına ormandan eve geri dönebilmek için bir çözüm gelir. Gece dışarı çıkar ve çakıl taşı toplayıp cebine doldurur. Sabahleyin ormanın derinliklerine doğru yola çıktıklarında Hansel cebindeki çakıl taşlarını yol boyunca serper. İki kardeş ormanda yalnız başlarına kaldıklarında havanın kararmasını beklerler. Daha sonra ay ışığında parlayan çakıl taşlarını takip ederek evlerine geri dönerler.

Burada temel problem, tehlikeli ormandan güvende olabilecekleri evlerine dönebilmektir. Problem tek adımda çözülemeyeceğinden Hansel problemi parçalara ayırır. Asıl problem şimdi iki çakıl taşı arasındaki mesafeyi kat etmekle çözülebilecek daha alt problemler haline getirilmiştir. Sistematik biçimde, çakıl taşlarını izlemeleri gerekmektedir. Sistematik yaklaşım, bilgisayımın temel özelliklerinden biridir. Aşağıdaki resimden de görüldüğü gibi Hansel, ana problemi daha kolay çözülebilir parçalara ayırarak çözebilmiştir. Fakat bu stratejinin tek başına yeterli olmadığına ve çakıl taşı gibi tamamlayıcı bir ögeye gereksinim duyduğuna dikkat edelim. Çözüm sürecinden anlaşıldığı gibi bilgisayımın gerçek dünyadaki bir problemi çözebilmesi için problemin gösterimi (representation) gerekmektedir. İlk gösterim, ormanın tehlikeli ve evin güvenli olduğu bir durumu ifade etmektedir. Hansel ve Gretel, tehlikeli bölgeden güvenli bölgeye geçmelidir. Hansel’in çözümünde ise bir çakıl taşı, o anda bulundukları yeri ve çakıl taşlarının tamamı da ormandan çıkış yolunu göstermektedir. Çakıl taşları, bilgisayımı olanaklı hale getirmektedir.

Bilgisayım, problem çözme sürecidir. Ama ne her bilgisayım bir problem çözer ne de her problem çözümü bilgisayımdır. Hansel ve Gretel, problemin gösterimiyle ilgisiz biçimde, etrafa çakıl taşı serpmiş olabilir. Ormanın içinde bunları takip ederek dolaşmaları ve sonra aynı yere gelmeleri bir çözüme götürmeyecektir. Her çözüm de bilgisayım kapsamında değerlendirilemez. Hansel’in gözleri iyi görmeyen cadıyı kilo almadığına inandırmak için parmağını uzatmak yerine bir kemik parçasını uzatması zekice ama anlık bir çözümdür. Bu çözümde sistematik bir yaklaşım yoktur. Hansel’in geri dönüş takibi için çakıl taşlarını kullanmayı akıl etmesi de sistematik bir düşüncenin sonucu olmayıp anlık bir çözümdür. Hansel’in daha sonra çakıl taşı bulamayınca ekmek parçalarını kullanması yine anlık bir çözümdür. Çakıl taşlarının takip edilerek eve dönülmesiyle uygulanan çözüm tekrarlanabilme özelliğine sahiptir. Ama Hansel’in çözüme yardımcı olmak amacıyla çakıl taşını kullanmayı akıl etmesi ve daha sonra bunun yerine ekmek parçalarını kullanmayı akıl etmesi tekrarlanamaz; üçüncü kere ormana bırakılmaları gerekseydi Hansel’in aklına bir başka parlak fikrin gelmesini bekleyecektik.

Bilgisayımın problem çözümü olarak ele alınması bilgisayımı sistematik ve bölünebilir bir süreç olarak göstermesi açısından önemlidir. Ancak bilgisayımın nasıl çalıştığını ve neden benzer durumlarda uygulanabilir olduğunu göstermekte yetersiz kalmaktadır.

Hansel ve Gretel, aşağıdaki algoritmayı uygulamaktadır:

  1.  Daha önce ziyaret edilmemiş parlak bir çakıl taşı bul ve ona doğru ilerle.
  2. Eve geri dönene kadar bu adımı uygula

Algoritmaların en büyük özelliği tekrarlanabilirliktir. Hansel ve Gretel, aksi bir koşul oluşmadıkça aynı algoritmayı her seferinde başarıyla uygulayabilir. Bu nedenle, algoritmalar bilgisayımda temeldir. Bir algoritmanın bir dilde ifade edilebilmesi, bir sınırının olması (sonsuza kadar gitmemesi) ve işe yarar olması gerekir. Algoritma ayrıntılandırılabilir. Örneğin, Hansel’in taşları serperken görüş mesafesini dikkate alması gerekir. Çünkü bir taşın bulunduğu yerden sonraki taşın nerede olduğunu görerek hangi yöne gideceğine karar verebilmelidir. Masal da anlatılmamış ama aynı taşı iki kere ziyaret etme gibi bir durum da olabilir. O zaman ne yapmaları gerekir? Bu tip sorunların önüne geçebilmek için Hansel ve Gretel önlerine çıkan çakıl taşlarını toplamaları gerekecektir. Yeni algoritma aşağıdaki gibi olabilir:

  1.  Daha önce ziyaret edilmemiş parlak bir çakıl taşı bul, bulunduğun yerdeki taşı cebine koy ve yeni taşa doğru ilerle.
  2. Eve geri dönene kadar bu adımı uygula

Ne yazık ki bu yeni algoritma nedeniyle masalın yeniden yazılması gerekecektir. Çünkü eve vardıklarında Hansel’in cebinde yine taşlar olacağından ekmek kullanmak zorunda kalmayacaklar, kuşlar yoldaki ekmekleri yemeyecek ve cadının eline düşmeyeceklerdir. Ama masalda anlatılmayan başka olasılıklar da vardır. Algoritmanın her zaman sonlanabilmesi ve doğru sonucu vermesi gerekmektedir. Eğer ormana doğru ilerlerken düz bir yol takip etmeyip zikzak çizdilerse aşağıdaki gibi bir durumla da karşılaşılabilir:

D noktasından hem B hem de C görülebiliyorsa algoritmanın bunu da dikkate alması, örneğin DCBA yolu yerine DBC’de takılıp kaldıysa bir önceki konumuna dönmesi gerekir. Algoritmaların durması da önemli bir özelliktir. “Daha önce ziyaret edilmemiş” şartını kaldırdığımızda işler yine karışabilir. Algoritmada sonsuz döngüye girilebilir.

Erwig (2017) daha sonra “bilgisayım algoritmanın uygulanmasıdır” görüşüne geçer ve bilgisayımın algoritma uygulandığında gerçekleştiğini belirtir. Bilgisayar, bilgisayım yapan kişi ya da şeydir. Buna göre iki tip bilgisayar vardır. Birincisi, anlayabileceği dilde tarif edilen herhangi bir algoritmayı en azından (prensipte) uygulayabilen, insan, dizüstü bilgisayar ya da akıllı telefon gibi evrensel bilgisayarlardır. İkinci tip bilgisayarlarsa tek bir algoritmayı çalıştırabilirler. Algoritmanın donanımla bütünleştiği hesap makineleri bu tip bilgisayarlardır.

Ayrıca bilgisayarın tipi veya bilgisayımı yapanın insan veya makine olması fark etmeksizin bilgisayımın bir maliyeti vardır. Bilgisayım için bilgisayarın kaynak kullanması gerekir. Oyun oynarken dizüstü bilgisayarınız ısınabilir ya da akıllı telefonda çok fazla uygulama çalıştırırsanız pili daha hızlı bitebilir. Bu nedenle, bir algoritmanın bir problemi çözebilmesinin yanında yeterince hızlı hesaplama yapabilmek için bilgisayım kaynaklarını nasıl kullandığı değerlendirilmelidir. Örneğin, bir sıralama algoritması 100 kaydı çok hızlı biçimde sıralayabilir. Ama milyonlarca kaydın aynı algoritmayla istenilen zamanda sıralanıp sıralanamayacağını öngörebilmek için algoritmanın sonuca nasıl ulaştığı bilinmelidir. Kayıt sayısının artması algoritmadaki adım sayısını nasıl etkilemektedir? Bir diğer deyişle, algoritmanın çalışma zamanı karmaşıklığı (runtime complexity) nedir?

Hansel ve Gretel’e dönersek… Çocukların algoritmasındaki “daha önce ziyaret edilmemiş parlak bir çakıl taşı bul ve ona doğru ilerle” bir algoritma adımıdır. Hansel ve Gretel’in adım büyüklüklerindeki farklılıklar ya da bilgisayarların işlemci modelleri algoritmanın uygulama hızında etkilidir. Ama algoritmaların verimlilik analizi ve birbiriyle karşılaştırılabilmesi için gerçek adımdan farklı olan algoritma adımı dikkate alınır:

Algoritmaların çalışma zamanı karmaşıklıklarının ölçümü daha büyük girdilerin (masalımızda daha uzun mesafelerde) çalışma zamanını nasıl etkileyeceğini göstermektedir. Hansel ve Gretel örneğinde, mesafe (kullanılan çakıl taşı) artıkça algoritma adımı sayısı da aşağıdaki gibi doğrusal olarak artmaktadır:

Her adımda bir çakıl taşı olmak zorundadır ve algoritmanın problemi çözüp çözememesi gidilen mesafeye, Hansel’in cebinin bu kadar çakıl taşı alıp alamayacağına bağlıdır. Hansel’in cebinin büyüklüğünün yolu bulmaya etkisi veya bilgisayar bilimi bağlamında bilgisayarın bir algoritmayı çalıştırabilmesi için gerekli alan, alan karmaşıklığı (space complexity) olarak adlandırılır. Görüldüğü gibi Hansel’in çakıl taşlı algoritması işe yarar gibi gözükmesine rağmen cebine sığan çakıl taşlarıyla sınırlıdır.

Şimdi masalı değiştirelim. Hansel’in cebi yeterince büyük değil ve bunun için yola bir çakıl taşı bıraktıktan sonra aşağıdaki gibi eve geri dönüp yeni bir çakıl taşı alması gerekiyor:

Bu durumda bir çakıl taşı koymak için 1 adım atacaktır. İkinci çakıl taşı için önce eve geri gidecek (1 adım), sonra da 2 adım ileri atacaktır. Üçüncü çakıl taşı için gidiş gelişte 5 (2 geri, 3 ileri adım), dördüncü için 7 adım (3 geri, 4 ileri adım) atacaktır. Böylece atılması gereken adımlar aşağıdaki gibi olacaktır:

Yukarıdaki örüntüye göre n çakıl taşlık mesafe için n² tane algoritma adımı gerekmektedir ve çalışma zamanı karmaşıklığını gösteren fonksiyonumuz bu sefer doğrusal değil, ikinci derece fonksiyondur:

Algoritmaların çalışma zamanı karmaşıklarının hesaplanması çeşitli algoritmaları karşılaştırma ve problemi istenilen sürede çözüp çözemeyeceğini öngörebilme olanağı sağlar. İkinci algoritma belki kısa mesafede uygulanabilir; ama mesafe artıkça Hansel’in kondisyonu yetersiz kalacaktır.

Erwig (2017), Hansel ve Gretel’den yola çıkarak bilgisayar bilimiyle ilgili birçok konuyu tartışmakta ve açıklamaktadır. Dil Derneği’nin sözlüğünde bilgisayar “çok sayıda aritmetiksel ya da mantıksal işlemlerden oluşan bir işi, önceden verilmiş bir izlenceye göre yapıp sonuçlandıran elektronik aygıt, elektronik beyin” olarak tanımlanıyor. Ama Erwig’in (2017) de vurguladığı gibi bilgisayar, bir insan da olabilir, elektronik aygıt da. Christian ve Griffiths’in (2017) Hayatımızdaki Algoritmalar adlı kitabı, “insan” bilgisayarların bilinçli veya bilimsiz kararlarında algoritmaların önemli bir yere sahip olduğunu göstermektedir. Yazının devamında da görüleceği gibi bu algoritmalardan yola çıkarak daha gerçekçi ve yararlı öneriler içeren bir kişisel gelişim kitabı bile yazılabilir.

En Doğru Yerde Duraklama

Boş park yeri bulmanın zor olduğu bir yere giderken çoğu zaman tereddüt ederiz: Boş bir yer gördüğümüzde hemen park etmeli miyiz? Yoksa daha az yürümek için arabayla biraz daha gidip şansımızı zorlasak mı? Ama ne kadar ilerlemeliyiz?

Seyahat eden bir turistiz. Haritaya baktığımızda güzergahımızda n tane otel olduğunu gördük. n. otele kadar gelip daha sonra içlerinden en iyi otele geri dönmek gibi bir şansımız olmadığından bir yerde durup konaklamamız gerekiyor. En uygun oteli nasıl seçeceğiz?

Otuz gün içinde bir kiralık ev bulmamız gerekiyor. İlk gördüğümüz evi beğendik. Hemen tutmalı mıyız? Ama biraz daha araştırma yapsak daha iyi olmaz mı? 29 gün boyunca kiralık evlere baksak, son gün de en beğendiklerimizi karşılaştırsak daha iyi olmaz mı? Ama ya beğendiğimiz ev tutulursa?

Ev kiralamaya bir de karşı taraftan, ev sahiplerinin gözünden bakalım. Kiralık ilanı verdikten sonra gelen ilk kiracı adayıyla anlaşalım mı? Ya daha iyi bir kiracı gelirse? Biraz daha bekleyebiliriz, ama Dimyat’a pirince giderken evdeki bulgurdan olmak da var.

Genç kızın kapısından görücü eksik olmuyor. Ne doktorlar, ne mühendisler evlenmek için kapısını çalıyor ama hiçbirine yüz vermiyor. Daha iyi bir koca adayı bekliyor. Anne ve baba, kızları evde kaldı diye endişeleniyor. Genç kız, daha ne kadar beklemeli?

Bu problemlerin hepsinde zamana karşı yarışırız. Tüm seçenekleri değerlendirmek istesek de kaynaklarımız sınırsız değildir; bir yerde durmamız ve kararımızı vermemiz gerekir. Nerede duracağız? Araştırmaya ne zaman son vermemiz gerekiğinin yanıtını arayan bu tip problemler en doğru yerde duraklama (optimal stopping) problemleri olarak adlandırılır. Christian ve Griffiths’in (2017) belirttiği gibi bu problemlerin en ünlülerinden biri de sekreter problemi olarak tanınmaktadır. Belirli bir sayıda sekreter adayı vardır ve işe alım, adayların özgeçmişine bakarak değil de birebir görüşülerek yapılacaktır. Aday uygunsa işe kabul edilecek ve görüşmeler sonlandırılacaktır. Yine yukarıdakilere benzer bir sorun vardır. Eğer aceleci davranılırsa en iyiyle hiç karşılaşmama, çok geç karar verilirse de belki de hiç olmayan daha iyiyi boş yere beklemiş olma ihtimali vardır. Ama matematik önemli bir ipucu sunmaktadır. Tek bir aday varsa bu adayın en iyi olma ihtimali %100’dür. İkinci aday varsa onun en iyi olma ihtimali %50, beşinci adayınki %20, yüzüncü adayınkiyse %1’dir. Dolayısıyla sonraki görüşmelerde daha iyi bir adayla karşılaşma ihtimali olabilir ama bu ihtimal giderek azalacaktır.

Şimdi adım adım ilerleyelim. İki adayımız var. Doğrudan birinciyi seçebiliriz veya onu göz ardı edip ikinciye geçebiliriz. Her iki durumda da en iyi adayı seçme ihtimalimiz %50. Üç adayımız varsa rastgele bir seçimle en iyi adayı seçebilme şansımız %33. Sonraki iki adayla görüşmeden ilk adayı seçersek veya ilk iki adayı eleyip üçüncüyü seçmek zorunda kalırsak en iyi aday için şansımız sadece %33 olacaktır. Ama algoritmamız şöyle olursa başarı şansımız %50 olacaktır:

  1. Birinci adayla görüş
  2.  İkinci adayla görüş
    • Eğer ilk adaydan daha iyiyse ikinci adayı seç
    • Eğer ilk adaydan daha iyi değilse üçüncü adayı seç

Deneyelim. Üç kişi için altı farklı sıralama yapılabilir: 1-2-3, 1-3-2, 2-1-3, 2-3-1, 3-1-2, 3-2-1. Eğer birinci aday en iyi adaysa (1-2-3 ve 1-3-2 durumlarında) en iyiyi ararken onu kaçırırız. Eğer ikinci aday en iyi adaysa, ikinci adayın birinci adaydan güçlü olduğu durumlarda (2-1-3 ve 2-3-1 durumlarında) ikinci aday seçilecektir; zaten en iyi adaydır. İlk adayla görüştükten sonra ikincinin birinciden daha kötü olduğunu gördüğümüzden (3-1-2 durumu) üçüncü adaya geçerek yine en iyi adayı seçebiliriz. 3-2-1 durumunda ise ikinci aday birinciden daha iyi diye üçüncü adayı beklemediğimizden en iyi adayı seçme şansını kaçırırız. %100 doğru seçim yapamayız ama şansımızı %33’ten %50’ye çıkarmış oluruz.

Aday sayısı dört olduğunda ikinci, beş olduğunda da üçüncü adaydan sonra seçme işlemine başlamamız önerilmektedir. Aslında aday sayısı artıkça bu algoritma daha çok önem kazanmaktadır. Dört adaylı bir seçmede ikinciden, beş adaylıda üçüncüden sonra seçme işlemine başlamamız rastlantı değildir. Burada geçerli algoritma şöyledir:

  • Hiçbirini seçmeden adayların %37’sine bakın
  • %37’yi aştıktan sonra o ana kadar gördüğünüz adaylardan en iyi olanını seçin

Aşağıdaki tablodan da görüleceği gibi en iyi adayı seçme şansı yine %37’ye yaklaşacaktır:

Christian ve Griffiths’in (2017) belirttiği gibi algoritmaların içerdiği temel varsayımlar önemlidir. Yukarıdaki sekreter probleminde temel varsayım adayları ancak birbirleriyle karşılaştırarak hangisinin daha iyi olduğuna karar verebildiğimizdir. Elimizde ikinci adayın birincisinden ne kadar iyi olduğu hakkında hiçbir bilgi yoktur. Ama YDS (Yabancı Dil Bilgisi Seviye Tespit Sınavı) puanı gibi bir parametre eklersek en iyi adayı bulmaya daha çok yaklaşırız. Bu yeni koşulda, ilk %37’ye bakarken YDS puanı 95 olan birini doğrudan elemeyiz. Çünkü geri kalan adaylar arasında 95’ten yukarı puana sahip birini bulmak daha düşük olasılıktır. Bu nedenle, en iyi adayı bulmak için algoritmayı değiştirmek ve iyileştirmek gerekir.

Benzer bir durum, bir evini kiraya veren kişi için de geçerlidir. Sekreter probleminde olduğu gibi ev sahibinin bazı ön bilgilerle hareket etme şansı vardır. Kiracı adaylarını sadece verdikleri tekliflerle karşılaştırmaz; eve ödenecek en düşük ve en yüksek miktarları tahmin edebilir ve evin boş kalma maliyetini dikkate alarak kiracı adaylarıyla görüşür.

Christian ve Griffiths (2017), ev satışı, park yeri, sevgili seçimi gibi en uygun zamanda durup seçim yapmayı gerektiren problemler için uygulanabilecek farklı algoritmaları tartışmaktadır. Bu algoritmalar, her zaman en iyi adaya ulaştıramasa da rastgele bir seçimle karşılaştırıldığında en iyiye ulaşabilme olasılığını artırmaktadır.

Araştır veya Kullan

Christian ve Griffiths (2017), araştır/kullan ikileminde bilgi toplamak ve eldeki bilgiyi kullanma arasındaki dengeyi tartışmaktadır. Yabancı bir şehirde yemek yiyeceğiz. Daha önce gittiğimiz ve beğendiğimiz bir yere mi gitmeliyiz? Belki daha önce hiç gitmediğimiz bir yere giderek yeni tatlar aramalıyız. Bulunduğumuz şehri birkaç gün sonra terk edeceksek yeni tatlar aramak pek yararlı olmayacaktır. Çünkü iyi bir restoran keşfetsek bile bunun keyfini çıkarma süresi az olacaktır. Ama vaktimiz bolsa yeni şeyler denemek keşfettiğimiz tatların keyfini çıkarma süresi vereceğinden daha iyi bir seçenek gibi görünmektedir.

Christian ve Griffiths (2017) matematikçileri yıllardır meşgul eden bir soru sorar: “Bir kumarhanede iki kumar makinesi var. Birinde 15 oyun oynayıp 9 kere kazandınız ve 6 kere kaybettiniz. Diğerinde ise sadece iki oyun oynadınız ve sadece bir oyun kazandınız. Sonraki oyununuzu hangisinde oynardınız?” Birincisinde başarı oranı %60, diğerinde %50’dir. Hemen bir karar vermeden önce birincisinde 15 oyun oynarken diğerinde sadece iki oyun oynadığımızı dikkate almamız gerekir. Lokanta seçiminde olduğu gibi zaman yine önemli bir parametredir: Kumarhanede ne kadar kalacağız?

Herber Robbins 1952’de yazdığı makalesinde iki kumar makinesi için “Kazan kal, kaybet değiştir” stratejisinin işi şansa bırakmaktan daha iyi bir çözüm olduğunu savunmaktadır: Kazandığın sürece aynı makinede kal, kaybedince diğer makineye geç. Robbins’in bu stratejisini tartışan çok sayıda çalışma vardır. Bu tip araştırmalardan elde edilen sonuçlar hükümet ve şirket politikalarının oluşturulmasına yardımcı olmaktadır. Unilever 1970’lerde John Gittins adlı matematikçiden ilaç denemelerini en iyi şekilde planlamasını ister. Çünkü diğer ilaç şirketleri gibi Unilever de bir yandan yeni ilaçlar bulabilmek için AR-GE yatırımları yapmak isterken (araştır) diğer yandan mevcut ilaçlarından kazanç sağlamayı devam ettirmek istemektedir.

Web sitelerinde en uygun tasarımı bulmak için kullanılan A/B testi de yine bir araştır/kullan problemidir. A/B testlerinde web sitelerinin renk, resim, haber başlığı vb özellikleri değiştirilerek ziyaretçiler rastgele ama eşit bir şekilde farklı versiyonlara yönlendirilir. Sonra “KATKIDA BULUN”, “BAĞIŞ YAP”, “SATIN AL” gibi bağlantılara ne kadar tıklandığı karşılaştırılarak en uygun tasarıma doğru ilerlenir. İnternet reklamcılığında ve e-ticarette çok sık kullanılan bir stratejidir. ABD’deki son seçimlere sosyal ağlardaki yalan haberler damga vurmuş olsa da Obama’nın kazandığı seçimin yıldızı A/B testleridir.

Önbellekleme

Web tarayıcıların önbelleği, daha önce ziyaret edilen html sayfaları, resimler gibi içerikleri saklar ve daha sonraki ziyaretlerde bu içeriği web sunucuna gidip almak zorunda kalmadığı için önbellekteki içerik daha hızlı yüklenir. Önbellekleme, bilişim teknolojilerinde çok sık başvurulan bir yöntemdir. İşlemcilerin, sabit disklerin ve işletim sistemlerinin önbellekleri vardır. Bu nedenle, hafıza mimarisinde ve işlemci çiplerinin milimetrik yerleşiminde önbellekleme önemli parametrelerden biridir. Web sitelerinin hızlı açılması için sadece web tarayıcılarında değil sunucu tarafında da önbelleklemeye başvurulur.

Kısaca önbellekleme, sıklıkla başvurulan içeriğin daha hızlı erişilebilecek bir yerde saklanmasıdır. Önbelleklemeyi gündelik yaşamda da çok sık kullanırız. Sürekli kütüphaneye gitmemek için daha sık başvurulan kitapları kütüphaneden ödünç almak bir tür önbelleklemedir. Önbellek uygulamalarındaki en büyük kısıtlama önbelliğin sınırlı kapasitesidir. Örneğin kütüphaneden en fazla beş kitap ödünç alabiliriz. Yeni bir kitap almak istediğimizde elimizdeki beş kitaptan birinden vazgeçmemiz gerekir. Burada temel sorun, hangi kitabı iade edeceğimizdir. Farklı algoritmalar kullanılabilir. Örneğin, rastgele bir kitabı iade edip yenisini alabiliriz. İade ettiğimiz kitaba tekrar ihtiyacımız olduğunda ise yine elimizdeki beş kitaptan herhangi birini rastgele seçip iade edebiliriz. Bazı durumlarda basitliği nedeniyle tercih edilebilecek bir yöntemdir. İkinci yöntem, FIFO’dur (First-In, First-Out, İlk Giren İlk Çıkar). Buna göre yeni kitabı ödünç alabilmek için ilk aldığımız, yani en uzun süredir elimizde bulunan kitap iade edilmelidir. Fakat bu çözüm her zaman uygun olmayabilir. Belki de FIFO’da en önde yer alan kitabın en uzun süredir elimizde bulunma nedeni ona çok başvurmamızdır. Üçüncü yöntem, son zamanda en az kullanılanı çıkar (Least Recently Used – LRU), çoğu zaman en verimli sonucu sağlamaktadır:

LRU bize bir sonrakine ihtiyaç duyacağımız şeyin en son ihtiyacımız olan olduğunu, bundan sonra ihtiyaç duyacağımızın da muhtemelen en son ikinci kullanılan şey olduğunu söylemektedir. Ve en son ihtiyacımız olacak şey de en uzun zamandır kullanmadığımızdır (s. 140).

Gündelik hayatta LRU’ya sıklıkla başvururuz. Bazen de farkında olmadan. Dağınıklığın altında LRU algoritması yatıyor olabilir. Okumakta olduğu kitapları, kitaplığa geri yerleştirmek yerine masaya veya koltuğa koyanları ve dışarıdan gelince montu askıya asmayıp ortalıkta bırakanları bir de bu açıdan değerlendirebiliriz.

LRU önbellekleme için kullanılan tek algoritma değildir. Elde önbelleğe konulacak içeriğin ne olabileceği hakkında veri olduğunda farklı yöntemler de kullanılabilmektedir. Amazon, bir bölgede popüler olan ürünleri o bölgedeki alt depolarına göndererek çok daha hızlı teslimat yapabilmektedir. Netflix de insanların yaşadıkları yerlerle ilgili filmleri daha çok seyretmeye eğilimli olduğunu fark ettikten sonra filmlerini sunucularında buna göre depolamaya başlamıştır.

Çizelgeleme

Gündelik hayatta çok sık başvurduğumuz bir başka algoritma da önceliklerimizi belirlediğimiz ve buna göre harekete geçtiğimiz çizelgeleme algoritmalarıdır. Vaktimiz sınırlı ve yapmamız gereken işler vardır. Cuma gününde olduğumuzu ve önümüzde dolu dolu bir hafta olduğunu varsayalım. Pazartesi fizik ödevinin teslimi için son gün. Çarşamba matematikten, perşembe geometri ve biyolojiden sınav var. Cuma günü de matematik ödevimiz var. Bu arada doğalgaz almaya gitmemiz gerekiyor, en fazla beş gün yetecek doğalgaz kalmış.

Hayatta bazen işler yığılır ve her işi aynı anda yapamayacağımıza için bunları bir sıraya koymamız gerekir. Sıralamayı yaparken farklı ölçütler devreye girer. Bazen en yakın zamanda bitirilmesi gereken işten bazen de en kısa sürede bitebilecek işten başlarız. Bazı kişisel gelişim kitapları kısa sürede tamamlanabilecek bir işi hemen yapıp listeden çıkarmayı, bazıları önce en zordan başlamayı öğütler.

Matematikçiler ise olaya daha bilimsel yaklaşmaktadır. RAND’da çalışan Selmer Johnson 1954’te yayımlanan bir makalesinde şöyle bir problem ortaya atar: Biri çamaşırınızı yıkayan diğeri kurulayan iki makineniz var. Çamaşırları önce yıkayıp, sonra kurutmanız gerekiyor. Ancak bazı çamaşırlar fazla lekeli olduğu için daha uzun sürede yıkanmakta, ama kurulama zamanı değişmemektedir. Ayrıca çamaşırın fazla olması kurutmayı olumsuz etkilerken yıkamayı etkilememektedir. Çamaşır yıkamanın ve kurulamanın en iyi yolu nedir?

Johnson, en kısa yıkama süresini en başta, en kısa kurutma süresinin de en sonda olacağı bir algoritmanın en iyi çözüm olacağını belirtmektedir. Johnson’un çizelgelemeyi algoritmik olarak ifade etmesi, optimum çizelgeleme hakkında yapılan araştırmaları da artırır. Christian ve Griffiths (2017), Johnson’un çalışmasının iki makinenin çalışma sürelerini en iyileştirmek üzere kurulduğunu gündelik hayatta günlük kararlarımızda ise tek makine gibi davrandığımızı hatırlatmaktadır. Bir diğer deyişle, işlerin belirli yapılma süreleri varsa toplam zamanda bir iyileştirme yapmak söz konusu olmayacaktır. Nasıl bir iyileştirmenin hedeflendiği önemlidir.

İstenen iyileştirme, maksimum gecikmeyi azaltmak olabilir. Bunun için teslim tarihi en erken olan işten başlama stratejisi uygulanabilir. Hizmet sektöründeyseniz, müşterinin teslim tarihi, karşınıza geldiği andan itibaren başlayacağı için geliş sırasına göre bir çizelgeleme yapılması gerekecektir. Her hafta pazara gidip taze meyve alıyorsanız meyvelerin bozulma zamanı, teslim tarihleri olacaktır. En erken bozulacak meyveden başlanabilir. Christian ve Griffiths (2017) bunun en lezzetli ve sağlıklı seçenek olmasa da yiyeceklerin bozulma sürelerini en az indireceğini yazmaktadır.

Teslim tarihinin önemli olduğu işleri bitirmek içinse işlem sırası en kısa olan işi bitirmek daha uygun sonuç verecektir. Örneğin, pazartesi günü başlamanız gereken A (dört gün sürecek) ve B (bir gün sürecek) işleri varsa, B’den başlamak daha uygun bir çözüm olacaktır. Böylece B bir gün (iş teslimi pazartesi öğleden sonra), A da beş gün (iş teslimi cuma öğleden sonra) bekleyeceğinden müşterilerin toplam bekleme süresi altı gün olacaktır. A’dan başlanırsa bu iş perşembe günü biteceğinden A’nın bekleme süresi dört gün, B’ninki ise beş gün olacaktır. Her iki durumda da işler toplam beş günde tamamlanacaktır. Fakat toplam bekleme zamanı dikkate alındığında birinci ve ikinci seçenek arasında üç günlük bir fark vardır.

Önce en kısa olan işleri yapmak işler arasında bir öncelik sıralaması yoksa işe yarayacaktır. B işine başlamak için A’yı tamamlamak gerekiyorsa problem değişecektir ve yeni bir algoritmaya ihtiyaç vardır. Christian ve Griffiths’in (2017) sorunun bununla sınırlı olmadığını ekler. Hayat durağan değildir; A ve B için bir planlama yapıp işe koyulmuşken C işi gelmişse nasıl karar vermemiz gerekir? Hangi durumda yaptığımız işi yarım bırakıp C’ye başlamalıyız yoksa yeni işi göz ardı mı etmeliyiz? Farklı bir algoritma tasarlamak ve uygulamak gerekecektir; bu durumda benzer sorunlarla karşılaştığında “kullanıcıyı yavaşlatmadan ya da gerginlik içine sokmadan mümkün olduğu kadar uzun bir süre göreve devam eden” işletim sistemlerinin çalışma ilkelerinden yararlanılabilir.

***

Christian ve Griffiths’in (2017) kitabında yer alan diğer algoritmalar incelendiğinde zaten insan denen bilgisayarın sezgisel olarak sık sık bunlara başvurduğu; ama elektronik bilgisayarların çalışma ilkelerinden de yeni şeyler öğrenilebileceği ya da günlük kararlarını bu algoritmaları kullanarak iyileştirilebileceği görülmektedir. Christian ve Griffiths’in (2017) algoritma örnekleri, kişisel gelişim kitaplarından çok daha yararlı olabilir!

Algoritmaların doğası ve çalışma mantığı kavrandıktan sonra her bir algoritma karşılaşılan soruna göre olduğu gibi uygulanabilir veya yeni koşullara göre geliştirilebilir. Ancak son yıllarda, hükümetler ve şirketlerin hem gündelik hayata gömülü algoritmalara müdahale edebilme hem de yukarıdan yeni algoritmalar dayatabilme gücüne erişmeye başladığına da dikkat etmek gerekiyor. Algoritmalara dayalı düzenlemeler, kişisel sağlıktan sosyal politikalara kadar her alanda, hızla ve fazla dikkat çekmeden yayılıyor. Sonraki yazılarda özellikle algoritmaya dayalı düzenlemeler üzerinde duracağım.

Kaynaklar:

Barbin, E., Borowczyk, J., Chabert, J. L., Guillemot, M., Michel-Pajus, A., Djebbar, A., &

Christian, B., Griffiths, T. (2017). Hayatımızdaki Algoritmalar, Çev. Ali Atav, Buzdağı Yayınevi.

Erwig, M. (2017). Once Upon an Algorithm: How Stories Explain Computing. MIT Press.

Martzloff, J. C. (2012). A history of algorithms: from the pebble to the microchip. Springer Science & Business Media.

Rainie, L., Anderson, J., & Page, D. (2017). Code-dependent: Pros and cons of the algorithm age. Pew Research Center, 8.

16 Ağustos 2018

Posted In: algoritma, algoritmik toplum, araştır ve kullan, Bilgisayar Bilimi, çizelgeleme, duraklama, kodlama, önbellekleme, Özgür yazılım, Teknoloji Tarihi, Yazılım Çalışmaları, Yazılım Mühendisliği

Cam Fanusta Yazılım Olmaz

2000 yılında bir arkadaşım, kasabalarındaki kömürcünün bir yazılım yaptırmak istediğini söylemişti. Kömürcü, komşusu bakkalı kıskanmıştı. Bakkal, borcuna itiraz eden bir müşteri olduğunda “Ben söylemiyorum, bak bilgisayara” diyerek bilgisayarında çalışan yazılımı gösteriyor, bilgisayarın hikmetinden sual olunamayacağından müşteri uysalca borcunu ödüyordu. Kömürcü de daha sorunsuz müşteri ilişkileri yönetimi için komşusu gibi veresiye defterini atmak ve yerine bilgisayar koymak istiyordu.

Bakkalın müşterileri, yazılımı geliştirenin ve onu kullananın insan olduğunu unutarak bilgisayarın hiçbir zaman yanılmayacağını ve hile yapmayacağını düşünüyorlardı. Kömürcü ise yaptıracağı yazılımla bakkalla müşterileri arasındaki ilişkiyi kendi işine taşıyabileceğini hesaplıyordu. Hikayenin sonrasını bilmiyorum. Ama 2000’li yıllarda benzer beklentiler içinde CRM (Customer Relationship Management – Müşteri İlişkileri Yönetimi) veya ERP (Enterprise Resource Planning – Kurumsal Kaynak Planlaması) yazılımlarını satın alan birçok kuruluş hayal kırıklığına uğradı. Bu hayal kırıklıkları çoğunlukla teknolojinin nötr bir araç olarak değerlendirilmesinden kaynaklanıyordu. Başka bir kuruluşta kullanılan ve başarılı olan bir yazılımın kendi kuruluşlarında da harikalar yaratmasını bekliyorlardı. Bazı yerlerde başarılı olan bir yazılım neden diğerlerinde başarılı olamıyordu?

Law’ın (2006) teknoloji transferi hakkında yazdıkları geçmişte yaşanan başarısızlıklara dair önemli ipuçları vermektedir. Law (2006) teknoloji transferi diye bir şey olmadığını savunmaktadır. Teknoloji bir yerde ortaya çıktıktan sonra diğer yerlere yayılmaz. Teknoloji elden ele geçer ve her el değiştirmede değişir. Law’ın (2006) Madeleine Akrich’ten aktardığı hikayede İsveç’teki bir makinenin Nikaragua’da nasıl dönüşüp geliştiği anlatılmaktadır.

İsveç’te kullanılan makine ağaç atıklarını (ağaç kabuğu, ağaç parçaları, talaş vb) sıkıştırıp kömüre dönüştürmekte ve bu kömürü endüstride kullanmaktadır. İsveç hem ağaç atıkları yönünden zengindir hem de endüstride kömüre gereksinim vardır. İsveçliler, yakıt sıkıntısı çeken Nikaragua ile yakın ilişki içindedir. Acaba aynı makine, Nikaragua’nın tropikal ormanlarından elde edilen atıklarla kullanılabilecek midir? Makine İsveç’ten Nikaragua’ya götürülür. Ama makinenin Nikaragua’ya getirilmesinden sonra çeşitli sorunlar ortaya çıkar ve Nikaragualılar karşılaştıkları sorunları çözerken İsveç’ten getirdikleri teknolojiyi yeniden şekillendirirler.

İlk sorun, Nikaragualılar’ın yaşadığı toprakların tropikal ormanlardan uzakta ve bu ormanların da kontraların elinde olmasıdır. Ağaç atıkları yerine pirinç ve pamuk artıklarının kullanımı gündeme gelir. Yapılan testlerde pirinç artıklarının kömür yapımı için uygun olmadığı ortaya çıksa da pamuk atıkları hem uygun bir maddedir hem de boldur. Pamuk kullanımının tercih edilmesiyle ikinci bir sorun baş gösterir. Çiftlik sahipleri pamuk artıklarını ortadan kaldırmak zorundadır. Çünkü yasa gereği zararlı böceklere karşı atıkların gömülmesi ya da yakılması gerekmektedir. Bu nedenle pamuk anızının önceden ayrıştırılması gerekecektir. Üçüncüsü, bu iş için yeterli tarım işçisi yoktur. İşgücü açığı Sudan’dan getirilen bir makineyle aşılmaya çalışılır. Makine gayet güzel çalışmasına karşın makineden çıkan döküntüleri toplamak için yine işgücüne ihtiyaç vardır. Dördüncüsü, pamuk bitkilerinin yarısının toprak altında olmasıdır. Köklerin sıkıştırılması daha önce İsveç’te denenmemiştir. Nikaragua’da denenir ve toprak altındaki atıkların toplanması için Sudan’dan yeni bir makine getirilir. Beşincisi, İsveç’te hızarlar sürekli çalışmakta ve kömür yapımı için yıl boyunca hammadde akışı olmaktadır. Pamuk ise yılın 90 günü toplanmakta, geriye kalan zamanda yeni pamuk yetişmektedir. Bu nedenle kömür makinesinin, hammaddenin toplandığı ve stoklandığı yere yakın olması gerekmektedir. Altıncısı, iki yıl sonunda amphiserus cornutu adlı zararlı böceğin neden olduğu beklenmedik sorundur: depolanan atık rendelendiğinde toza dönüşmektedir ve tozdan kömür yapmak olanaksızdır. Atıkların kısmi sıkıştırılması amphiserus cornutunun yaşayabilmesine olanak vermiştir. Makinenin daha farklı çalışması gerekecektir. Yedincisi, daha ciddi bir sorundur. Üretilen kömürü kim satın alacaktır? Endüstride kullanılan kazanlar bu kömürü tercih etmemektedir. Ama kömürün evlerde ve özellikle fırınlarda kullanılabileceği ortaya çıkar. Sonuçta, atıklardan kömür elde edilir ve satılır. İsveç’teki teknoloji ve içerdiği toplumsal ilişkilerle Nikaragua’daki arasında büyük farklar vardır. Ama Nikaragua tam da bu nedenle, karşılaştığı sorunların üstesinden gelip teknolojiyi yeniden şekillendirebildiği için başarılı olmuştur (age).

Law (2006) bu örneği ATT (Actor-Network Theory, Aktör-Ağ Teorisi) bağlamında tartışmaktadır. AAT, 1980’lerde John Law, Bruno Latour ve Michel Callon tarafından geliştirilmiştir. AAT öncesinde de insan ve teknoloji ilişkisini tartışan, sosyal ve teknik boyutlar arasındaki karşılıklı etkileşime odaklanan çalışmalar vardır. Cresswell, Worth ve Sheikh’nin (2010) belirttiği gibi AAT bu çalışmaların devamı olmakla beraber insan olmayan varlıkları (teknoloji, kavramlar, düşünceler, hayvanlar vb.) çözümlemeye dahil etmesi nedeniyle söz konusu çalışmalardan farklılaşmaktadır. AAT’de canlı ya da cansız olmasına bakılmaksızın bir eylemin kaynağı aktör olarak adlandırılır. Fakat aktörler yalnız değildir. Ağ içinde varlık kazanırlar. Daha da önemlisi Dankert’in (2016) işaret ettiği gibi AAT’de dar anlamıyla aktörden değil, eylemciden (actant) söz edilmektedir. Eylemci, bir eylemi yerine getiren ya da eyleme maruz kalandır. Böylece ağdaki diğer eylemcileri etkiler ve değiştirir. Örneğin, ağdaki bir eylemci olan insan binaları inşa ederek ağa etkide bulunur. Ama ağın bir parçası haline gelen binalar da onun yaşamını şekillendirir. İnsan ve insan olmayan arasında ayrım yapılmaması, ikisi arasında bir fark olmadığı anlamına gelmemelidir. Sadece insan olmayan varlıkların da ağdaki ilişkileri etkileyebildiğini vurgulamaktadır.

Dankert (2016), adında her ne kadar teori kelimesi geçse de AAT’nin aynı zamanda bir araştırma yöntemi olduğunu belirtmektedir. AAT’de, bir ağın nasıl ortaya çıktığı, hangi bağlantıları içerdiği, aktörlerin ağa nasıl dahil olduğu, ağdaki kararlı bağlantılar ve kararsızlıklar araştırılmaktadır. Her şeyin toplumsal olarak oluşturulduğu (sosyal konstrüktivizm) ya da her şeyin önceden var olduğu (realizm) tezlerinin aksine AAT çalışmaya herhangi bir ön kabulle başlanmaması gerektiğini savunmaktadır. Araştırma sorusu belirlendiğinde ilk yapılması gereken şey bir başlangıç noktasının belirlenmesidir. Teoriler ve varsayımlar bir kenara bırakılır. Başlangıç noktası, tema, araştırmanın hedefi ve merkezi soru olabilir. Örneğin, belirli bir politikanın gerçekleştirimi araştırılıyorsa, bunun için hazırlanmış politika belgesi iyi bir başlangıç noktası olabilir. Buradan başlayarak araştırmacı ilgili eylemciyi ve ilişkili olduğu diğer eylemcileri incelemeye başlar. Araştırmada ağa dahil olan eylemcileri ve kurulan yeni bağlantıları fark edebilmek önemlidir. Bunun için de görüşmeler yapmak, elde edilen belgeleri çözümlemek, doğrudan gözlem yapmak vs gerekmektedir.

Bu bağlamda, Law’ın (2006) aktardığı hikayede, İsveç’ten getirilen makinenin Nikaragua’da zamanla nasıl bir ağ oluşturduğu, ağa katılan yeni aktörler, aktörlerin karşılıklı etkileri ve teknolojinin değişimi oldukça öğreticidir:

  • Hikayenin sonunda oluşan ağ bir yapıya benzemektedir. Ama araştırmacı, düğümleri ve bağlantıları varsaymamış bu ağdaki düğümleri ve bağlantıları araştırma sonucunda adım adım oluşturmuştur.
  • Ağ heterojendir. Ağda canlı ve cansız eylemciler vardır: İsveç’te üretilen makine, Nikaragua Hükumeti, ağaç atıkları, pamuk, zararlı böcekler, kontralar, Nikaragua Endüstrisi vs.
  • Ağdaki aktörler, insan olup olmamalarından bağımsız olarak birbirlerini etkilemektedir: Hammadde olarak pamuğun kullanılması, zararlı böcekler, Sudan’dan getirilen makine vb.
  • Ağlar, şeylerin yapısından ve doğasından çıkan ilişkiler ve yapılar değil, süreçler ve oluşumlardır.
  • Teknolojide bir dönüşüm yaşanmıştır. Nikaragua’da oluşan teknoloji hem İsveç’tekine benzerdir hem de ondan farklı özellikler taşımaktadır.

Ancak AAT’nin insan olmayan aktörleri ağa dahil etmesine yönelik eleştiriler de vardır. Ayrıca AAT’yi bir araştırma yöntemi olarak seçerken AAT’nin hızlı sonuca ulaşabilen ve dolayısıyla ucuz bir yöntem olmadığına da dikkat etmek gerekir. Çok fazla görüşme ve araştırma yapmak gerekebilir. Bunun sonucunda elde çok fazla veri birikecektir ve bu verinin hangi kısımlarının araştırma için değerli olduğuna karar vermek zor olabilir. Ayrıca araştırmanın hedefi açık değilse, ortaya sonuç bölümü olmayan ve bir açıklama sunamayan sadece güzel bir hikaye çıkacaktır (Dankert, 2016).

Bu eleştirilere karşın AAT, özellikle az incelenmiş alanlarda geleneksel yöntemlerle açıklanamayan konuları daha anlaşılabilir kılabilmekte ve beklenmedik sonuçlar ortaya koyabilmektedir. Geçen yazıda tanıttığım “Kod/Mekan”lar (Kitchin ve Dodge, 2011), Cresswell vd.’nin (2010) bilişim sistemlerinin sağlık hizmetlerindeki gerçekleştirimini ele aldıkları çalışmaları ya da Fransa’da CCTV’lerin gelişimi üzerine yapılan incelemeler (Douillet ve Dumoulin, 2016), yazılım ve bilişim teknolojileri hakkında yapılan çalışmalarda AAT’nin oldukça verimli bir analitik çerçeve sunduğunu göstermektedir. Geçmişte satın alınan yazılımların başarılarının ve başarısızlıklarının AAT ile analiz edilmesi ilginç ve öğretici olabilir.

Yukarıda belirttiğim gibi araştırmalarda AAT ‘yi kullanmak zaman alıcıdır ve ayrıntılı bir çalışmayı gerektirir. Veri olmadan hayali aktörler ve bağlantılar kurgulamak afaki olacaktır. Ama yine de, teknoloji meraklıları olarak gündelik hayatta karşılaştığımız teknolojileri toplumsal hayatı biçimlendiren nötr araçlar olarak görmek yerine belirli toplumsal ilişkiler içinde var olan, bu ilişkileri etkileyen ve onlardan etkilenen olumsal bir süreç olarak görmeyi deneyebiliriz. Bunun yaparken, teknoloji “guru”larının icat ettiği gösterişli terimlere karşı özellikle dikkatli olmak gerekiyor. Örneğin web 2.0, bulut bilişim ve algoritmik düzenleme…

Bilgisayar biliminde algoritma, “sonlu, gerekirci (deterministic), verimli ve bilgisayar programı olarak gerçekleştirmeye uygun problem çözme metodu”dur (Sedgewick ve Wayne, 2014:4). Adım adım tasarlanan bir algoritma, farklı programlama dilleriyle ama aynı çıktıyı elde etmek üzere kodlanabilir. Algoritmik düzenleme ise kısaca, akıllı cihazlar ve bilgisayarlardan elde edilen verilerle toplumsal hayatın daha verimli bir biçimde düzenlendiği yönetim biçimi olarak tanımlanmaktadır. Bu terimi ortaya atan, bilişim dünyasında etkili bir yayıncı olan Tim O’Reilly’dir. Kendisi aynı zamanda Web 2.0 terimini de popülerleştiren kişidir. Bürokrasinin hantallığından, adam kayırmacılıktan, kalitesiz hizmetlerden ve çağ dışı uygulamalardan bıktıysanız yukarıdaki tanımdan yola çıkarak “ne güzel bir öneri!” diye düşünebilirsiniz. Hemen iyimserliğe kapılmamanızı öneririm. O’Reilly’nin (2013) Açık Veri ve Algoritmik Düzenleme (Open data and algorithmic regulation) başlıklı yazısına düzenlemenin günümüz siyasetinde korkulan bir şey olduğuna işaret ederek başlar ve yazının devamında okuyucuyu algoritmik düzenlemenin verimliliği konusunda ikna etmek için çeşitli örnekler verir.

O’Reilly (2013) düzenlemenin hayatın birçok alanında bulunduğunu, iyi ve kötü örnekleri olduğunu belirtir. Düzenlemeye genel bir perspektiften bakmayı önerir. Örneğin arabamızın elektronik bileşenleri, motordaki hava yakıt karışımını en optimum düzeyde dengelemekte ve emisyonu en aza indirmek için bir düzenleme yapmaktadır. Bir uçağın otomatik pilotu çeşitli parametreler yardımıyla yaptığı düzenlemeyle uçağı idare etmektedir. Doktorlar hastaya verdiği ilacın dozunu düzenlemek zorundadır. İnternet servis sağlayıcılar ve e-posta sunucusu işleten kuruluşlar düzgün çalışabilmek için istenmeyen e-postalara ve zararlı yazılımlara karşı düzenleme yapmalıdırlar. Arama motorları reklamla kullanıcının istediği içeriği gösterebilmek arasındaki dengeyi sağlamak için çeşitli düzenlemelere başvurmaktadır.

O’Reilly’ye (2013) göre bunlar yararlı düzenlemelerdir ve dört ortak noktaları vardır:

  1. İstenen sonucun ne olduğuna dair derin anlayış
  2. İstenen sonucun elde edilip edilemediğinin gerçek zamanlı ölçümü
  3. Yeni veriye göre ayarlamalar yapacak algoritma (kurallar kümesi)
  4. Algoritmanın doğru ve beklendiği gibi çalışıp çalışmadığına dair daha derin analizler

O’Reilly (2013) bu tip düzenlemelerin kabul edilebilir olmasının arkasında üç neden olduğunu belirtir:

  1. Arzulanan çıktılar açıktır.
  2. Kamuya açık veriler kullanılarak istenen sonuca ulaşılıp ulaşılamadığı ölçülmektedir.
  3. İstenen hedefe ulaşılamadığında ayarlamalar yapılmaktadır.

Günümüzdeki düzenleyiciler ise sonuç odaklı çalışmamakta, sonuçtan çok kurallarla ilgilenmektedir. O’Reilly’nin (2013) yasalardan beklentisi, yasaların hedefleri, hakları, çıktıları, yetkileri ve sınırları tanımlamasıdır. Hükümetlerin her tür düzenlemesine karşı olan ve piyasanın kendi başına işleri yoluna koyacağını savunanları eleştirmektedir. Çünkü ona göre hükümet de Google, Microsoft, Apple ve Amazon gibi toplumun iyiliği için çalışan bir platformdur ve diğerleri gibi düzenlenmesi gerekmektedir. Örneğin Google gereksinimler doğrultusunda platformunu düzenleyen algoritmaları hızla değiştirebilirken hükümetler değişen koşullara uyum konusunda hantal kalmaktadır. Hükümetlerden istenen çıktılar bellidir: güvenlik, sağlık, adalet, fırsat eşitliği. Bu çıktılar yasalarda kodlanmalı ve değişen koşullara göre sürekli gelişebilen düzenleyici mekanizmalar yaratılmalıdır.

O’Reilly (2013), teknolojinin son zamanlarda düzenlemeyi azaltarak, gözetimi ve verimli sonuç elde etme olanağını artırdığını iddia etmektedir. İş dünyası bu değişimi göz önünde bulundurarak inovatif çözümler geliştirebilmektedir. O’Reilly (2013) uygulamadaki ulaşım hizmetleri ile 2009’da San Francisco’da kurulan çokuluslu ulaşım ağı şirketi Uber’in (ayrıntılı bilgi için bkz. http://www.pcworld.com.tr/rehber/uber-nedir-nasil-kullanilir/) sunduğu hizmetleri karşılaştırmaktadır. Kalite, yolcu güvenliği ve ihtiyaç duyulan yerlere yeterli sayıda aracın sevk edilebilmesi için kamusal düzenlemeler gerekir. O’Reilly (2013) şu anki düzenlemelerin Uber deneyimi ile karşılaştırıldığında kalite yönünden daha zayıf ve yetersiz olduğunu savunmaktadır. Kullanıcılar uber.com sitesinden veya akıllı telefonlarındaki bir uygulamayla taksi taleplerini iletirler, konumuna göre Uber ağındaki bir sürücü talebi alır, gitmek istenilen yere göre rotayı hesaplar ve ücret belirlenir, hedefe varıldığı zaman da daha önce belirlenen ödeme tercihine göre uygulama ücretini çeker. Uber kullanıcıları daha sonra aldığı hizmeti puanlar. Bunun sonucunda kötü ve kalitesiz hizmete sunan sürücüler sistemden elenir, iyiler kazanır. O’Reilly (2013), hükümetlere Uber gibi girişimleri örnek almalarını tavsiye eder.

O’Reilly (2013) klasik düzenleme yerine veri toplama, bunları ölçme ve ölçüm sonucuna göre hareket etme arzusundadır. Bilişim dünyasındaki algoritmik pratikleri gündelik hayata taşımak ister. Örneğin, bir web sitesi sahibi, sitenin kullanım istatistiklerine göre nasıl bazı hizmetlerini iyileştiriyor, bazılarını fazla kullanılmadığı için sitesinden kaldırıyorsa benzer yaklaşımı kamu web siteleri için de önerir. Ziyaretçi sayısı az olan bir web sitesi için harcanacak parayı sorgular.

Ev yaşamı, iş ve siyaset dijitalleştikçe, toplanan veri artıkça gerçek zamanlı ölçüm ve düzenleyici algoritmalar için yeni olanaklar doğmaktadır. O’Reilly (2013) bunun bayraktarlığını yaparken Silikon Vadisi de dünyayı bu geleceğe sürüklemektedir. Teknolojinin siyasetin yerini alacağı (http://motherboard.vice.com/read/technology-will-replace-the-need-for-big-government), n. devrimin içinde olduğumuz, Silikon Vadisi’nin yoksulluğa çözüm bulacağı gibi tezler (http://www.theguardian.com/commentisfree/2015/mar/01/silicon-valley-promises-digital-socialism-but-is-selling-a-fairy-tale) bu yanılsamanın ürünüdür.

Algoritmik düzenlemenin yakıtı veri, daha çok veridir. O’Reilly (2013) mahremiyet kavramının değiştiğini, insanların aldıkları hizmetler karşılığından mahremiyetlerinden vazgeçebildiklerini iddia etmektedir. Mahremiyet ve gözetim tartışmasına girmeyeceğim. Çünkü teknolojinin politikanın yerini alabileceği önerisinin daha tehlikeli ve mahremiyet ihlalini de körükleyen bir durum olduğunu düşünüyorum.

O’Reilly’nin kimin sözcüsü olduğu aslında yazısının ilk cümlesinden (“düzenlemenin korkutuculuğu”) anlaşılmaktadır. Yeni teknolojilerinin hayatımızı kolaylaştırdığını ve toplanan verinin çözümlenmesinin başta sağlık olmak üzere birçok alanda insanın gelişimi açısından önemli faydalar sağladığını inkar edemeyiz. Ama Morozov’un (2014) belirttiği gibi sorun tam burada başlamaktadır. Çağın hızına erişemeyen kanunlara bağlı kalmak yerine veri toplayan, ölçen ve geri bildirimlerle kendisini değişen duruma göre ayarlayabilen sonuç odaklı bir politika önerilmektedir. Politika, demokrasi ve iktidar kavramları aşırı basitleştirilmektedir. Kredi kartı dolandırıcılığının tespitinde faydalanılan algoritmik hesaplarının benzerinin vergi kaçıranların tespitinde de kullanılabileceği düşünülmektedir. Morozov (2014), bu yaklaşımların en büyük vergi kaçakçılığını yapan süper zenginler karşısında işlevsiz olacağını vurgulamaktadır. Algoritmik düzenlemeyi tasarruf tedbirlerinin uygulanması konusunda kullanmak mümkündür. Fakat algoritmalar mali krizlerin asıl sorumlularına karşı çaresizdir.

Toplumsal sorunları, politikayı göz ardı ederek teknolojik çözümlerle aşabileceğini düşünenlerin (ki bu da bir politik tercihtir) en büyük hatası ne ve nasıl sorularını birbirinden ayırıp ikisi arasındaki diyalektik ilişkiyi yadsımalarıdır. Örneğin, eğitim, sağlık, güvenlik alanlarında ne olması gerektiğine yönelik güzel hedefler konulabilir. Ama bu hedeflere nasıl ulaşılabileceği ne sorusunda hedeflenen şeyi etkiler. Geçmişte bu hedeflerin devlet tarafından mı yoksa piyasanın görünmez eli tarafından mı gerçekleştirilebileceği tartışılırdı. Seçilen yol, hedefin kendisini de biçimlendiriyordu. Şimdi tartışılan hedefe dijital mi yoksa analog yollardan mı ulaşılacağı, dinamik geribildirim mi yoksa statik kurallar mı olacağıdır. Bu yaklaşım, 11 Eylül de fırsat bilinerek ilk kez güvenlik konusunda benimsendi. Terörizmin nedenleri, tarihsel kökenleri ve dış politikayla ilgisi bir kenara bırakıldı terör sorunu enformasyonel bir soruna indirgendi. Herkes gözetlenirse teröristler de bütünün içinden ayıklanabilecekti. Bunun arkasındaki mesaj, terörizmin nedenlerinin ortadan kaldırılamayacağıydı; yapılabilecek tek şey kararsız bir sistemle yaşamayı kabullenmek ve algoritmaların bizim için teröristleri tespit etmesini beklemekti (age).

Nedenler yerine etkilerle ilgilenme eğilimi son yıllarda güvenlikten sağlık alanına doğru genişledi. Şirketler, giyilebilir teknolojiler, büyük veri, akıllı cihazlardaki alıcılar vs ile bizi nasıl daha sağlıklı yapacaklarını anlatmaktadır. İnsanlar kendi sağlıklarının takipçisi olmaya teşvik edilmekteler. Hemen arkasından sigorta şirketlerini kendilerini göstermekte, kendi kendini düzenli takip eden, daha doğrusu düzenli takip sonucu elde edilen verileri daha az risk etkeni içeren müşterilere özel indirim uygulamaktadır. Sağlık bireyselleştirilip sağlıksız olmak kişinin kendisinden kaynaklı bir sorun haline getirilmektedir. Sağlıklı beslenme tartışılırken, hükümetlerin ve gıda şirketlerinin politikaları, sınıfsal farklılar, toplumsal eşitsizlikler vb atlanmaktadır. Microsoft çoğumuz için Window’tur, MS Office’tir. Fakat Microsoft şimdi ev otomasyonu konusunda American Family Insurance adlı sigorta şirketiyle ortak çalışma yapmaktadır.

Ayrıca her şey algoritmik olarak düzenlenebilir mi? Optimizasyon ve verimlilik takıntısı demokrasi için uygulanabilir mi? Facebook’taki siyasi taraflılık tartışmaları algoritmaların hiç de tarafsız olmadığını göstermektedir (https://www.yenihayatgazetesi.com/facebookun-siyasi-taraflilik-tartismalari-buyuyor-12612). Eski bir çalışanın itirafı, Facebook’ta belirli tipteki haberlerin üst sıralara çıkarıldığını ortaya çıkarmıştır. Facebook’un algoritmalarının ön belirlemelerinden sonra bir editöryal grubunun öne çıkacak haberlere karar verdiği söylenmektedir. Tüfekçi (2016) algoritmaların fizikteki matematiksel formüllerle karşılaştırıldığını ancak veriye ve matematiksel hesaplara dayanmalarının tarafsız ve nesnel oldukları anlamına gelmediğini vurgulamaktadır.

Morozov’un (2014) da belirttiği gibi tüm bu gelişmeler karşısında teknofobi bir çözüm değildir. Teknolojinin şu anki yönelimi oyunun kurallarını tamamen şirketlerin ve hükümetlerin koyduğu bir yere doğrudur. Küçülen değil, daha da güçlenen ve hayatın her alanını metalaştırmaya kararlı hükümet örnekleri vardır. O’Reilly gibiler gözetim ile fayda arasında bir tercihi zorunlu olarak sunmaktadır. Ama söz konusu durum, şirketlerin ve hükümetlerin yarattığı bir ikilemdir. Buna karşı, internete eşit ve özgür erişim hakkını, takibi zorlaştırıcı teknolojileri, insanın gelişiminin önünü açan ve yeni yaratıcı kullanım alanları yaratmaya uygun bir altyapıyı savunmamız gerekir. Tabi bunu yaparken de yeni teknolojilerin içine gömülen neo-liberalizme karşı da uyanık olmak gerekiyor.

Kaynaklar

Cresswell, K. M., Worth, A., Sheikh, A. (2010). Actor-Network Theory and its role in understanding the implementation of information technology developments in healthcare. BMC medical informatics and decision making, 10(1), 1.

Dankert, R. (2016). Using Actor-Network Theory (ANT) doing research, http://ritskedankert.nl/using-actor-network-theory-ant-doing-research/, son erişim 15/05/2016.

Douillet, A. C., Dumoulin, L. (2016). Actor Network Theory and CCTV Development. Actor-Network Theory and Crime Studies: Explorations in Science and Technology, 21.

Kitchin, R., Dodge, M. (2011). Code/space: Software and everyday life. Mit Press.

Law, J. (2006). Traduction/trahison: Notes on ANT. Convergencia Revista de Ciencias Sociales, (42).

Morozov, E. (2014), The rise of data and the death of politics, https://www.theguardian.com/technology/2014/jul/20/rise-of-data-death-of-politics-evgeny-morozov-algorithmic-regulation, son erişim 19/05/2016

O’Reilly, T. (2013). Open data and algorithmic regulation. Beyond transparency: Open data and the future of civic innovation, 289-300.

Sedgewick, R., Wayne, K. (2014). Algorithms Part 1. Addison-Wesley Publishing Company.

Tüfekçi, Z. (2016),The Real Bias Built In at Facebook, http://www.nytimes.com/2016/05/19/opinion/the-real-bias-built-in-at-facebook.html, son erişim 20/05/2016

 

 

 

27 Eylül 2016

Posted In: Aktör-Ağ Teorisi, algoritmik düzenleme, Bilgisayar Bilimi, e-devlet, Özgür yazılım, Silikon Vadisi, yazılım

Okullarda Kodlama Dersi – 2

Geçen yazıda çocuklara yönelik kodlama eğitimini tartışmış ve Bilim, Sanayi ve Teknoloji Bakanlığı’nın kodlama dersinin ortaokul ve lise müfredatına alınması için yapacağı çalışmaları desteklediğimi belirtmiştim. Desteğimi de üç maddeyle açıklamıştım: Berimsel (computational) okuryazarlığın (literacy) yaygınlaşıyor olması, günümüzde toplumsal düzenlemelerin giderek artan biçimde kodla yapılması (“Kod kanundur”) ve programcılığın eğlenceli olması. Bu yazıda da aynı konuya devam etmek istiyorum. Ama önce kodlama ile programlama arasındaki farka açıklık getirmek gerekiyor. Kodlama, analiz, tasarım, test gibi yazılım geliştirmenin aşamalarından biridir. Programlama ise daha geniş anlamda kullanılmaktadır. Kodlamanın yanında diğer aşamaları da içerebilmektedir. Kodlama eğitimi ile ilgili yazılarda (bu yazıda da) aslında çoğu zaman programlamadan söz edilmektedir. Bakanlığın hedefleri ve planladığı kodlama eğitiminin kapsamı hakkında bilgim yok fakat başta İngiltere olmak üzere birçok ülkedeki müfredat değişikliğinde hedeflenen öğrencilerin belirli bir programlama diline özgü komutları alt alta sıralamayı öğrenmesi değildir. Eğer Türkiye’deki eğitim müfredatı bir ya da birkaç programlama dilinin öğretimi ile sınırlandırılırsa sonuç pek parlak olmayacaktır. Yurt dışındaki örneklerde öğrencilere belirli bir aracın (örneğin programlama dilini) kullanımının öğretilmesi değil, berimsel okuryazarlık (DiSessa, 2001) ya da berimsel düşünme (Wing, 2006) denilen yetinin kazandırılması hedeflenmektedir.

DiSessa (2001), kod eğitimi furyası başlamadan önce Hal Abelson ile beraber Boxer Programlama Ortamı’nı geliştirmiş ve öğrencilerin Boxer ile etkileşimini izlemiştir. DiSessa (2001), berimsel okuryazarlığın yeni bir bilme ve ifade biçimi sağlayacağını düşünmektedir. Wing (2006) ise berimsel düşünmenin basitçe programlama öğrenmenin ötesinde bir anlam taşıdığını ve çoklu soyutlama düzeyinde düşünmeyi gerektirdiğini belirtmektedir. Berimsel düşünme sürecinde problem ve çözümü, makine ya da insan tarafından gerçekleştirilebilecek biçimde ifade edilmektedir. Dolayısıyla herhangi bir teknolojiden bağımsızdır. Wing’e göre (2006) berimsel düşünce,

  • Programlama değil, kavramsallaştırmadır.
  • Modern toplumda edinilmesi gereken bir yetenektir.
  • İnsanların bilgisayar gibi düşünmesi değildir.
  • Matematik ve mühendislik düşüncesini tamamlar ve birleştirir.
  • Aletlerle değil, fikirlerle ilgilidir.
  • Her yerde, herkes içindir.

Ancak şimdiye kadar yazdıklarım berimsel okuryazarlığın yalnızca görünen yüzüdür ve apolitiktir. DiSessa on beş yıl önce yayımlanan kitabında berimsel okuryazarlığı bir eğitimci gözüyle incelemektedir; öngörüleri son derece değerlidir. Kitabında, hem teknoloji uzmanlarını hem de eğitim bilimcileri ikna etmeye çalışmaktadır. Şimdi ise farklı aktörler sahnededir. Örneğin İngiltere’deki müfredat değişikliği yalnızca eğitimcilerin düşünüp taşınarak önerdiği ya da bir bakanın emriyle gerçekleşen bir reform değildir. Müfredat değişikliği, farklı aktörlerin çabasıyla gelişen olumsal bir süreçtir. Çocuklara bilgisayar programlamanın öğretilmesi ilk kez 2010’da eğitimcilerden, bilgisayar bilimcilerinden ve bilgisayarla ilgi kitle örgütlerinden oluşan dar bir toplulukta tartışılmaya başlamıştır. Daha sonra farklı kesimlerin (sivil toplum örgütleri, özel sektör ve kamu kuruluşları) katılımıyla küçük kampanyalardan köklü eğitim reformuna doğru bir süreç gelişmiştir. Bu sürecin gelişiminde özellikle iki örgüt, Nesta (National Endowment for Science, Technology and the Arts) ve Nominet Trust hükümet, sivil toplum ve özel sektör arasında bir ağ oluşturarak ve farklı kesimlerin kodlama eğitimi hakkındaki farklı görüşlerini uzlaştırarak belirleyici bir rol üstlenmiştir.

NESTA 1998 yılında İşçi Partisi Hükümeti tarafından bir vakıf olarak kurulmuştur. NESTA’nın temel amacı İngiltere’nin inovasyon kapasitesini artırmaktır. 2010 yılında hükümet, NESTA’nın yararlı işler yapıyor olmasına karşın kamu kuruluşu olarak faaliyet göstermesine gerek olmadığını ve etkinliklerinin gönüllü bir kuruluşa daha uygun olduğunu belirten bir değerlendirme yapar. Bunun sonucunda 2012 yılında NESTA bağımsız bir kuruluş olur ve adı Nesta olarak değiştirilir. Nesta çeşitli yardım kuruluşlarıyla, özel sektörle ve hükümetle ortak çalışmalar yapmaktadır. Nesta’nın farklı çalışma alanları vardır: kamu hizmetlerine vatandaş katılımı, hükümet inovasyonu, sağlık ve yaşlanma, dijital sanat ve medya, dijital eğitim, sosyal etki fonları vb. Nominet Trust ise İngiltere’de .uk uzantılı alan adlarının kaydını yapan Nominet şirketi tarafından 2008 yılında kurulmuştur. Nominet Trust da Nesta gibi toplumsal sorunlara yönelik teknolojik çözümler geliştirmeyi hedeflemektedir. Williamson (2015), bu iki kuruluşun ne resmi ne de ticari aktörler olduğunu, ama iki kesim arasındaki ilişkiyi sağladıklarını belirtmektedir. Kodlamayı öğrenme kampanyalarının oluşumu buna güzel bir örnektir.

Okullarda bilgisayar kullanma eğitiminin yerini bilgisayar bilimine bırakması gerektiği önerisi ilk kez 2010 yılında Computing at School (bilgisayar öğretmenlerine yönelik, Microsoft, Google ve British Computing Society tarafından maddi olarak desteklenen bir dernek) tarafından gündeme getirilmiştir. Konunun politik olarak önem kazanması ise ancak Nesta’nın 2011’de yayımlanan Next Gen (http://www.nesta.org.uk/sites/default/files/next_gen_wv.pdf) adlı raporundan sonra gerçekleşmiştir. Next Gen de okul müfredatının yenilenmesini talep etmektedir. Ama bu talep doğrudan eğitimle ilgili değildir. Rapor, Muhafazakar Parti Hükümeti’nin Kültür, İletişim ve Yaratıcı Endüstriler Bakanı Ed Vaizey’in talebi doğrultusunda Ian Livingstone ve Alex Hope tarafından hazırlanmıştır. Raporun yazarları, İngiltere’nin ekonomik olarak değerli ve yenilikçi sektörleri olan video oyunu ve görsel efekt endüstrilerinin önemli isimlerindendir. Raporda ilgili sektörlerdeki yetenek açığı tartışılmakta ve bunu kapatmak için bir müfredat değişikliği önerilmektedir. Google’ın CEO’su Eric Schmidt 2011 yılında Edinburgh Televizyon Festivali’nde yaptığı konuşmada konuyu tekrar gündeme getirene dek raporun fazla bir etkisi olmaz. Raporun yazarlarından Livingstone’un da belirttiği gibi Schmidt’in konuşması rapordaki müfredat değişikliğine siyasi desteği artırmıştır. Bundan kısa bir zaman sonra Royal Society yönetiminde ve Microsoft, Google ve üniversitelerin bilgisayar bilimi bölümlerinin katkılarıyla hazırlanan Shutdown or Restart (https://royalsociety.org/~/media/education/computing-in-schools/2012-01-12-computing-in-schools.pdf) başlıklı raporda da müfredat değişikliği önerisi tekrarlanır. Bu raporun ardından The Observer gazetesi yazarlarından John Naughton da konuyu destekler yazılar yazmaya başlar. Daha sonra oluşturulan, Nesta, BCS, Google, Microsoft, Computing at School ve Raspberry Pi’den oluşan “Next Gen Skills” adlı koalisyon Eğitim Bakanlığı’nı müfredat değişikliği konusunda ikna etmeyi başarır (age).

Bu gelişmeler (raporlar, konuşmalar ve oluşturulan koalisyonlar) üst düzeyde gerçekleşmektedir. Kodlama eğitiminin kamudaki görünürlüğü ise Code Club (https://www.codeclub.org.uk/) adlı gönüllü girişimle artar. Code Club, programcıların ilkokul öğrencilerine programlamanın temellerini öğrettikleri okul sonrası bir etkinlik olarak ortaya çıkmıştır. 2012 yılında kurulan Code Club, kısa sürede tüm ülkeye yayılır. Şu anda İngiltere’de 4000’den fazla Code Club ve bundan faydalanan 50000’den fazla öğrenci vardır. Code Club, Nesta ve Nominet Trust tarafından örgütlenmekte ve Digital Makers fonundan faydalanmaktadır. Code Club, Microsoft, Google, ARM, Samsung, Mozilla ve TalkTalk gibi şirketlerin yanı sıra hükümet tarafından da desteklenmektedir.

Code Club, Next Gen raporu sonrasında ortaya çıkan, bir orkestra gibi hareket eden ve gençleri kodlama öğrenmeye teşvik eden ağlardan sadece biridir. 2013 yılının Mayıs ayında Nesta kamu inovasyonu laboratuvarında, Nominet Trust ve Mozilla ortaklığında Make Things Do Stuff adlı kampanya başlatılır. Kampanyanın hedefi çocukların dijital teknolojileri yaparak, etkileşimle öğrenmelerini sağlamaktır. Yine ülke çapında bir örgütlenme söz konusudur. Kampanya büyük şirketler (Facebook, Microsoft, O2, Mozilla ve Virgin Media), gönüllü girişimler (Codecademy, Code Club, Raspberry Pi, Technology Will Save Us, Coding for Kids and Decoded vb) ve hükümet kuruluşları tarafından desteklenmektedir.

Kısacası, reformu baştan sona planlayan bir hükümet değil, ikna edilen bir hükümet vardır. Hükümet okul dışındaki bu uygulamaları yeni müfredatla okullarda daha sistematik hale getirmektedir. Bilgisayar uzmanları, girişimciler, yatırımcılar, gazeteciler, lobi grupları, politikacılar ve uluslararası şirketler Nesta ve Nominet Trust etrafında bir araya gelmiş, bu aktörlerin katkısı ve etkileşimiyle bir eğitim müfredatı oluşmuştur. Fakat karşımızda hiç de tarafsız olmayan bir eğitim müfredatı vardır. Oluşumunda payı olan aktörlerin değerlerini ve çıkarlarını içermektedir.

Kamusal Sorunları Çözmek İçin Kodlamayı Öğrenmek

Yazı,

Bilgiyi, konuşmanın yaptığından farklı biçimde düzenler ve depolar; sonuç olarak, dilin farklı bir biçimidir (Crowley ve Heyer, s. 99).

Yazı sonrası, hatırlama gereksiniminin azalması insan zihninin edinebildiği bilginin de artmasını sağlamış ve yazıyla bilenin bilgiden ayrılması “soyutlamayı, sistemleştirmeyi ve bilimsel düşüncenin nesnelliğini teşvik etmiştir” (age, s. 100).

Berimsel okuryazarlık, bunu daha ileriye taşıma iddiasındadır. Wing (2006) berimsel düşüncenin insanın soyutlama gücünü artırmasının yanında ona düşüncesini otomatikleştirme olanağını verdiğini iddia etmektedir. Bir kelimeyi sözlükten ararken ya da markette hangi kasada kuyruğa girmek gerektiğini düşünürken farkında olmadan berimsel düşünceye başvurulmaktadır. Berimsel okuryazarlık, bunu daha sistematik hale getirecektir. Olumlu ya da olumsuz olarak nitelendiremem ama berimsel okuryazarlıkla dünya farklı biçimde okunabilecektir.

Kodlama (yazma) program komutlarının alt alta sıralandığı mekanik bir iş değildir. Dünyanın nasıl çalıştığını berimsel olarak okuyup anlamayı ve insanın onunla etkileşimini biçimlendirebilmek için modellemeyi içerir. Dünya hesaplanabilir bir olgu olarak algılanır ve kodla algılanan bu dünya yeniden yaratılır. Programcılar işlerinin doğası gereği var olan ilişkileri ve iş süreçlerini modelleyip sayısallaştırırken bunları yeniden düzenler ve kurarlar; aksayan bir yer varsa ona yönelik çözümler geliştirirler. Bunu da gayet olağan ve işlerinin bir parçası olarak görürler.

Fakat bu pratiklerden beslenen, özellikle Silikon Vadisi’nin öncülüğünü yaptığı (http://www.nytimes.com/2013/03/03/opinion/sunday/the-perils-of-perfection.html) iki büyük tehlike vardır. Birincisi, toplumsal sorunları kültürel, ekonomik ve politik bağlamlarından kopartarak berimsel terimlerle çözümleme eğilimidir. İkincisi de bunun sonucu olarak doğru kod ve algoritmalarla karmaşık toplumsal problemlerin çözülebileceği inancıdır. İngiltere’de bu inanç neoliberal politikalarla eklemlenmekte ve devletin görev ve sorumluluklarını gönüllü kişi ve kuruluşlara devretmenin aracı haline gelmektedir. Örneğin, Nominet Trust ve Nesta toplumsal sorunlara yönelik teknolojik çözümler geliştirme gibi bir hedefleri olduğunu açıkça beyan etmektedir. Hatta Nesta tarafından hazırlanan ve kamu hizmetlerinin geleceğinin tartışıldığı People Helping People adlı raporun giriş bölümünde İngiltere’nin refah devleti deneyimi öncesinde kamu hizmetlerinin gönüllülerce yerine getirildiği ve bunun köklü bir gelenek olduğu yazılmaktadır (http://www.nesta.org.uk/sites/default/files/people_helping_people_the_future_of_public_services_wv.pdf). Nesta’nın kodlama öğrenimine bakışı da bu yöndedir. Programcılar hackathon (https://tr.wikipedia.org/wiki/Hackathon) etkinlikleriyle bir araya getirilmekte ve kamudaki sorunlara dijital çözümler bulmaları istenmektedir (https://nationalhackthegovernment.wordpress.com/). Öğrenciler berimsel yeteneklerle donatılırken de beklenti bu yeteneklerini kamu hizmetlerinin iyileştirilmesi ve toplumsal sorunların çözümü için kullanabilmeleridir. Ne kadar başarılı olabileceğini ve ne gibi sonuçlar doğurabileceğini bilemem, ama kodlama öğrenimi İngiltere’de neoliberal politikalar için bir kaldıraç görevi üstlenmektedir.

Geleceğin Mesleği: Programcılık?

Williamson (2015), kodlama öğrenimi hakkında yazılmış bir çok makale ve raporda, kodlama öğrenecek çocuklar geleceğin iş gücü olarak görüldüğünün altını çizmektedir (bkz. http://www.nesta.org.uk/publications/next-gen, https://royalsociety.org/topics-policy/projects/computing-in-schools/report/, http://www.ednfoundation.org/wp-content/uploads/TechnologyEducation_systemview.pdf, http://www.ukdigitalskills.com/). Bu çalışmalarda kodlama, ileriye yönelik, talep edilen ve nitelikli meslek olarak ele alınmakta ve çocukların piyasanın gereksinimlerine yanıt verebilecek yeteneklerle donatılması istenmektedir. Williamson (2015), bu söylemin dijital dünyadaki kırılganlığı, karmaşıklığı ve birçok kodlama işinin sıradanlığını gizlediğini vurgulamaktadır. Dışarıdan bir motivasyon olmadan programcılıkla uğraşıldığında programlama eğlencelidir; bulmaca çözmek ya da satranç oynamak gibidir. Ama söz konusu profesyonel olarak programcılık olunca iş hayatı rutin ve sıkıcı işlerle, fazla mesailerle doludur. Bunun yanında, öğrencilerin edinmesi istenen yetenekler (teknolojik yeniliklere kısa sürede uyum sağlayabilme ve esneklik gibi) piyasanın çalışanlardan beklentisidir.

Eğitim reformuna ya da kampanyalara destek veren bir çok programcı ve aktivistin geleceğin iş gücünü yetiştirmek gibi bir hedefi yoktur. Çoğu benimkilere benzer gerekçelerle kampanyaları desteklemekte ve gönüllü katkıda bulunmaktadır. Bir diğer deyişle, farklı hedefleri olanların desteklediği bir oluşum vardır. Fakat kimi zaman değerler ve çıkarlar çatışabilmektedir. Code Club’ın kurucularından Linda Sandvik’in başına gelenler buna iyi örnektir. Sandvik, Code Club’ın sponsorlarından Google’ın kitlesel gözetim pratiklerini eleştirdiğinde Code Club yönetim kurulu Sandvik’e ültimatom vermiştir: Ya sponsorlar hakkında olumsuz şeyler söyleme ya da Code Club yönetiminden ayrıl. Sandvik, ikincisini tercih etmiştir (https://gist.github.com/drtortoise/5dc254c614d6b6a19116).

Ayrıca programcılığın bir meslek olarak gelecekte daha önemli olacağı ve çocukların küçük yaştan itibaren bunun için gerekli yetenekleri edineceği iddiası ne kadar gerçekçidir? Programlama dillerinin insan diline yaklaşması ve kolaylaşması programcılığı gereksizleştirmemiş, aksine yaygınlaştırmıştır. Yakın zamanda da programcılığın tamamen ortadan kalkacağını düşünmüyorum. Fakat bilgisayar bilimindeki gelişmeler programcılık bilgisi isteyen bazı işleri otomatikleştirebilir ve sektördeki programcı açığı beklenenden çok daha az olabilir. “Bilgisayarların algılayıcı verisi ya da veritabanları gibi veri türlerine dayalı öğrenimini olanaklı kılan algoritmaların tasarım ve geliştirme süreçlerini konu edinen bir bilim dalı” olan makine öğrenimi (machine learning) ile programcılık da dahil olmak üzere birçok mesleğin otomasyonu söz konusudur. Kodlama eğitimi kampanyaları çoğu zaman bu olasılığı göz ardı etmektedir (Frey ve Osborne, 2013).

Şirketler İçin Yeni İş Alanları

Makine öğrenimindeki gelişmeler ve gelecekte piyasanın ihtiyaç duyacağı iş gücünün niteliği ve niceliği hakkında sponsor şirketlerin elinde çok daha kapsamlı veriler vardır. Geleceğe dair daha ayrıntılı öngörüler yapabilirler. Bu verilerin ve buna dayalı öngörülerinin ne olduğu hakkında bilgi sahibi olmasak da kodlama eğitiminin şirketler için şu an yeni bir pazar yarattığı ortadadır. ABD’deki Hour of Code kampanyasının kurucuları arasında Silikon Vadisi’nin melek yatırımcılarından Partovi twins de vardır ve kampanya üç büyük şirket (Google, Microsoft ve Facebook) tarafından desteklenmektedir. Bu kampanyanın İngiltere’deki kuzeni Year of Code da uluslararası bir girişim sermayesi firması olan Index Ventures tarafından desteklenmektedir. Index Ventures, insan hayatının ve ekonominin her yönünün teknoloji ve girişimci ruhu ile dönüştürülebileceğini savunmaktadır. Daha ilginci Year of Code’un arkasındaki 23 kişi incelendiğinde bunlardan sadece üçünün gerçekte teknolojiyle ilgili, diğerlerinin sermayedar ya da halkla ilişkiler yüzü olmasıdır (https://tommorris.org/posts/8776). Year of Code’un arkasındaki en önemli isimlerden biri kısa bir süre öncesine kadar Index Ventures ekibinde yer alan girişimcilerden biri olan Saul Klein’dır. Ne tesadüftür ki Klein’ın kuzeni Alex, çocuklara kendi bilgisayarlarını yapmalarına ve kodlama öğrenmelerine yardımcı olan takımlar (kit) üreten Kano (http://us.kano.me/) şirketinin kurucularındandır.

John Naughton’a (http://www.theguardian.com/technology/2014/feb/15/year-of-code-needs-reboot-teachers) göre girişim sermayesinin yoğun ilgisinin iki açıklaması olabilir. Birincisi, safça olan, girişimciler Year Of Code’a hayırsever duygularla yaklaşmaktadır. Fakat başarısız halka ilişkiler nedeniyle kampanya fiyaskoyla sonuçlanmıştır. Kampanyanın sözcüsü Lottie Dexter’ın kodlama bilmediğini itiraf etmesi kampanyanın inandırıcılığını sarsmıştır (http://www.theregister.co.uk/2014/02/11/coding_in_schools_madness/). İkincisi, şirketler müfredat değişikliğinin ve Raspberry Pi Vakfı tarafından okullarda bilgisayar bilimini öğretmek amacıyla geliştirilmiş, kredi kartı büyüklüğünde tek kartlı bir bilgisayar olan Raspberry Pi’nin başarısını fark etmişlerdir ve kendilerine yeni ticari fırsatlar yaratmak istemektedirler. Hayırseverlik inandırıcı olmasa da bir beceriksizlik vardır. Ama daha önemlisi müfredat değişikliğinin arkasında büyük bir pazar fırsatı vardır.

***

Giroux’un (1998) Gramsci’den alıntıladığı sözler berimsel okuryazarlık için de geçerlidir:

Gramsci’ye göre okuma-yazma iki yanı da keskin bir kılıçtı; bireysel ve toplumsal güçlenme amacıyla kullanılabileceği gibi, baskı ve egemenlik ilişkilerinin sürdürülmesi için de kullanılabilirdi. Gramsci, bir mücadele alanı olarak eleştirel okuma-yazma için, hem ideolojik bir yapı, hem de toplumsal bir hareket olarak, uğruna savaşım verilmesi gerektiğine inanıyordu (s. 34).

Bu mücadeleye de berimsel okuryazarlığın politik bağlamını dikkate alarak başlamak gerekiyor. Kodlama eğitimiyle liberal politikaları güçlendirmek, sömürüyü artırmak ve geleceğin işçilerini yetiştirmek istenmektedir. Uluslararası tekellerin, girişim sermayesi şirketlerinin ve liberallerin ilgisi boşuna değildir. Ama internetteki geçmiş mücadeleler bunun karşıtının da yaratılabileceğini, sistemde çatlaklar oluşturulabileceğini göstermektedir.

Kaynaklar

Crowley, D., Heyer, P. (2011). İletişim Tarihi, teknoloji-Kültür-toplum, çev. Berkay Ersöz, Siyasal Kitabevi, Ankara.

DiSessa, A. A. (2001). Changing minds: Computers, learning, and literacy. Mit Press.

Fischer, G. (2005). Computational literacy and fluency: being independent of high-tech scribes. Strukturieren-Modellieren-Kommunizieren. Leitbild mathematischer und informatischer Aktivitäten, Franzbecker, Hildesheim, 217-230.

Frey, C. B., Osborne, M. A. (2013). The future of employment: how susceptible are jobs to computerisation. http://www.oxfordmartin.ox.ac.uk/downloads/academic/The_Future_of_Employment.pdf, son erişim 21/03/2016.

Giroux, H. A. (1998). Okuma-yazma ve siyasal güçlenme eğitbilimi. içinde (der.) Paulo Freire ve Donaldo Macedo, Okuryazarlık: Sözcükleri ve Dünyayı Okuma, çev. Serap Ayhan, Ankara, İmge Yayınevi, 33-71.

Williamson, B. (2015). Political computational thinking: policy networks, digital governance and ‘learning to code’. Critical Policy Studies, 1-20.

Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.

24 Mayıs 2016

Posted In: berimsel okuryazarlık, Bilgisayar Bilimi, Emek, google, kodlama, neo-liberalizm, Özgür yazılım

Okullarda Kodlama Dersi – 1

Bilim, Sanayi ve Teknoloji Bakanlığı’nın resmi Twitter hesabından yapılan paylaşımda kodlama dersinin ortaokul ve lise müfredatına alınması için Milli Eğitim Bakanlığı ile birlikte çalışılacağı duyuruldu:

Kodlama Dersi Geliyor

Kodlama Dersi Geliyor

Bilim, Sanayi ve Teknoloji Bakanlığı’nın Twitter sayfası “üreten bir ülke olmak”, “bilişim vadisi kurmak”, “dünyaya yeni teknolojiler sunmak” gibi güzel mesajlarla dolu. Fakat,

…dar anlamda bilim ve teknoloji politikası, kısaca ilk ortaya atıldığı zamanki terimiyle bilim politikası, her türlü bilimsel, teknolojik ve yenilikçi [innovative] faaliyetlerin toplumsal bir amaç ya da amaçlar doğrultusunda yönlendirilmesi ve denetlenmesi için farklı düzeylerde politikalar tasarlanıp uygulanmasıdır. Firma düzeyindeki bir şirket stratejisi [corporate strategy] içinde yenilik çalışmaları ve buna bağlı Ar-Ge hedeflerinin saptanmasından bir ülkenin ve hatta bir ülkeler topluluğunun bilim ve teknoloji politikasının oluşturulup uygulanmasına değin çok geniş bir yelpazede yer alan bu politikalar da, zorunlu olarak diğer politikalarla eklemlenmek durumundadır. Örneğin, eğitim politikası, iktisat politikası, vergi veya gümrük politikası, banka mevzuatı vb, yerine göre, her düzeydeki yenilik faaliyetlerini etkiler ve tüm politikalar belli bir mantık içerisinde birbirleriyle eklemlenmezse, dar anlamda ‘salt’ bir bilim ve teknoloji politikasının başarısı azalır. (Türkcan, 2009, s.205)

Bu bağlamda, kodlama dersinin müfredata eklenmesi ya da bir bilişim vadisi kurulması yönündeki çalışmalar tek başına yeterli olamayacaktır. En başta yıllardır yapboz tahtası haline getirilen eğitim sistemi, bilim ve teknolojideki hedeflerle uyumlu değildir. Biraz hafızamızı tazeleyelim. Yıllar önce de ülkemizdeki bilişim çalışanlarının yetersiz olduğundan yakınılıyordu. Sonra Türkiye’nin dört bir yanına, neredeyse her üniversiteye, yeterli öğretim üyesi ve altyapı olmadan bilgisayar mühendisliği bölümü açıldı. Böylece bir zamanlar “popüler meslekler arasındaki bilgisayar mühendisliği, akademik başarısı düşük öğrencilerin tercih ettiği bölümler”den biri oldu (http://www.aksam.com.tr/yazarlar/ismi-havali-ama-tercih-eden-yok/haber-305135). Bilgisayar mühendisi sayımız arttı ama bu artış bilişim alanında bir atılım yapmamıza değil, yedek iş gücü ordusuyla bilişim çalışanı ücretlerinin düşürülmesine neden oldu. Hukuk ve Tıp’a getirilen taban puanı uygulamasının diğer bölümler için de gerekli olduğunu söyleyen, “MEB’in eğitim fakültelerine, mimar ve mühendis odalarının da mühendislik fakültelerine daha nitelikli öğrenci alınması için yüksek taban puan baskısı yaratmasının, daha iyi öğretmen ve daha iyi mühendis yetiştirilmesi konusunda çok yararlı olacağı vurgusu yapan” YÖK Başkanı Yekta Saraç’ın sözleri bilim ve teknoloji politikamızın bütünlükten yoksun olduğunun bir başka göstergesi. Başta bilgisayar mühendisliği olmak üzere, bu kadar mühendislik bölümünü kim, neden açtı?

Bilim Teknoloji ve Sanayi Bakanlığı diğer ülkelerdeki girişimlerden etkilenmiş gibi görünüyor. Barack Obama örneğinde olduğu gibi hükümetler en üst düzeyde bu konuyla ilgileniyor, yapılan etkinliklere katılıyor (https://www.whitehouse.gov/blog/2014/12/10/president-obama-first-president-write-line-code). Başta İngiltere olmak üzere birçok Avrupa Birliği ülkesi, çocukları bilgisayar programlamayla erken yaşlarda tanıştırmak için yoğun çaba gösteriyor (http://www.euractiv.com/section/digital/infographic/infographic-coding-at-school-how-do-eu-countries-compare/). Avustralya ilkokul müfredatında tarih ve coğrafya dersleri yerini kodlamaya bıraktı (http://www.techtimes.com/articles/86669/20150921/australia-replaces-history-and-geography-with-coding-in-new-primary-school-curriculum.htm). Bu müfredat değişikliklerinde ülkelerin özgün ihtiyaçları belirleyici oluyor. Estonya’nın filizlenen teknoloji endüstrisi daha çok programcıya gereksinim duyduğundan programcılık öğretimine daha çok vurgu yapıyorlar; bazı okullarda programcılık eğitimi altı yaşında başlıyor. Danimarka ise büyük firmalarının çıkarları doğrultusunda kullanıcı arayüzü tasarımının ve dijital teknolojinin topluma etkisinin öğretilmesine ağırlık veriyor. Aarhaus Üniversitesi’nden Michael Caspersen, müfredatın sadece ileride bilgisayar bilimlerini tercih edeceklere değil, tüm öğrencilere faydalı olmasını istediklerini söylüyor (The Economist, 2014). Türkiye’nin nasıl bir eğitime ihtiyacı olduğunun tartışılıp tartışılmadığını bilmiyorum.

Farklı ülkelerdeki uygulamalar önemli dersler de içeriyor. Bir karar almadan önce bu örneklerin Türkiye’nin koşulları da dikkate alınarak incelenmesi gerekiyor. Yoksa yeni bir Fatih Projemiz olabilir. Yukarıdaki örneklerde görüldüğü gibi ülkeler kısa süreli hedeflerle hareket etmiyorlar. 6 yaşındaki çocuğun okuyup çalışma hayatına katılması için önünde uzun yıllar var. Örneğin İngiltere, 2014 yılında kodlamayı ilk ve orta öğretim müfredatına dahil ederken en azından sonraki 10 yıl için ayrıntılı bir plan yapmış durumda. İngiltere’de kodlama öğretimi müfredat değişikliğinin sadece bir parçası; asıl değişim okullardaki bilişim teknolojileri kullanma eğitiminin yerini bilgisayar biliminin alması. Daha 2011 yılında Google’ın Başkanı Eric Schmidt, yazılımı kullanmayı öğreten ama onun nasıl yapıldığı hakkında bilgi vermeyen İngiliz eğitim sistemini eleştirmekteydi (The Economist, 2014). İngiltere Eğitim Bakanı Michael Gove da 2014 yılında yaptığı konuşmada bu eleştiriye hak vermektedir. Bilişim teknolojileri eğitiminin öğrencilere sadece bilgisayar okuryazarlığı verdiğine, derslerde tekrar tekrar kelime işlem programlarının nasıl çalıştığının anlatıldığına ve öğrencilerin kimi zaman modası geçmiş yazılımları öğrenmek zorunda kaldığına vurgu yapan Gove, bunu teleks göndermeyi ya da zepline binmeyi öğretmeye benzetiyordu. Gove, yeni eğitim müfredatıyla öğrencilere kodlamayı, var olan programları çalıştırmak yerine kendi programlarını geliştirmeyi öğreteceklerini söylüyordu (https://www.gov.uk/government/speeches/michael-gove-speaks-about-computing-and-education-technology). İngiltere’nin 2014 yılında uygulanmaya başlanan yeni eğitim müfredatı bu doğrultuda geliştirildi. Müfredat değişikliğiyle öğrencilerin:

  • soyutlama, mantık, algoritmalar ve veri temsili de dahil olmak üzere bilgisayar biliminin temel kavramlarını anlayıp uygulayabilmesi
  • problemleri berimsel (computational – bkz. https://tr.wikipedia.org/wiki/Berim) terimlerle analiz edebilmesi ve bu tip problemlerin çözümü için gerekli beceriyi edinebilmesi
  • problemleri çözebilmek için yeni ya da aşina olmadıkları da dahil olmak üzere bilişim teknolojisini değerlendirip uygulayabilmeleri
  • bilişim ve iletişim teknolojisinin sorumlu, yetenekli, kendinden emin ve yaratıcı kullanıcıları olmaları

hedeflenmekte.

Dört bölümden oluşan müfredat, 5 ile 16 yaş arasındaki tüm çocukları kapsamakta (bkz. http://bit.ly/1f7PIFU , http://www.theguardian.com/technology/2014/sep/04/coding-school-computing-children-programming ).

Birinci bölüm, 5-6 yaşındaki çocuklar için. Bu bölümde, çocuklar algoritma kavramı ile tanışacaklar. Çocuklar algoritma kavramını gündelik hayattan örneklerle ve oyunlarla tanıyacak. Örneğin algoritmayı açıklamak için sabah yaptıkları rutin işler adımlara bölünerek anlatılacak. Basit programların oluşturulup çalıştırılmasının yanı sıra bu programların arkasındaki mantık da gösterilecek. Bilişim teknolojilerinin daha sorumlu ve saygılı kullanımı, kişisel bilgilerin mahremiyeti ve internet ya da herhangi bir bilişim teknolojisi ile ilgili bir sorun yaşadığında nereye başvurabileceği bu bölümde öğretilmeye başlanacak. Sonraki bölümlerde de bu konular üzerinde öğrencinin yaşı göz önünde bulundurularak tekrar durulacak.

İkinci bölüm, 7-11 yaşlarındaki ilkokul öğrencileri için. Öğrencilere, programlamanın temel yapıtaşları olan sıralama (sequencing), seçme (selection), döngü (repetition), değişken (variable) kavramları öğretilecek. Bu bölümde, bilgisayarın ve programların çalışma mantığının öğretilmesinin yanında bilişim teknolojilerinin nasıl daha yaratıcı kullanılabileceği üzerinde durulacak.

11-14 yaşında olanlar için tasarlanan üçüncü bölümde ise öğrenciler, gerçek dünyadaki problemleri ve fiziksel sistemleri soyutlamayı, tasarımı ve programlama dilleri ile gerçekleştirimi öğrenecekler. Bölüm sonunda öğrencilerin, en az iki programlama dilini öğrenmiş olması beklenmekte. Öğrenciler, bu bölümde Boole cebirini devre ve programlarda kullanacaklar, basit arama ve sıralama algoritmalarını öğrenecekler. Müfredat yalnız yazılım bilgisi ile sınırlı değil. Bilgisayarın donanımsal bileşenleri ve bilgisayarlar arası iletişim de bu bölümün konuları arasında yer alıyor. Önceki iki bölümde olduğu gibi bu bölümde de öğrencilere var olan teknolojileri kullanmayı öğretmek gibi bir hedeften çok öğrencilerin yaratıcı bir şekilde yeni çözümler geliştirmesi, var olan teknolojiyi kendi ihtiyaçlarına göre uyarlaması veya farklı teknolojileri belirli bir amaç doğrultusunda bir araya getirmesi ön planda olacak.

Dördüncü ve son bölümde ise öğrenciler, merak ve yetenekleri doğrultusunda bilgisayar bilimleri, bilişim teknolojileri veya dijital medya konusunda daha derinlemesine eğitim alabilecekler.

Bu ayrıntılı müfredata karşın İngiltere’de eğiticilerin eğitimi konusunda yeterli hazırlık yapılmadığından geçiş döneminde en büyük zorluğu öğretmenler yaşamakta. İki büyük sorun var. Birincisi, bilişim teknolojisi öğretmenlerin çoğunun ne programlama konusunda tecrübesi ne de berimsel kavramlar hakkında bilgisi var. Hükümetin öğretmenlerin eğitimi için ayırdığı fonlar tüm iş gücünün eğitimi için yetersiz, bir çok öğretmen çareyi web’deki ücretsiz eğitimlerde arıyor ve zaten fazla olan işlerine bir yenisini eklemek zorunda kalıyor. İkincisi, öğretmenlerin çoğunluğu kendilerini bu alanda yeterli görmüyor ve özgüven sorunu yaşıyor (http://www.computerworlduk.com/careers/coding-in-british-schools-review-of-first-term-3595505/). The Economist (2014), İngiltere’nin müfredat değişikliğinde fazla aceleci olduğunu belirtiyor. İsrail’in 1000, Bavyera’nın ise 700’den fazla öğretmenine gerekli eğitimleri verdikten sonra müfredat değişikliği için gerekli adımları attığına işaret ediyor .

Yanlış anlaşılmasın. Bilim, Teknoloji ve Sanayi Bakanlığı’nın önereceği müfredat değişikliğine karşı değilim. Excel’de tablo yapmayı, Power Point’te sunum yapmayı öğretirken yukarıdaki gibi bir müfredat hazırlamak gerçekten olağanüstü. Son yıllarda, kişisel bilgisayarlar yerini tablet ve akıllı telefonlara bırakırken kullanıcıyı salt tüketiciye indirgeme eğilimi vardı. Şimdi ise kullanılan teknolojilerin yeniden programlanabilirliği öne çıkaran bir yaklaşım öneriliyor. Bu nedenle, çocuklara yönelik programlama eğitimini destekliyorum. Ama amaç bilişim teknolojileri alanında ileri bir ülke olmaksa bu müfredat değişikliğinin yeterli olamayacağını, bilgisayar mühendisliği kontenjanlarının artırılmasındaki gibi kendimizi kandıracağımızı düşünüyorum. Yetişmiş iş gücü konusunda İngiltere’dekine benzer (ve belki daha ağır) sorunlar yaşanacaktır; bu aşılabilir. Ancak asıl sorun söz konusu müfredat değişikliğini yapan ülkelerin birkaç yıl değil, en az on yıl sonrasını dikkate alıyor olmalarıdır. Eğitim sistemi sürekli değişiyor ve nitelik giderek düşüyor… Daha büyük korkum ise bilişim teknolojileri eğitiminde yapılanın tekrarlanması, okulların belirli bir şirketin ürünlerini kullanmaya zorlanması.

Hükümetlerin ya da uluslararası şirketlerin programlama eğitimine bu kadar önem vermesinin en büyük nedenlerinden biri neredeyse yarım asırdır devam eden yeterli ve nitelikli yazılım eksikliğinden kaynaklı yazılım krizi (https://en.wikipedia.org/wiki/Software_crisis). Programcı sayısını artırmak da krizi aşmak için uygulanan stratejilerden biridir. Yalnız programcı sayısını artırmakla kalmayacaklar, yedek iş gücü ordusuyla bilişim çalışanları üzerindeki baskı daha da artacak, ücretler düşecek. Elbette ki bunun farkındayım.

Buna karşın desteğimin ise üç nedeni var. Birincisi berimsel okuryazarlık (literacy) önümüzdeki yıllarda yaygınlaşacak. Kaliteli bir eğitim verileceği konusunda şüphelerim olsa da hiç yoktan iyidir. İkincisi, günümüz dünyasında Lessig’in (2006) de vurguladığı gibi “Kod Kanundur”. Bunu kavramadan, gözetime ve sansüre karşı mücadele etmek, internette ifade özgürlüğünü savunmak giderek zorlaşıyor. Üçüncüsü ise programcılık, fazla mesai olarak karşınıza çıkmadığı veya ne yapacağınıza kendiniz karar verdiğiniz sürece eğlencelidir. Her yaştan insana tavsiye ederim.

Berimsel Okuryazarlık (Computational Literacy)

Programlamayla okuryazarlık arasında bir paralellik kurulması yeni değildir. Bilgisayarların programlanmaya başlandığı ilk günlerden beri vardır. 1960’larda birçok programcı, programlamayı okuryazarlık ile ilişkilendirmekte, hatta bir bilgisayar bilimcisi olan Alan Perlis okullardaki zorunlu kompozisyon dersi gibi programcılığın da lisans öğrenciler için zorunlu bir ders olması gerektiğini savunmaktadır. 1960’larda John Kemeny ve Thomas Kurtz’in Basic programlama dilini tasarlama amaçları programlamayı öğrenciler ve uzman olmayanlar için daha kolay hale getirmektir (Vee, 2013). Sovyet bilimci Ershov (1981) da programcılığı okur yazarlık ile karşılaştırmakta, daha 1980’lerde programcılığın ikinci okuryazarlık olacağını duyurmaktadır. Mozilla Vakfı’nın başkanı Mark Surman’a göre ise kodlama, okuma, yazma ve aritmetikten sonra dördüncü okuryazarlıktır (https://code.org/quotes).

Özgür yazılımdaki özgürlüğün, konuşma özgürlüğü (free speech) ile anlatılması da bilinçli bir tercihtir. Özgür Yazılım Hareketi, free software’deki free kelimesinin yazılımın ücretsiz olduğunu değil, özgür olduğunu anlatırken “free as in free speech not as in free beer” der. Kodlamanın gündelik dil gibi bir ifade biçimi olduğu savunulur. Buna göre, insan dili, programcının yazdığı kaynak kodu ve derleyicinin çevirdiği nesne kodu düşüncenin farklı biçimlerde temsilidir. Düşünce önce belirli bir dilde (Türkçe, İngilizce, Almanca vs) temsil edilir; bir programlama dili ile kaynak kodu haline getirilir ve yazılımsal araçlarla nesne koduna çevrilir. Her biçim özgündür ama bir süreklilik vardır. Bundan yola çıkarak yazılımın konuşma özgürlüğü gibi ABD Anayasası’nın 1. Ek Maddesi kapsamında değerlendirilmesi gerektiği öne sürülmektedir (http://www.2600.com/dvd/docs/2001/0126-speech.html).

Peki okuryazarlık nedir? Literacy, kelimesini Türkçe’ye okuryazarlık olarak çevrilmekte ve basitçe okuma ve yazma yetisini ifade etmektedir. Vee’ye (2013) göre bir çok çalışmada okuryazarlık, yanlış bir biçimde, genel olarak becerileri (görsel okuryazarlık, oyun okuryazarlığı, tasarım okuryazarlığı vb) anlatmak için kullanılmaktadır. Bu kullanımlara göre pekala araba okuryazarlığından da söz edilebilir.

Vee (2013) okuryazarlığı, sembolik ve altyapısal teknolojiyi (örneğin metinsel yazma sistemi gibi) yaratıcı, iletişimsel ve retoriksel amaçlar için kullanma becerisi olarak tanımlamaktadır. Okuryazarlık insanlara düşüncelerini metin olarak ifade etme (yazma) ve başkalarının metin olarak ifade ettiği düşünceleri yorumlama (okuma) imkanı sağlar. Bunun yanında, herhangi bir teknolojinin iletişim için kullanımını basitçe okuryazarlık kapsamında değerlendirmez. Okuryazarlıktan bahsedebilmek için birinci olarak söz konusu teknolojinin toplumun iletişim pratiklerinin merkezini veya altyapısını oluşturması gerekmektedir. Gündelik hayatta belirleyiciliği olmayan bir teknoloji okuryazarlık kapsamında değerlendirilemez. İkinci olarak da bu teknolojiyle elde edilen oluşturma ve yorumla yeteneğinin kolay ve toplumda yaygın olması gerekir. Bu iki durumun eş zamanlı olarak ortaya çıkması gerekmediği gibi herhangi bir öncelik sırası da yoktur, toplumdan topluma değişebilir. Örneğin İngiltere’de okuma ve yazma becerilerinin yaygınlaşması yazının merkezi, belirleyici ve düzenleyici bir rol üstlenmesinden yüzyıllar sonra gerçekleşmiştir. Amerika’da ise tam tersi yaşanmıştır. Okuma ve yazma becerilerinin yaygınlaşması, okuryazarlığın belirleyiciliğinin ve düzenleyiciliğinin önünü açmıştır. Vee (2013), okuryazarlığın basitçe teknik bir süreç olmadığının, toplumsal ve ideolojik etkenlerle biçimlendiğinin de altını çizer.

Programlama da insanların sembollerden oluşan bir teknolojiyle düşünceleri temsil etme ya da yorumlama becerisidir. Sonraki bölümde tartışacağım gibi programlamanın yarattığı kodun gündelik hayattaki belirleyiciliği ve düzenleyiciliği giderek artmaktadır. Ancak program kodunu okuma ve yazma becerisinin yaygınlığını değerlendirdiğimizde okuryazarlıktan söz etmek için henüz erkendir. Programlama yalnız bilgisayar bilimcilerin ve ilgili mesleklerin işi olmayıp diğer meslekler (gazetecilik, tıp, biyoloji vb.) arasında yaygınlaştığında okuryazarlıktan söz edilebilecektir (age).

Vee (2013), bilgisayar okuryazarlığı yerine berimsel okuryazarlığı tercih etmektedir. Berim (compute), bilgisayarın yaptığı iştir. Ama bilgisayar teknolojisi hızla değişmekte, geleneksel bilgisayarlar yerini daha farklı teknolojileri bırakmaktadır. Bu gelişme, yazı teknolojisindeki gelişmelere benzetilebilir, okuma yazma sabit kalsa da kullanılan teknoloji (papirüs, kağıt, matbaa) değişmektedir. Dolayısıyla Vee (2013), somut bir teknolojiye bağlanmak yerine soyut berimsel okuyazarlık kavramını tercih etmektedir. Berimsel okuryazarlık, berimsel düşünmeyi ve soyutlamayı gerektirmektedir. Berimsel düşünme ile bütün parçalara ayrılmakta ve programlama dili aracılığı ile bilgisayarın anlayabileceği şekilde yeniden bütünleştirilmektedir. Programlama dillerinin tarihsel gelişimine bakıldığında zaman içinde daha kullanıcı dostu, ileri düzeyde bilgi ve yetenek gerektirmeyen dillerin geliştirildiği görülür. Hatta bu durumu, programlamanın ileri bir tarihte gereksizleşeceğinin, programlamada gündelik dile yakın dillerin kullanılacağının ve böylece programlama becerisine gerek kalmayacağının göstergesi olarak yorumlayanlar vardır. Vee (2013) bu basitleştirmenin tam tersi bir sürece yol açtığını belirtmektedir; programlama dilleri basitleştikçe daha farklı alanlara yayılmakta ve yaygınlaşmaktadır. Ayrıca hükümetlerin yeni eğitim politikaları da geçmiş yıllardaki okuryazarlık kampanyalarını anımsatmaktadır. Dolayısıyla son yıllardaki gelişmeleri ve girişimleri dikkate alarak oluşum halindeki bir okuryazarlıktan söz edebiliriz.

Kod Kanundur

Lessig’e (2006) göre insanların davranışları, yasa, norm, piyasa ve mimari tarafından düzenlenmekte ve sınırlanmaktadır. Lessig bu düzenleyicileri açıklamak için sigara içme örneğini verir. Nerelerde sigara içilip içilemeyeceği yasalarla düzenlenmiştir. Belirli bir yaşın altında olanlara sigara satılması yasaktır. Özel bir araçta sigara içmeniz yasalarla engellenmemiştir ama normlar diğer yolculardan izin almamızı gerektirir. Piyasa da bir düzenleyicidir. Sigara fiyatlarının artması, ucuza kaçak sigara bulabilme ihtimali, farklı kalite ve fiyatta sigaraların satılması yasa ve normlar gibi düzenleyici ve sınırlayıcı bir etkiye sahiptir. Sigara örneğindeki mimari ise sigaranın nasıl tasarlandığı ve yapıldığı ile ilgilidir. Dumansız bir sigara kullanıyorsanız sigara içebileceğiniz yerler daha fazladır. Ağır aromalı sigaralar, sigaradan rahatsız olanların sayısını artırabileceğinden sigara içmenizi sınırlayabilir. Ya da kullandığınız sigaranın fazla nikotinli olması içeceğiniz sigaranın sayısını etkileyebilir.

Bu düzenleyicilerden her birinin farklı etkisi ve yaptırımı vardır. Yasaklanmış bir ortamda sigara içerseniz ceza ödemek zorunda kalırsınız. Normlara aykırı davranırsanız ayıplanırsınız. Fazla nikotinli bir sigaradan çok içerseniz sağlığınıza zarar verirsiniz. Sigara fiyatının artması cebinizden çıkan parayı artırır. Ayrıca tüm bu düzenleyiciler ayrık çalışmazlar, birbirlerini de etkilerler. Mimari bazen normları ve yasaları güçlendirebilir bazen de zayıflatabilir. Piyasa çıkarlarından kaynaklı düzenlemeler farklı mimarilere neden olabilir.

Bu düzenleyicilerin her birinin ayırt edici nitelikleri ve çalışma prensipleri vardır. Mimarinin düzenleyiciliğinin en önemli niteliği ise kesinliği ve uygulandığı zaman aşılmasının zorluğudur. Aşağıda Lessig’in (2006) mimarinin insan davranışları üzerindeki düzenleyici etkisini göstermek için verdiği örneklerden bazıları yer almaktadır:

  • Fransız Devrimi’nde devrimcilerin Paris’in dar ve dolambaçlı sokaklarına kurdukları barikatlar onlara önemli bir üstünlük sağlamış ve şehrin kontrolünü ele geçirmelerini kolaylaştırmıştır. Bunun fakında olan III. Napolyon Paris’i geniş bulvarlarla yeniden inşa eder.
  • Bazı Avrupa ülkelerinde yürütme ve yasamanın baskısına maruz kalmamak için anayasa mahkemeleri özellikle başkentten uzakta inşa edilmiştir.
  • Amerika’daki bir otelin müşterileri asansörlerin yavaşlığından şikayetçidir. Otel asansörleri hızlandırmaz ama asansör kapısının yanına yerleştirdiği aynalardan sonra şikayetler sona erer.
  • Okulların veya parkların yanına yapılan kasisler sürücüleri yavaşlamaya zorlar.
  • Robert Moses’un Long Island’da inşa ettiği köprüler otobüslerin geçişine uygun değildir. Böylece daha çok toplu taşımayı kullanmak zorunda olan siyahların halk plajlarına gelişleri engellenmiş olur.
  • Bir Amerikan havayolu şirketinin yolcuları bagajlarının geç gelmesine öfkelenmektedir. Üstelik bekledikleri süre diğer yolcularınkinden fazla değildir. Şirket, uçakların iniş noktasını bagajlardan daha uzağa taşıyarak zaman kazanır. Böylece zaman kazanılır, yolcular bagaj için beklemek zorunda kalmazlar ve şikayetler biter.

Önceki bölümde de belirttiğim gibi başta internet olmak üzere dijital teknolojiler gündelik yaşamın önemli bir parçası haline gelmiştir ve gündelik yaşamdaki yaygınlıkları her geçen gün artmaktadır. Dolayısıyla internetin ilk günlerinde olduğu gibi hükümetlerin etkisinden muaf bir internet artık yoktur. Hükümetler insanların, özellikle kendi vatandaşlarının, internet üzerindeki davranışlarını düzenlemek istemektedir. Bu düzenleme arzusu kendini özellikle üç alandaki çatışmalarda kendini göstermektedir: Fikri mülkiyet, mahremiyet ve ifade özgürlüğü.

İnterneti düzenlemek isteyenlerin internetteki kişinin kim olduğunu, nerede olduğunu ve ne yaptığını bilmeleri gerekir. Lessig (2006), internetin ilk günlerdeki mimarisinin buna yönelik düzenlenmediğini ve farklı değerler içerdiğini belirtirken bu mimarinin mutlak olmadığının özellikle altını çizmektedir. Lessig’in kısaca kod olarak adlandırdığı internetin yazılımdan ve donanımdan oluşan mimarisi tarihin en düzenlenebilir alanlarını yaratmaktadır. Ayrıca Lessig (2006) internetin ticarileşmesinin hükümetlerin gücünü artıran bir gelişme olduğunu belirtmektedir. Böylece hükümetler maddi çıkarı olan şirketleri belirli düzenlemeleri yapmaya zorlayabilmektedir; doğrudan kodu değil, kodlayanları kontrol etmektedirler. Doğrudan internete ya da internete erişimde kullanılan cihazlara eklenen kodlar hükümetlerin interneti düzenlemek için sordukları sorulara yanıt verebilmektedir: kim, nerede, ne yapıyor?

İnternette düzenlemenin kendisi tamamen iyi ya da kötüdür denilemez. Ama günümüzde şirketler ya doğrudan kendi ya da hükümetlerin gereksinimleri doğrultusunda vatandaşları etkileyen bazı düzenlemeler yapmakta ve bu düzenlemeleri de ilgili teknolojinin doğası gibi sunmaktadır. Yasalar neyin yapılıp neyin yapılamayacağını çoğu zaman doğrudan söyler; bazı konular özellikle belirsiz ve yoruma açıktır. Vatandaşlar yasayla yapılan bir düzenlemenin bilgisine sahip olabilir. Aynı şeffaflık kodla yapılan düzenlemelerde de olmalıdır. İnsanlar kodla yapılan bir düzenlemeyi göremiyor, tartışamıyor ve eleştiremiyorsa sorun vardır. Şöyle basit bir örnek vereyim, bir kurum işe alacağı kişileri kura ile belirliyor. Adaylar karşılarındaki kocaman ekrandan kura sonucunu izliyor. Söz konusu kura ve bilgisayar olunca herkes susuyor. Ama kura koduna erişimimiz yoksa, kodun nasıl çalıştığını bilmiyorsak kodun gerçekten rastgele çalışıp çalışmadığını da bilemeyiz. Bu nedenle, hükümetin ya da kamu kurumlarının kodla yaptığı tüm düzenlemeleri vatandaşlarıyla paylaşması gerekmektedir. Yazılım geliştirenler, sizin yerinize bazı kararlar vermiş ve fikri mülkiyet, mahremiyet ve ifade özgürlüğü bağlamlarında hak ve özgürlükleriniz kısıtlanmış ise bunu bilmek her ortamda, herkesin hakkıdır. Bilişim ve iletişim teknolojilerini yalnız kullanmayı değil, onların nasıl çalıştığını ve çalıştırılabileceğini bilen, berimsel okuryazarlığa sahip insanların bu düzenleme sürecine daha aktif katılabileceklerini düşünüyorum. Dolayısıyla verilecek eğitim, sadece herhangi bir programlama dilini öğretmekle kalmamalı, bilişim teknolojilerinin hayatı nasıl düzenlediğini ve düzenleyebileceğini içermeli, bilişim teknolojilerin kullanımından öte onların çalışma ilkelerini göstermeli ve öğrencilerin yaratıcılığını öne çıkarmalıdır. Böylece öğrenciler, haklarını sınırlayan ya da sınırlayabilecek kodu daha rahat fark edebileceklerdir.

Bilgisayarlar, tablet, akılı telefon vb teknolojilerin ötesinde gündelik yaşamda kullanılan cihazlarda yaygınlaşmaya başladığında berimsel okuryazarlık daha önemli olacak.

Programlama Eğlencelidir

Para için değil, sadece eğlenmek için yazılım geliştiren çok sayıda programcı vardır. Programlama satranç ya da bulmaca çözmek gibi eğlenceli bir uğraştır. Zeka oyunlarından hoşlanan her yaştan insana tavsiye ederim.

Hiç bilmeyenlere programcılığın temellerini anlatan çok sayıda web ve tablet uygulaması var. Bu uygulamalar içinde en çok beğendiğim ve önerebileceğim code.org sitesindeki uygulamalar ve MIT’in (Massachusetts Institute of Technology) geliştirdiği Scratch (https://scratch.mit.edu/) adlı görsel programlama dili. İstediğinizi tercih edebilirsiniz ama önerim, hepsini tamamlamasanız da, önce code.org’taki dersleri takip etmeniz, daha sonra da Scratch ile ufak uygulamalar yazmanız.

code.org
2013 yılının ocak ayında Hadi ve Ali Partovi tarafından kurulan code.org herkesin kodlamayı öğrenebileceği iddiasıyla bilgisayar programlamayı herkes için erişilebilir yapmaya çalışıyor. code.org, kurulduktan bir ay sonra Mark Zuckerberg, Bill Gates, Jack Dorsey gibi bilişim dünyasının önemli isimlerinin yer aldığı bir video hazırladı. Videoda yer alan kişiler kodlamanın önemini vurguluyorlardı. Video internette hızla yayıldı. Video, bilişim şirketlerinin ve iş adamlarının da ilgisini çekti. İki hafta içinde yaklaşık 10 milyon dolar toplandı ve bu destek daha sonra da devam etti. code.org sitesinin bağışçıları arasında Google, Microsoft ve Facebook da var (https://code.org/about/donors).

code.org’un hedef kitlesi ilk başta sadece ABD’liler olsa da site kısa zamanda uluslararası bir nitelik kazandı. Şu anda 45’ten fazla dili destekliyor ve sitedeki eğitim materyali 180’den fazla ülkede kullanılıyor. Her okuldaki her öğrencinin bilgisayar bilimlerini öğrenmek için fırsatı olması gerektiğini savunan code.org, programlamayı merak eden ama hayatı boyunca kod yazmamış ve bundan çekinen her yaştan insana eğlenceli gelebilecek dersler sunuyor. Ayrıca daha çok beyaz erkeklerin işi olarak görülen bilgisayar biliminde çeşitliliği artırmayı da hedefliyor. code.org’a kayıtlı kullanıcıların %43’ü kız, %37’si siyah ya da İspanyol kökenli.

Kodlama nedir öğrenmek ve biraz eğlenmek istiyorsanız işe Starwars (https://code.org/starwars) ya da Minecraft (https://code.org/mc) ile başlayabilirsiniz. Buradaki alıştırmalar hoşunuza giderse yeni başlayanlar için dört farklı ders var (https://studio.code.org/). Birinci ders dört yaş üstü için tasarlanmış ve okuma becerisi gerektirmiyor. Dersin ilerleyen bölümlerinde programlamadaki kavramlar (bir değişkene değer atama, atanan değeri kullanma, döngü) öğretiliyor. İkinci ders, altı yaş ve üstü, okuma becerisi olanlar için. Bu derste, döngü konusu daha detaylı işleniyor, koşullama (if) kavramı öğretiliyor. Öğrenciler, örnek programlardaki hataları bulmaya çalışarak hata ayıklama alıştırmaları yapıyorlar. Üçüncü ders, ikinci dersi tamamlayan sekiz yaş üstü öğrenciler için. Bu bölümde öğrenciler önceki bölümlerde öğrendiklerini tekrar ediyor ve fonksiyon kavramını öğreniyorlar. Üçüncü dersi tamamlayanlar için hazırlanan dördüncü ders daha karmaşık alıştırmalar sunuyor.

Derslerdeki alıştırmalar aşağıdaki gibi, özellikle çocuklar için, son derece eğlenceli:

code.org

Ayrıca çözümün, javascript adlı programlama dilindeki karşılığını da görebiliyorsunuz:

for (var count = 0; count < 5; count++) {

moveForward();

}

Bu derslerde, çeşitli alıştırmalarla yukarıda belirttiğim gibi programlamadaki temel kavramları öğreniyorsunuz. Bu kavramları ve programlama mantığını tanıdıktan sonra Scratch’ta daha kolay uygulama geliştirebilirsiniz.

Scratch

MIT’nin 2000’li yılların başında 8-16 yaş arasındaki öğrenciler için tasarladığı görsel bir programlama dili olan Scratch’ın ilk sürümleri bilgisayara kurulmaktaydı. Şimdiki sürümünü ise web üzerinden, bilgisayarınıza herhangi bir yazılım kurmadan https://scratch.mit.edu/ adresinden kullanabilirsiniz. Scratch, ABD’de çeşitli okullarda kullanılıyor. Hatta “Her öğrenciye bir dizüstü” projesi kapsamında dağıtılan bilgisayarlar, Scratch kurulu bir halde dağıtılmış.

İnsanlar Scratch ile birbirinden farklı yazılımlar geliştirebiliyor: Hareketli masallar, oyunlar, tebrik kartları, bilimsel projeler, müzik projeleri, simülasyonlar vb. Grafik arayüzü oldukça kullanıcı dostu. Ana karakteri (varsayılan bir kedi) başka bir karakterle (dinozor, hayalet, balerin, basketbol topu vb yüzlerce karakter) değiştirebilir, farklı arka planlar ekleyebilirsiniz. Program kodunuzu yazdıktan sonra bu kodu saklama ve diğer kullanıcılarla paylaşma şansına da sahipsiniz. (https://download.scratch.mit.edu/scratch2download/sa/Getting-Started-Guide-Scratch2.pdf). Ayrıca başkasının paylaştığı kodu inceleyebilir ve onu iyileştirebilirsiniz. Dolayısıyla insanlar daha programlamaya adım atar atmaz kendini bir özgür yazılım topluluğunun içinde buluyor.

Program bileşenleri, code.org’ta olduğu gibi, Lego’lara benzer bir biçimde tasarlanmış:

scratch

Programcılığa yeni başlayanlar için en sinir bozucu durumlardan olan söz dizimi (syntax) hataları, kodların lego parçaları gibi birbirine eklemlenmesi ile ortadan kalkmış; uymayan parçaları birleştiremiyorsunuz. Hata mesajlarıyla uğraşmıyor, sadece yapmak istediğiniz işe odaklanıyorsunuz. Scratch zengin ve kolayca anlaşılan bir komut setine sahip. Bugün yazılım geliştirmede kullanılan bir çok programlama dili (Java, C, C++, C#, php, python, ruby) yapı olarak birbirine benzer. Bu dillerden birini biliyorsanız ikinciyi çok hızlı kavrayabilirsiniz. Scratch öğrenmenin de böyle bir faydası olacak. Günümüzde programlama eğitiminde yapılan en büyük hatalardan biri öğrenciye temel kavramları vermeden doğrudan dillerin söz diziminin ezberletilmesi oluyor. Bu nedenle birçok üniversite öğrencisi daha işin başında programlamadan uzaklaşıyor.

Scratch ile yaratıcılığınızı ortaya koyabilir, hoşça vakit geçirebilirsiniz. Yola devam etmek isterseniz, python dilini (https://www.python.org/) tercih edebilirsiniz.

İyi eğlenceler.

25 Mart 2016

Posted In: berimsel okuryazarlık, Bilgisayar Bilimi, e-devlet, ifade özgürlüğü, kodlama, Özel hayatın gizliliği, Özgür yazılım, Scratch

Twitter Auto Publish Powered By : XYZScripts.com