3 puan yazan GN⁺ 2024-07-25 | 2 yorum | WhatsApp'ta paylaş
  • Çocukların cat, grep, tail, head, wc, sort, uniq gibi temel UNIX komutlarını kartlarla birbirine bağlayarak pipe kombinasyonlarını öğrendiği bir oyun
  • Ebeveynin temel komutları bilmesi ve gerçek çalıştırmayı göstermesi bekleniyor; UNIX ortamı yoksa tarayıcıda jslinux kullanılabilir
  • Oyuncular görev kartının hedefine uygun bir komut zinciri kurar; örnek olarak cat 03.txt | sort | uniq -c | sort -n | tail -1 gibi bir pipeline kullanılır
  • Turlarda en küçük oyuncu en kısa zincir veya en uzun zincir kazanma biçimini seçer; görevi ilk tamamlayan oyuncu puan alır
  • Kart PDF’i ve kodu açık olarak sunulmuş, ayrıca daha zor Process Substitution genişleme paketi de sağlanıyor

Kart oyununun amacı ve gerekenler

  • UNIX Pipe Card Game, çocuklara UNIX komutlarını pipe ile birleştirmeyi öğreten bir kart oyunudur
  • Temel oyunda ele alınan komutlar cat, grep, tail, head, wc, sort, uniq’tir
  • Ebeveyn komutları gerçek bir bilgisayarda çalıştırıp göstermelidir; UNIX sistemi yoksa tarayıcıda jslinux kullanılabilir
  • Kendi çıktınızı almak için materyaller ve kod açık olarak yayımlanmış
  • Daha zor sürüm olan UNIX Pipe Game - Process Substitution genişleme paketi, process substitution ile paste, tr, cut, bc komutlarını ele alır

Tur akışı ve komut zinciri örneği

  • Örnek turun hedefi dosyadaki en sık görülen satırı yazdırmaktır
    • cat ile dosya okunur
    • sort ile satırlar sıralanır
    • uniq -c ile yinelenen satırların sayısı sayılır
    • sort -n ile sayıya göre sıralama uygulanır
    • tail -1 ile son satır yazdırılır
  • Bu hedefi çözen örnek komut zinciri şöyledir
    • cat 03.txt | sort | uniq -c | sort -n | tail -1
  • Temel oynanış şu sırayla ilerler
    • En küçük oyuncu turun biçimini seçer
      • Görevi tamamlayan en küçük pipe zincirini kuran kişi kazanır
      • Görevi tamamlayan en büyük pipe zincirini kuran kişi kazanır
    • En küçük oyuncu görev kartlarından bir görev seçer; aynı görev iki kez seçilemez
    • Kartlar karıştırılır ve masanın üzerine kapalı olarak konur
    • Her oyuncu saat yönünde destenin en üstündeki kartı çeker ve görevi tamamlamaya çalışır
    • Görevi ilk tamamlayan oyuncu puan alır
    • Artık görev kalmadığında oyun biter

Görev kartlarının istediği problemler

  • Görev örnekleri, satır seçme, dize arama, sayı sayma ve çıktı kontrolü gibi UNIX komut kombinasyonlarıyla çözülebilecek hedeflerden oluşur
    • İkinci satırı yazdırma
    • Sondan ikinci satırı yazdırma
      1. satırı yazdırma
    • En sık görülen satırı yazdırma
    • En nadir görülen satırı yazdırma
    • "rises" içeren satırların sayısını sayma
    • W içeren ilk satırı yazdırma
    • "in" içeren satırların sayısını sayma
    • Rastgele iki satır gösterme
    • Son iki satırdaki kelime sayısını sayma
      1. ve 8. satırları yazdırma
    • ! içeren satırların sayısını sayma
    • ! içermeyen satırların sayısını sayma
    • Hiçbir şey yazdırmayan bir komut zinciri oluşturma

2 yorum

 
GN⁺ 2024-07-25
Hacker News yorumları
  • Kızıma öğretmek için bu kart destelerini (https://punkx.org/) yaptım ve şimdiye kadar oldukça işe yaradılar
    Özellikle Unix pipe’ları, 4917 makine dili (https://punkx.org/4917/) ve pointer destesi (https://punkx.org/c-pointer-game/) iyiydi; Python destesinden ise sadece yaklaşık 10 kart kullandık
    RISC-V assembly ile buffer overflow’u ele alan şu masa oyununu https://punkx.org/overflow/ da beğenebilirsiniz; çocuğun seviyesine göre goto ile oynanan yılanlar ve merdivenler oyunu https://punkx.org/overflow/build/snakes-and-ladders.pdf de mümkün
    Çocuğunuz varsa https://punkx.org/panic/ çıktısını almanızı da öneririm. Bir poker kartına sığan şakalar içeriyor; örneğin her 30 saniyede bir rastgele backspace ya da space tuşuna basmak veya Minecraft açıksa rastgele W tuşuna basmak gibi
    Birçok desteyi öğretmenlere ve okullara bağışlıyorum; ilgileniyorsanız e-posta gönderebilirsiniz
    Not: Bir hafta daha London’da olacağım, bu yüzden şimdi sipariş verirseniz kargo gecikecek; ama karşılığında pakete 1-2 deste daha ekleyip göndereceğim
    Ayrıca Unix pipe genişletme destesi tamamen process substitution’dan oluşuyor; çocuklar için faydalı olduğunu düşünmüyorum ama bulmacalar bence fena değil

    • Eski yorumları okumayı sevenler için birkaç yıl önceki Show HN başlığı da var: https://news.ycombinator.com/item?id=33222687
    • Gerçekten harika
      Gözüme çarpan bir şey var: oyunda “ikinci satırı yazdır”, “yedinci satırı yazdır” gibi görevler var ama iki satır da boş. Bu yüzden teknik olarak hiçbir şeyle eşleşmeyen grep de doğru cevap olabilir
    • Daha önce satın almış biri olarak, https://www.designhacks.co/products/cognitive-bias-codex-pos... temel alınarak bir bilişsel önyargı destesi de yapılmasını rica etmek isterim
    • Bu gece yeniden çalışmam bittikten sonra birkaç tane sipariş edeceğim
      Merak ediyorum, baskı işini nasıl hallediyorsunuz? Kendiniz mi yapıyorsunuz, isteğe bağlı baskı mı, yoksa toplu sipariş verip gönderimi kendiniz mi yapıyorsunuz? Küçük ölçekli fiziksel ürün satışının nasıl yürütüldüğü her zaman ilgimi çekiyor
    • Birkaç ay önce satışta olan destelerin hepsinden birer tane sipariş ettim
      Kızlarım henüz kullanmak için çok küçük ama destelerin harika olduğunu düşünüyorum ve yaklaşık 8 yıl sonra çıkarıp kullanacağımız günü sabırsızlıkla bekliyorum
  • Günümüzde çocukların böyle şeyleri gerçekten anlayıp anlayamayacağını merak ediyorum
    Çocuğum yok ve çocukların çevresinde bulunma durumum da yok; bunu samimi bir soru olarak kabul ederseniz sevinirim

    • Bence çocuğa ve ebeveyne göre çok değişiyor. Kızıma 10 yaşından beri öğretiyorum ve her gün onunla bir şey yapmaya çalışıyorum. Süreci buradan görebilirsiniz: https://github.com/jackdoe/programming-for-kids/blob/master/...
      Zor olan, kızımın dikkati için Snapchat ve Google/Meta ile yarışmak zorunda olmam. Okul da epey yoruyor; Snapchat’in streak’leri gerçekten sinir bozucu. Arkadaşı ne kadar çoksa sürdürmesi gereken streak de o kadar çok oluyor; günde yaklaşık 400 mesaj göndermesi gerekiyor ve bunun sonu yok
      Kızıma, 100.000 geliştiricinin, psikoloğun, ürün yöneticisinin vb. her gün işe gidip onun dikkatinden maksimum değeri nasıl çıkaracaklarını düşündüğünü öğretiyorum. Bu yüzden “algoritmanın” ona ne yaptırdığının sürekli farkında olması gerektiğini anlatıyorum
      Unix pipe’larını oldukça hızlı kavradı ama sık kullanmıyor. Yine de bir programın başka bir programın çıktısını okuduğu fikrini anladı; komut satırını anlaması da o kadar zor olmadı
      Ancak birkaç yöntem kullandım. Örneğin kızımın Windows PC’sinde shell’i explorer yerine cmd.exe olarak değiştirip açılışta doğrudan komut isteminin gelmesini sağladım; onun keşfetmesine ve kendisinin düzeltmesine izin verdim. Dosya sisteminde dosyaları bulmak için dir, cd vb. kullandığı hazine avları da hazırladım; https://overthewire.org/wargames/bandit/ adresindeki Bandit oyununda ise her seviye geçişinde Robux ile ödüllendirdim
      Bilgisayarların nasıl çalıştığını ve bilgisayara istediği şeyi yaptırmayı öğretmek istiyorum. Register’ın ne olduğu, instruction’ın ne olduğu, program ve process’in ne olduğu gibi; yani temellerin temeli
      Bu süreçte sorunları parçalara ayırmayı, düşünmeyi ve hepsinden önemlisi öğrenmeyi de öğretiyorum. Klavyeye basınca ekranda harflerin belirmesi ya da ChatGPT’nin bir sonraki kelimeyi tahmin etmesi arasında bir gizem kalmasın diye, şeylerin özünü öğretmeye çalışıyorum. Şu anda 3 nöronlu bir yinelemeli sinir ağı masa oyunu yapıyorum; saymayı öğretmeye yönelik bir oyun: https://punkx.org/move-37/rnn.pdf
      Sonuçta bir çocuğa ne öğrettiğinizin o kadar önemli olup olmadığından pek emin değilim
    • Çocukları bilmem ama iOS olmayan bilgi işlem cihazlarını kelimenin tam anlamıyla kullanmayı bilmeyen üniversite öğrencileri gördüm
      Derste arkadaşlarım dosya, klasör gibi kavramları en baştan açıklamak zorunda kalmıştı
      Açıkçası bunun o kadar kötü olduğunu düşünmüyorum. Bilgisayarlar da otomobillere benzer bir yola girecek gibi. Çoğu insan, nesneyi kullanmak için gereken en temel şeyleri bilecek; daha derin bilgi ise meraklılara ve uzmanlara kalacak
      Bu yüzden bilgisayarların içi daha karmaşık hale gelse de, genel kullanım biçimleri giderek azalacak gibi görünüyor
  • Oynamak istiyorsam https://exaequos.com üzerindeki pipe işlemeyi mutlaka düzeltmem gerekecek

  • awk, perl vb. kullanarak büyümüş biriyle en az boru sayısı oyununu oynarsanız zorluk seviyesi hemen artar

    • Bunun nedeni puanlama yönteminin boru sayısını sayması. Karakter sayısını saymak daha iyi olabilir
      Ya da oyunun amacına uygun şekilde, her aracı asıl amacıyla öğrenerek oynanabilir
      Hızlı, tek seferlik işlemlerde awk/sed çok kullanılır ve genelde benzer bir düşünme modeliyle ele alınır: bir girdi akışı oluşturmak, sed ile veriyi kayıt biçimine getirmek, awk ile kayıtları işlemek, ardından sort/uniq gibi yöntemlerle çıktıyı düzenlemek gibi
      Çoğu durumda sed ve awk birbirinin yerine geçebilir, ama böyle yapmak zihinde canlandırmayı daha uzun sürdürür ve yeniden kullanımı da zorlaştırır
  • Kurallarda görevi önce tamamlayan oyuncunun raundu kazandığı yazıyor; en uzun boru zinciri formatının nasıl işlediğini merak ediyorum

    • Biz kartlar bitene kadar oynadık
  • uuoc ödülü verenler yakında gelir gibi
    Başa cat koymak, boru hattının başına bir şeyler eklemeyi basitleştiriyor

  • Doğrudan yazdırılabilmesi gerçekten harika
    Şu anda ofis yazıcısından çıktı alıp almamayı düşünüyorum

  • Bu oyunun iyi yanı, UUoC bilen kişinin kazanması
    cat file.txt | tr a-z A-Z | sort kaybedendir, tr < file.txt a-z A-Z | sort kazanandır

  • Kanada kargo ücretinin $19 olması biraz fazla gibi
    Greater Vancouver’da birlikte toplu sipariş vermek isteyen var mı merak ediyorum

    • Üzgünüm :( PostNL kullanıyorum ve aslında daha pahalı; AB dışına gönderimlerde çoğunlukla zarar ediyorum
      Yine de her destenin PDF’i var, yani yerel bir matbaada kendiniz bastırabilirsiniz. Kutuyu bastırmazsanız daha ucuz olur
      Sadece A4 kâğıda basıp makasla kesmek de büyük bir sorun değil. Hatta birine kalem ve kâğıtla anlatırken işe yarayabiliyor
      Bu durumda kutu https://punkx.org/unix-pipe-game/unix-pipe-box.pdf, kartlar ise https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
    • Tamamen dijital varlıkları Avrupa’da kâğıda basıp sonra gemiye yükleyerek Kanada’ya yavaş yavaş göndermek oldukça tuhaf bir fikir
    • Takip edilebilir kıtalar arası posta için 12 avro oldukça standart bir fiyat
    • İstenirse kendiniz bastırabilirsiniz; bu fiyata Avrupa’dan gönderim de dahil olunca neredeyse hiç kâr kalmadığı da açık görünüyor
 
unsure4000 2024-07-25

8.000₩ gibi görünüyor, elinizde bir kopya varsa yorumlarınızı paylaşır mısınız?