Commodore sayı 15, sayfa 11

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 11

Bunda başarılı olduğu takdirde, elde ettiği sonucu kendi komut vericisine (yukarıya) aktarır... vb. En sonunda ise, eğer bütün komut vericiler kendi görevlerini yapmışlarsa, LOGO basıma geçebilmektedir. Bu anlatılanlar karmaşık mı geliyor size? Öyle olsa da, kaygılanmanıza gerek yok. Çünkü “recursion” veri işlemin en tuhaf ve güç anlaşılır kavramlarından biridir. Bilgisayarın bütün hesap işlemlerine saydam bir şekilde ışık tutacak basit bir örnekle konuya açıklık getirmeye çalışalım: Örneğin, 3 sayısının faktöriyelini hesapladığımızı düşünelim. Bu durumda LOGO ilkin N=1 olup olmadığını sorar. Yanıt olumsuzdur. O zaman yordam (buna “1” diyelim) 3 değerini kaydeder ve bir alt-yordamı 3 faktöriyelini bulmakla görevlendirir. “2” olarak adlandıracağınız yordam ise N=1 olup olmadığını yoklar; yanıt olumsuzdur ve yordam “2” bu defa 2 değerini kaydederken bir alt-alt-yordamı 2-1=1'in faktöriyelini bulmakla görevlendirir. “3”te N'in değerinin 1 olup olmadığını sorar; yanıt olumludur. Bu durumda yordam “3” büyük bir gururla yordam sonucunu aktarır. Şimdi yordamın kullanabileceği bir değeri vardır ve bunu 1x2=2 şeklinde kullanır. Bu sonuç ilk komut vericiye iletilir ve böylece o da tıpkı bir önceki gibi işlem yapabilecek bir değer edinmiş olurken bu (2) değerini kendi değeri olan (3) ile çarparak 6 sayısını bulur. Buysa, görüldüğü gibi, 3 sayısının faktöriyelidir: 3! Şimdi artık önemli olanın ne olduğunu herhalde daha iyi anlaşılmaktadır: Sorun bizzat çözülemediğinde, görevi bir başkasına aktarmak. Bunun temelinde yatan ilkeyi “gecikmeli uygulama” olarak nitelendirmek mümkündür. Burada bütün ara değerler ve ara formüller depolanmak zorundadır ve bundan ötürü de rekürsif diller çok fazla bellek hacmi gerektirirler. LISP'in, ev ya da kişisel bilgisayarlarda bu denli ender görülmesinin nedenlerinden biri de budur. Ama depolama konusunda programcının kaygıya kapılmasına hiç gerek yoktur; çünkü bütün bunları LOGO-çeviricisi üstlenmiştir. Recursion'un ardında yatan ilke grafik olarak pek güzel gösterilebilir -“çocuk” dili LOGO'nun eğitsel yönden taşıdığı büyük değerin kaynağını da burada aramak gerekir. Bir örnek daha verelim: Geçen yüzyılın sonlarına doğru bazı matematikçiler son derece garip görünümlü birtakım eğriler keşfettiler. Bu eğrilere akademik çevrelerce “patalojik” damgası vuruldu. Çünkü bunlar, eğrilere ilişkin peşin yargıları altüst etmişlerdi. Söz konusu “hastalıklı” eğriler bulundukları yüzeyi en sonunda baştan başa kaplıyorlardı; çünkü çok sık bir dallanma sürecine giriyorlardı. Öyle ki, her alt dal, dallanma sırasında yeni bir alt dal ve bu da başka bir alt dal... vb. oluşturuyordu. Tıpkı recursion'da olduğu gibi. Bu yeni oluşumlar hiç de salt birtakım oyunlar sonucunda ortaya çıkmış değillerdi; birçok alana yeni bilgiler kazandıran ve olağanüstü bilgisayar grafiklerine imkân veren bir bilimin gelişmesi bu eğriler sayesinde olmuştur. Biz bu eğrilerden biri üzerinde çalışmaya başladık (“Sierpinski-eğrisi”, adını bulucusundan almıştı). Eğriyi LOGO dilinde göstermeye uğraşıyorduk. Ben bir gün sonrasında sinirlerim harap olmuş bir durumda bu işten vazgeçerken, meslektaşım Lehmann, çalışmasını yılmadan sürdürdü ve rekürsif hilelere karşı yürüttüğü toplam 24 saatlik bir mücadele sonucunda basit görünümlü bir program yapmayı başardı. Gerçekten de, LOGO'nun temel sözlük dağarcığına egemen olan herkes bu programı (anlamasa bile) “okuyabilirdi”. Ama kendi düşüncesi hakkında da düşünebilmek, insan zekâsının bir özelliği. Yapay zekâ dilleri bu özelliği Recursion aracılığıyla taklit eder.

Planlanır ve denenirse bu görünüm çıkıyor ortaya.

aynı program BASIC'de öylesine kapsamlı ve bir bakışta anlaşılması öylesine zordu ki, burada bunun dökümünü yapmaktan kaçınmak zorunda kaldık.

Ayrıca, Pascal ile LOGO arasında bir karşılaştırma yapmaktan da çekindik. Çünkü LOGO'nun tipik grafik yetenekleri Pascal'da ya hiç yoktu, ya da aynı şekilde mevcuttu. Bu durum versiyona bağlı olarak değişiklik gösteriyordu. Bu dilin ilk taslağında hiçbir grafik imkânı öngörülmemiştir. Bütün bu anlatılanlardan sonra, sizin için hangi dilin en uygun dil olduğuna bilmem karar verebildiniz mi? Eğer veremediyseniz cesaretiniz kırılmasın. En iyisi, kişinin bunu bizzat denemesi ve mizacına en uygun düşen dili sonunda kendi kendisinin seçmesidir. Programlama dillerinin seçimiyle araba ya da bilgisayar seçimi arasında pek fazla bir fark yoktur.

Klavyeyle gezinmek için ← ve → tuşları.