1 puan yazan GN⁺ 6 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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 3 girilip ardından . . . ile çıktı alındığında, en son giren öğeden başlayarak 3 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ığına 14 koyan işlemdir
    • 2 3 *, iki değerin çarpımı olan 6yı 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
  • 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

 
GN⁺ 6 시간 전
Lobste.rs yorumları
  • Çocukları ve gençleri ana akım dışı bilişim araçları ve dilleriyle tanıştırmak, bilişim alanının genişliğini ve problem çözmede kullanılabilecek farklı yaklaşımları öğretmek için etkili olabilir
  • Forth’u çok seviyorum ama eğitim amaçlı en iyi seçenek olmayabilir. Yine de bir programcı için çeşitli programlama paradigmalarıyla tanışmak önemlidir
    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
    • Forth’un büyük kısmı basit olsa da DOES> gibi öğeler öyle değil
      Forth implementasyonu eğlenceliydi ama ne kadar çok kod yazdıysam o kadar az hoşuma gitmeye başladı. DUP, ROT, SWAP gibi 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ğiliminde
  • İlginç programlama dilleri öğrenmeyi sevdiğimi söyleyince bir arkadaşım Forth’u önerdi; gerçekten öğrenmeyi düşünüyorum
  • Mevcut sayfaya erişemiyorsanız şu arşivi kullanabilirsiniz
    https://archive.ph/0ZOVa
    • Aslında sayfa kapanmamış; ISP tarafından engelleniyormuş