|
Hiç daha önce, detaylarına hâkim olmadığınız bir konuyla alakalı bir soru sorulduğunda kendi kendinize çıkardığınız sonucu sanki teyit ederek edindiğiniz doğru bir bilgiymiş gibi, gayet kendinizden emin bir şekilde cevap namına söylediniz mi? Hatta belki soru sormaya bile gerek kalmadan, ilgili konuya tamamen hâkim olduğunuzu ya da sanki başkasının bilmediğini bildiğini gösterme adına durduk yere yaptınız mı bunu? “Evet yaptım. Ve bunu çok yapıyorum” diyorsanız, bilgisayar
bilimlerinde yapılanı görmeden kendinize bu kadar haksızlık etmeyin derim. Çünkü
doğası gereği bilgisayar bilimleri, kendi kendine sonuçlar çıkarıp bunu
başkasına doğru bir bilgiymiş gibi anlatmanın, muhtemelen, en fazla yaşandığı alandır, tabii ki de siyaset dışında. Neden doğası gereği? Çünkü bilgisayar bilimlerinde uzmanlaşma tamamen bilgi
birikim üzerine dayanır, beden gücüne ya da aile bağlarına ya da ne bileyim, fiziksel
görüntüye değil. Ve çalışan bir mekanizmayı ortaya çıkarmanın da korkunç bir
bilgi birikim istiyor olmasından kaynaklı en fazla soru sorulan ve aynı oranda
cevap verilmeye çalışılan yani yardımlaşmanın, etkileşimin olduğu alan da burasıdır.
Onun için çıkardığı sonucu doğru bir bilgiymiş gibi söyleme doğal olarak en
fazla bu alanda görülür. Elbette cevabını bilmese de iyi niyetli bir şekilde çıkardığı sonucu cevap namına verebilir insan. Yanlış da olabilir bu cevap ama illaki yanlış olacak diye bir kural da yoktur elbet. Büyük ihtimalle doğru da çıkıyordur. Doğru ise ne güzel yardımcı da olunmuştur. Fakat bazen insanlar bilmediğini söylemek yerine, soru sorulmasını “daha fazlasını bilen” insan görüntüsü verme fırsatı olarak görüp, çıkardığı sonucu doğru bir bilgiymiş gibi söyleyebilmektedir, doğru mu yanlış mı olduğunu umursamadan. Ya da aslında kendisinin de anlamadığı, daha önceden verilmiş ama aslında yanlış olan cevabı, aynı öncekilerin yaptığı gibi kendisinden son derece emin bir şekilde tekrarlayabilmektedir. Bu gibi bir durum için elbette iyi niyetten bahsedemeyiz ama sorun bu değil. Çünkü ne olursa olsun, ister iyi niyetli olunsun, isterse de olunmasın eğer verilen bilgi yanlışsa ve bu doğru gibi söylenmişse, her iki durum için de cevap arayan insanların yanlış yönlendirildiği gerçeği değişmez. Sonucunda da bu kadar farklı kaynaktan aynı yanlış cevabı
duyan insan da sorunun kendisinde olduğunu, herkesin anlamayı başardığı şeyi
kendisinin anlayamadığını düşünebilmektedir, büyük bir moral bozukluğu ile.
Bunun sonucunda da ya vazgeçen olmaktadır ya da verilen hatalı cevaplar karşısında
anlamış gibi yapan insan topluluğu bir kişi daha kazanmaktadır. Hatta, o
da zamanla o hatalı cevapları tekrarlayarak başkalarını yanlış yönlendirecektir, belki.
Ama sanıyorum o topluluk bu fakiri kazanamadı, çok şükür. Devrim Dersleri – 2: Yazılımın Temelleri serisinin hikayesi
şöyledir: 1999 sonu 2000 başı... Her mahalleye birer ikişer internet
kafe açılmış ve biz de ilk defa klavyenin tuşlarına dokunmuşuz, web sitesi
tıklamayı öğreniyoruz. Paralelinde de Matrix filmi çıkmış onu izlemişiz. Kendi
aramızda da hacker efsaneleri anlatmaya başlamışız. Ve bu gazla üniversiteye
başlamış, programlama dersine de girmişiz. Gizemli bir hacker olmamız an
meselesi artık derken, hoca kara tahtanın önünde bir grup sayıyı küçükten büyüğe
sıralamayı gösteriyor. Bu ne yahu? Aslında işin özü oydu ama bunu görebilmek bile ne mümkündü o
dönemde. Kara tahta önünde hiç kategorize etmeden yapılan anlatım tekniği
sebepli, anlatılanları anlamak ne kadar zordu. Daha yolun çok başında olduğumu ve
yolun çok uzun olacağını anlamıştım. İnternete ulaşmanın pek de kolay bir şey olmadığı, ulaşılsa
bile günümüzde erişilebilen bilgi birikiminin milyonda birinin dahi olmadığı o
yıllarda, internet kafelerde bir şeyler okumaya çalışıyorduk. Ama C ile biraz
biraz kod yazmaya da başlamıştım. Konsoldan kullanıcının 2 sayı girmesini
istemek ve toplamını konsola basmak... C Programlama dili ile ilk böyle
başladık programlamaya. Koşullamalar yazmam gerektiğini anlamıştım en azından.
Sonra C++ diye bir şey duyduk. Allah Allah farkı neydi ki? “C++ dili nesneye
yönelik bir dildir”. Cevap buydu. Peki nesneye yönelik dil ne demek, nesne ne
demekti? Bir hocaya sordum. Mantığını sorduğumu anladı, geçiştirdi.
Zaten dünya üzerinde kime sorsam geçiştirecekmiş. Çünkü bunu anlamanın yolu
zekâ kavramını anlamaktan ve zekânın nesne kavramı ile bağını keşfetmekten geçiyordu
ki -biraz da yanlış isimlendirilen- nesneye yönelik
programlama denilen programlama tekniğini zekânın tam tanımlarını vererek ve o
tanımlarla uyumlu olacak şekilde anlatan, sanıyorum tarihteki ilk çalışma Devrim Dersleri – 2: Yazılımın Temelleri: Kod adı ile encodeum kanalında 2026 yılında yayınlanmış oldu. Sormaya devam ettim. Programlama bildiği düşünülen başka bir
kişiye sordum bu nesneye yönelik programlama denilen şeyi. Efsane bir cevap vermiş o zaman: “Hani, görsel programlama var ya”, kullanıcı arayüzü olan Windows
uygulamalarından bahsediyor, “İşte nesneye yönelik programlama o” dedi. Şimdi düşündüğümde,
“Vay canına neyi nereye bağlamış” diyorum. Doğru kabul etsem ve yıllarca
üzerine gitmesem, sözde hem nesneye yönelik programlamanın hem de kullanıcı
arayüzü hazırlamanın ne demek olduğunu anlamış gibi yapacağım ben de. Bir iki kişi ile
daha konuştum onlar da ezbere cevap verdi. Baktım anlayamıyorum, konuyu
erteledim. Vazgeçmedim ama erteledim. Ta ki 2006 yılına kadar. 2006 yılından
sonra internet bağlantısına kavuşmam ve sonrasında da korkunç bir okuma
sürecine girmem ile bir şeyler belirmeye başladı. Tam mantığını ise “COM” diye
kısaltılan Component Object Model konusunu anlamam ile çözmüş oldum. Hatta şöyle olmuştu: Bir gün yolda yürüyorum aynı zamanda bu
konuyu düşünüyorum: “Bir fonksiyona bir arayüzü parametre olarak geçiriyoruz. O
arayüzün metodunu fonksiyon içinde çağırıyoruz. Ve çalışma zamanında, o
arayüzden türetilen hangi nesne gelirse gelsin kod o nesnenin metodunu çağırmış
oluyor. Çünkü derleyici her sınıf için ‘v-table’ denilen fonksiyon
işaretçilerini içeren bir tablo hazırlıyor. Ve aslında fonksiyona onu geçirmiş
oluyoruz, sınıfın verileri ile birlikte. Yani nesnenin geçirildiği o fonksiyon, aynı arayüzden türeyen nesnelerin
içindeki fonksiyon işaretçileri üzerinden dinamik metot çağırımı ile nesneleri
birbiri yerine kullanmış oluyor. Derleyici metot çağırımı için metodu adrese
bağlama işini derleme anında yapmıyor. Dinamik olarak yapıyor dolayısıyla
çalışma zamanında gelebilecek farklı nesneleri birbiri yerine kullanmış oluyor.
‘Birbiri yerine kullanma’ mı dedim az önce?
Aaa bir saniye, zekâ da alet kullanabilme yeteneğiydi. Ha nesneler ile
zekâyı gerçeklemişler yahu. O zaman zekâ da aslında alet kullanma değil,
aletleri yani nesneleri birbiri yerine kullanma yeteneği. Hah tamam şimdi oldu”
demiştim o zaman. Bütün taşlar yerine oturmuştu. Fakat süreç burada değil, çok ilginç bir yerde bitti. Askere gittim 2009 Aralık’ta. Bir sabah içtimadayız. Sağ olsun, tabur komutanımız askerlere nasihat ederken zekânın o zamana kadar ilk defa duyduğum farklı bir tanımını söyleyip, ardından kendi çıkardığı yanlış sonucu ekledi sözlerine. Şu minvaldeydi söyledikleri: “Arkadaşlar zekâ çevreye uyum sağlama yeteneğidir. Burada ortama, arkadaşlarınıza uyum sağlayacaksınız”. Muhtemelen zekânın tanımını bir yerde okudu. O tanımın orijinalinde geçen
“environment” ifadesinin Türkçeye “çevre” olarak çevrilmesini birçok insan gibi
yanlış anlayarak bunun arkadaş çevresi, insanın bulunduğu ortam olduğunu falan
sandı ve bunu doğru bilgiymiş gibi insanlara aktarıyordu. Elbette kötü niyetli değildi ama insanları
yanlış yönlendiriyordu. Ama bir kişi hariç, yine bu fakir. Ben o anda, zekâ
için söylenen “çevreye uyum sağlama” tanımını, “aletleri birbiri yerine
kullanma yeteneği” tanımı ve nesneye yönelik programlama kavramları ile eşleştirip,
ikinci uyanmayı yaşamıştım. Ve o tanımı da izlemiş olduğunuz gibi, 2026 yılında
yayınladığımız Devrim Dersleri – 2: Yazılımın Temelleri: Kod isimli videoya
eklemiş oldum. İşte, “Bu ders neden bir devrim dersi?” diye soracak olursanız, “Bu ve
bunun gibi açıklamaları içerdiği için devrim dersidir” derim. Zaten encodeum çatısı altında yayınlanan çalışmaların
kalitesinin ne seviyede olduğunun farkında olan encodeum’un sıkı takipçileri, mevcut
Matematik müfredatının yanlış olduğunu anlattığımız Devrim Dersleri – 1: Matematiğin Temelleri isimli çalışmadan 13 yıl sonra, Yazılımın Temelleri serisinde yazılım ile ilgili klasik bir anlatım yapmayacağımızı tahmin etmişlerdir. Sıra dışı
bir şeyler beklemişlerdir. Peki, bu kadar mı yazılım konusu ile ilgili
yapacaklarımız? Bu kadar olur mu yahu! Daha yeni başladık. Yolumuz uzun. Daha, bitirmemin yıllar sürdüğü bu devasa şekli adım adım tamamlayacağız inşallah. Belki de 1. Devrim Dersi serisi ile tarihin en önemli Matematik dersi ortaya çıktı, naçizane. Eğer öyleyse, bu 2. Devrim Dersi serisi ile de, inşallah başarabilirsek, tarihin en önemli yazılım dersi serisini çıkarmayı planlıyoruz. Senior Developer’dan tut da Software Architect’e kadar bir dolu unvanı olup da temel konularda eksikleri olan, bir şeylerin oturmadığının farkında olan ama soramayan, belki eksikleri olduğunun farkında bile olmayan arkadaşlar varsa merak etmesinler, bu seri ile sessiz sedasız hepsini işleyeceğiz inşallah, mantıklarını anlata anlata. Hatta, eksiğinizin olup olmadığı hususunda hemen şimdi ufak bir test de yapabilirsiniz kendinize. Şöyle: Az önce ilk bu konuları öğrenmeye başladığım
zamanlarda, edindiğim bir bilgi olarak, C++ Programlama Dilinin C Programlama
Dilinden farkı bağlamında C++ dilinin nesneye yönelik bir programlama dili olduğunu
söyledim, C değilmiş gibi. Siz de okudunuz ya. Eğer bu bilgiyi yadırgamadıysanız, evet, bu temel konularda eksikleriniz olduğunu gösterir. Çünkü doğru bir bilgi değildi o. Daha doğrusu, yanlış bir yönlendirme içeriyordu. Durun, bir meydan okuma yapayım o zaman, heyecan katsın Devrim Dersleri – 2 sürecine. İki soru: 1. İlk soru şu olsun: C ile C++ programlama dilinin farkı
nedir? (İpucu: İşletim Sistemi çekirdeğinin çalışma mekanizması ve programlama
dillerinin neleri soyutladığı konularına bakın.) 2. Sınıf içine koyduğumuz erişim belirleyicileri ne işe
yarar? Hani “public”, “protected”, “private” erişim belirleyiciler var ya. En
temel konulardan... Bunlar ne işe yarar? (İpucu: Bu ders için yayınladığımız şekilde
nereye koyduğumuza dikkat edin.) Siz bunların cevaplarını düşünürken ben bir de bu konunun teolojik boyutuna gireyim. Çünkü buraya kadar anlattıklarımız, bu konunun teknik
kısmıydı. Bu konu o kadar derin ki, işin bir de teolojik boyutu var. Şimdi biraz da konunun o boyutunu konuşalım. Hatırlarsanız, “Müslüman Olmak Nedir? Ne Değildir?” yazısında
insanı oluşturan teolojik parçaları ve yine etkileşim halinde olduğu teolojik
varlıkları çizmiş ve 2 parçanın eksik olduğunu söylemiştik. O parçalardan biri
zekâ idi. Zekâyı ekleyememiş olmamın nedeni, o yazıyı yayınladığım zaman henüz 2. Devrim Dersini yayınlanmamış olmamdı. Devrim Dersleri – 2 sürecini
başlattığımıza göre artık ekleyebilir ve üzerine konuşabiliriz. Yazının linkine
tıklayarak şeklin en güncel haline ve zekâ kavramının teolojik açıklamasına ulaşabilirsiniz. Sadece Türkiye'de değil, tüm dünyada akıl ve zekâ sözcüklerinin birbiri yerine kullanıldığını ve böyle bir genel bir kanı oluştuğunu görüyorum. Hayır bu doğru değildir. Zekâ ve akıl birbirinden farklı 2 kavramdır. Hem az önce linkini verdiğimiz yazıda gördüğünüz gibi hem de ikinci Devrim Dersi serisinin ilk çalışmasında işlediğimiz gibi zekâ aklın dışında farklı bir işleve sahip ayrı bir parçadır. Akıl mantık kurma işini yapar. Dolayısıyla insanınkine kıyasla çok basit olsa da hayvanlarda da akıl vardır. Onlar da mantık kurabilirler (Örneğin: Pavlov'un Köpek Deneyi). Zekâ ise alet kullanabilmemizi hatta aletleri birbiri yerine kullanabilmemizi sağlar. Bu ise sadece insanda vardır. Onun için akıl ve zekâ sözcüklerini birbiri yerine kullanılamayacak 2 farklı şeyi temsil etmektedir. İngilizcede zekâ için “Intelligence” sözcüğü kullanılırken, akıl için “Mind”, “Reason” gibi sözcükler kullanılıyor ama bunların hepsi çok fazla birbiri yerine de kullanılıyor. Akıl için İngilizce sözcük kullanmamamın nedeni Mind veya Reason sözcüklerinden birini kullanma
konusunda kararsız kalmam ve Intelligence sözcüğünün de bu manada kullanılıyor olmasıdır. O zaman buradan
bir sonuç daha çıkıyor ki, sanırım encodeum çatısı altında anlattıklarımızı sadece
Türklere değil, tüm dünyaya anlatmamamız gerekiyor. Bitirmeden önce, “Müslüman Olmak Nedir? Ne Değildir?” yazısında gördüğünüz şekilde eksik olan son parçayı soracak olursanız, o da inşallah Devrim Dersi – 4’te. |
3 Mart 2026 Salı
Devrim Dersleri - 2: Yazılımın Temelleri
Kaydol:
Kayıt Yorumları
(
Atom
)

0 comments :
Yorum Gönder