- Ortaokul ve lise öğrencilerine yönelik 12 derslik programlama dersinde, sözdiziminden çok temel kavramlara odaklanmak için 1970’te ortaya çıkan yığın tabanlı, bağlantılı dil Forth seçildi
- Son giren ilk çıkar yapısını ve işlemleri kâğıt tabaklarla bizzat uygulayıp ardından bilgisayara taşıyarak, öğrencilerin Forth yorumlayıcısının işleyişini bedensel olarak kavraması sağlandı
- Kurulum gerektirmeyen Easy Forth’ta final ödevi olarak çizim, animasyon ve oyun seçildi; öğrenciler Snake’in kurallarını ve renklerini değiştirdi ya da piksel düzeyinde çalışmalar tamamladı
- Forth’ta sözdizimi yükü az olsa da yeni başlayanların yığın gibi düşük seviyeli yapılarla erken aşamada uğraşması gerekti; giriş dersi için anında görsel geri bildirim veren Scratch daha iyi bir seçenek olabilirdi
- Belirli bir dilden çok, sonucu hızlıca görüp kendi kendine keşif yapılabilen bir ortam önemlidir; LLM’lere bağımlılık nedeniyle becerileri öğrenememe ya da sürdürememe riski arttıkça insan odaklı eğitim daha da gerekli hâle gelir
Neden Forth seçildi
- Python veya Scratch yerine yığın tabanlı bağlantılı dil Forth seçilerek pek sık denenmeyen bir eğitim yolu araştırıldı
- Sınırlı ders süresinde temel kavramları ele almak için sözdizimi öğretiminin getirdiği yükten kaçınılmak istendi
- Python, programlama deneyimi olanlara sözde kod gibi okunur görünse de ilk kez öğrenenler için hâlâ anlaşılması zordu
- Aday diller Forth ve Haskell’di
- Forth’un komutları yazıldıkları sırayla çalıştırması, yığın anlaşıldığında program yazılabilmesini cazip kılıyordu
- Haskell, matematikte öğrenilen değişken ve fonksiyon kavramlarına iyi uyuyor; değişkenleri değer tutan kutular gibi ele alan yaygın programlama yaklaşımının yarattığı kafa karışıklığını önleyebiliyordu
- Sonunda Forth’un seçilmesinin iki nedeni vardı
- Özelleştirilmiş öğrenme ortamına entegre edilmesi kolaydı
- Sınıftaki final gösteriminde prosedürel programlamanın, fonksiyonel programlamadan daha kolay anlaşılacağı düşünüldü
- Az bilinen bir dil kullanmak, programlama deneyimi olan öğrencilerin de yeni bir şey öğrenmesini ve yeni başlayanların da dışlanmamasını sağlayabiliyordu
12 saatlik müfredat tasarımı
- Dersler haftada bir kez, her biri 1 saat olmak üzere toplam 12 kez yapıldı; ders dışı çok fazla ödev yapılması beklenmedi
- Nihai hedef, Forth ortamında çizim, animasyon veya oyundan birini bizzat üretmekti
- Süreç bittikten sonra da gözle görülebilecek ve saklanabilecek bir çıktı bırakılmak istendi
- Çok teknik şey öğrenilip elde somut bir şey kalmadığı hissinden kaçınılmak amaçlandı
- Öğrencilerin işletim sistemleri farklıydı ve bazı cihazlara harici yazılım kurulamıyordu; bu yüzden kodun, ayrı indirme veya kurulum olmadan herkesin kendi bilgisayarında çalıştırılabilmesi gerekiyordu
- Başta Rust ile özel bir Forth gerçekleyip WASM olarak ders web sitesine yerleştirmek planlandı, ancak hata düzeltme beklenenden uzun sürünce plan değiştirildi
- Nick Morgan’ın Easy Forth aracı hem müfredat hem de yorumlayıcı olarak benimsendi; ders slaytları, ders planları ve Easy Forth’un bir kopyası çevrimiçi portala yüklendi
Derse bilgisayar kavramından başlamak
- İlk derste bilişimin tarihi ve bilgisayarın ne olduğu ele alındı
- Abaküs dâhil çeşitli araçlar gösterilip bunların bilgisayar olup olmadığı soruldu; ardından bilgisayar “sayı hesaplayan her şey” olarak tanımlandı
- Bu tanıma göre neredeyse her şeyin bilgisayar olabileceği, öğrencilerin kendilerinin de buna dâhil olabileceği fark edildi
- Bilgisayarın kapsamına dair mevcut algı genişletildikten sonra Forth, gerçek kullanım alanları ve gömülü uygulamalar tanıtıldı
- Easy Forth, okuyucunun en az bir programlama dili ve yığın veri yapısını zaten bildiğini varsayıyordu; öğrencilerde bu bilgi olmadığı için ayrıca açıklama gerekiyordu
Veri yığınını kâğıt tabaklarla anlamak
- Bilgisayar kullanılmadan önce Forth’un temeli olan veri yığını kâğıt tabaklarla görselleştirildi
- Boşlukla ayrılmış sayılar, girildikleri sırayla yığına girer
1 2 3girilip ardından. . .ile çıktı alındığında, en son giren öğeden başlayarak3 2 1çıkar- Yığın, son giren ilk çıkar (Last-In First-Out) yapısıdır; öğeyi üste koyan push ve üstten çıkaran pop işlemleri etrafında çalışır
- Her öğrenci bir kâğıt tabak alarak Forth işlemlerini bizzat yürüttü
- Bir sayıyı push ederken sayı tabağa yazılıp en üste kondu
- Toplama yapılırken en üstteki iki tabak alındı, değerleri toplandı ve sonucun yazıldığı yeni tabak üste kondu
8 6 +, iki değeri koyup toplayarak yığına14koyan işlemdir2 3 *, iki değerin çarpımı olan6yı yığına koyar
- Çeşitli işlemler tekrar edilerek öğrencilerin bizzat Forth yorumlayıcısı rolünü üstlenmesi sağlandı
- Bilgisayarın bu işi otomatikleştirdiğini anladıktan sonra gerçek cihazlara geçildi
Easy Forth uygulamaları ve final çalışmaları
- Her hafta Easy Forth dersleri izlenerek kavram açıklamaları, alıştırmalar ve soru-cevap yapıldı; tüm süreç özel bir sorun olmadan ilerledi
- Toplam 12 saat içinde tamamlanabilecek ve öğrenilenleri gösterecek final projesi için Easy Forth’un grafik çatısı kullanıldı
- Çizim, animasyon veya oyun yapılabilmesi sağlandı
- Yeni bir oyunu tamamlamak için zaman yetersiz kalabileceğinden, yerleşik Snake oyununu değiştirerek özgün bir sonuç üretmeleri önerildi
- Easy Forth playground kodu ayrı bir sayfaya çıkarıldı; bir yanda kodun, diğer yanda büyük bir grafik alanının görüneceği şekilde genişletildi
- Son derste öğrenciler, Snake kodunda küçük değişiklikler yapmanın bile kuralları ve renkleri değiştirdiğini hızla fark etti
- Büyük çaplı refactoring yapacak düzeyde değillerdi, ancak Forth’tan korkmadan keşfedip değiştirecek kadar alışmışlardı
- Yerleşik grafiklerle nesne çizmenin yolları ve çizgi gibi şekilleri kolayca çizen yeni kelimeler oluşturma örnekleri gösterildi
- Tüm öğrenciler kendi çalışmalarını seçti; çoğu piksel düzeyinde çizimler üretti
- Süreç bittikten sonra da öğrenciler isterlerse denemeye ve öğrenmeye devam edebilsin diye ortam bir süre çevrimiçi tutuldu
Forth eğitimiyle varılan değerlendirmeler
- Forth ilginç bir eğitim diliydi, ancak en iyi seçim olup olmadığı kesin değildi
- Zorlayıcı bir sözdizimi yoktu, fakat birçok programcının soyutlamaların altına gizlediği sistem unsurlarını yeni başlayanların doğrudan düşünmesi gerekiyordu
- Yığın, bilgisayar biliminin temel veri yapılarındandır; ancak ilk eğitimin en başına koymak şart değildir
- Kodun kelime dizisi olarak yazılabilmesi güçlü bir özellikti; daha yüksek seviyeli bileşenlere sahip bağlantılı diller de eğitimde yararlı olabilir
- Factor gibi diller veya tamamen farklı yaklaşımlar da aday olabilir
- Yeniden seçim yapılacak olsa, iç yapılar yerine net ve anında görsel geri bildirime odaklanan bir ortam düşünülebilirdi
- Scratch, düşük seviyeli ayrıntılar olmadan kontrol akışı, değişkenler, fonksiyonlar vb. öğretip sprite’ları kolayca hareket ettirmeyi sağlar
- Belirli programlama dilinin kendisi çok önemli değildir; kısa bir süreçte bile öğrenciler Forth’u etkili biçimde öğrenebildi
- Her öğrenciye uyan paradigma farklı olabileceğinden öğrenme sürecini kusursuz biçimde ince ayarlamak zordur
- Sonuçları hızlı ve tekrar tekrar görüp kendi kendine keşif yapılabilen bir ortam önemlidir
- Öğrenciler, bilgisayar biliminin temel veri yapısını derinlemesine anlamalarını sağlayan düşük seviyeli bir giriş deneyimi edindi
- Dersi yürüten kişi için de, öğrencilerden istenen yinelemeli öğrenmeye benzer şekilde öğretim yöntemini geliştirme fırsatı doğdu
LLM çağında gereken insan odaklı öğrenme
- Programlama olasılıksal otomasyon tarafından daha fazla yönlendirildikçe, insanlara bizzat programlama öğretmek daha önemli hâle gelir
- Programlama bilen kişiler bile LLM’lere bağımlı hâle geldiğinde becerileri körelebilir; baştan öğrenmeyenler ise bu becerileri hiç geliştiremeyebilir
- Yeni beceriler öğrenmek isteyenlerin de saygın kaynaklar yerine LLM’leri kullanma eğilimi artıyor
- LLM’ler hatalı olabilir, kullanıcıyı pohpohlama eğilimi gösterebilir ve bazı vakalarda ruhsal hastalıkları ciddi biçimde kötüleştirebilir
- Dünyayla etkileşim kurmayı öğrenme aşamasındaki çocuklar için bu özellikler daha da tehlikelidir
- Geçmişi ne olursa olsun herkesin, özellikle de çocukların programlama gibi becerileri öğrenebileceği insan odaklı ortamlar sunulmalıdır
- Farklı geçmişlerden gelen insanların zaman ve emek harcayarak bilgilerini paylaşması, ek bilgiyi güvenli biçimde edinmenin yollarını da öğretmesi gerekir
- Profesyonel öğretmen olunmasa bile öğretmeyi öğrenmek ve bilginin insanlar arasında özgürce aktığı alanlar oluşturmak gerekir
1 yorum
Lobste.rs yorumları
Easy Forth iyi bir kaynak gibi görünüyor; her programcının Forth’u denemek için yalnızca 10 dakika ayırmasını öneririm. Öğrenmesi çok basit; hem tanıdık hem de düşünme biçimini sarsan bir dil. Ayrıca üst düzey bir dili sıfırdan hızlıca oluşturmak gerektiğinde uygulanması da kolay
DOES>gibi öğeler öyle değilForth implementasyonu eğlenceliydi ama ne kadar çok kod yazdıysam o kadar az hoşuma gitmeye başladı.
DUP,ROT,SWAPgibi gürültü kelimeleri akışı takip etmeyi zorlaştırıyor; ayrıca pek tercih etmediğim global değişken kullanımını da teşvik etme eğilimindehttps://archive.ph/0ZOVa