Unix Pipe Kart Oyunu
(punkx.org)- Çocukların
cat,grep,tail,head,wc,sort,uniqgibi 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 -1gibi 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ış
- unix-pipe-cards.pdf: kart PDF’i
- unix-pipe-box.pdf: kutu PDF’i
- unix-pipe-game: kod
- Daha zor sürüm olan UNIX Pipe Game - Process Substitution genişleme paketi, process substitution ile
paste,tr,cut,bckomutları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
catile dosya okunursortile satırlar sıralanıruniq -cile yinelenen satırların sayısı sayılırsort -nile sayıya göre sıralama uygulanırtail -1ile 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
- En küçük oyuncu turun biçimini seçer
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
-
- 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ı saymaWiç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
-
- 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
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
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
grepde doğru cevap olabilirMerak 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
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
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
exploreryerinecmd.exeolarak 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çindir,cdvb. kullandığı hazine avları da hazırladım; https://overthewire.org/wargames/bandit/ adresindeki Bandit oyununda ise her seviye geçişinde Robux ile ödüllendirdimBilgisayarları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
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,perlvb. kullanarak büyümüş biriyle en az boru sayısı oyununu oynarsanız zorluk seviyesi hemen artarYa 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,sedile veriyi kayıt biçimine getirmek,awkile kayıtları işlemek, ardındansort/uniqgibi yöntemlerle çıktıyı düzenlemek gibiÇoğu durumda
sedveawkbirbirinin yerine geçebilir, ama böyle yapmak zihinde canlandırmayı daha uzun sürdürür ve yeniden kullanımı da zorlaştırırKurallarda görevi önce tamamlayan oyuncunun raundu kazandığı yazıyor; en uzun boru zinciri formatının nasıl işlediğini merak ediyorum
uuocödülü verenler yakında gelir gibiBaşa
catkoymak, boru hattının başına bir şeyler eklemeyi basitleştiriyorDoğ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 | sortkaybedendir,tr < file.txt a-z A-Z | sortkazanandırKanada kargo ücretinin $19 olması biraz fazla gibi
Greater Vancouver’da birlikte toplu sipariş vermek isteyen var mı merak 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
8.000₩ gibi görünüyor, elinizde bir kopya varsa yorumlarınızı paylaşır mısınız?