3 ポイント 投稿者 GN⁺ 2024-07-25 | 2件のコメント | WhatsAppで共有
  • 子どもたちが catgreptailheadwcsortuniq といった基本的な UNIX コマンドをカードとしてつなぎ合わせながら、パイプの組み合わせを学ぶゲーム
  • 親が基本コマンドを理解し、実際の実行例を見せることが前提で、UNIX 環境がなければブラウザで jslinux を使える
  • プレイヤーはタスクカードの目標に合わせてコマンドチェーンを作り、例として cat 03.txt | sort | uniq -c | sort -n | tail -1 のようなパイプラインを使う
  • ラウンドでは最年少のプレイヤーが 最短チェーン または 最長チェーン で勝敗を決める方式を選び、タスクを最初に完成させたプレイヤーが得点する仕組み
  • カードの PDF とコードが公開されており、自分で印刷して使えるほか、より難しい Process Substitution 拡張パックも提供されている

カードゲームの目的と準備物

  • UNIX Pipe Card Game は、子どもたちに UNIX コマンドをパイプで組み合わせる方法を教える カードゲーム
  • 基本ゲームで扱うコマンドは catgreptailheadwcsortuniq
  • 親はコマンドを実際のコンピュータで実行して見せる必要があり、UNIX システムがなければブラウザで jslinux を使える
  • 自分で印刷するための資料とコードは公開されている
  • より難しいバージョンである UNIX Pipe Game - Process Substitution 拡張パックでは、プロセス置換と pastetrcutbc を扱う

ラウンドの進行とコマンドチェーンの例

  • 例のラウンドの目標は、ファイル内で最もよく出現する行を出力すること
    • cat でファイルを読む
    • sort で行を並べ替える
    • uniq -c で重複行の数を数える
    • sort -n で数値基準の並べ替えを適用する
    • tail -1 で最後の行を出力する
  • この目標を解くコマンドチェーンの例は次のとおり
    • cat 03.txt | sort | uniq -c | sort -n | tail -1
  • 基本的な進行方法は次の順序
    • 最年少のプレイヤーがラウンド形式を選ぶ
      • タスクを完成させる 最短のパイプチェーン を作った人が勝つ
      • タスクを完成させる 最長のパイプチェーン を作った人が勝つ
    • 最年少のプレイヤーがタスクカードからタスクを 1 つ選び、同じタスクは 2 回選べない
    • カードをシャッフルしてテーブルの上に裏向きで置く
    • 各プレイヤーが時計回りにデッキの一番上のカードを引き、タスク完成を目指す
    • タスクを最初に完成させたプレイヤーが得点する
    • もうタスクがなくなったらゲーム終了

タスクカードが求める問題

  • タスクの例は、行の選択、文字列検索、個数カウント、出力制御のように、UNIX コマンドの組み合わせで解ける目標で構成されている
    • 2 行目を出力
    • 下から 2 行目を出力
    • 7 行目を出力
    • 最もよく出現する行を出力
    • 最もまれな行を出力
    • "rises" を含む行の数を数える
    • W を含む最初の行を出力
    • "in" を含む行の数を数える
    • ランダムな 2 行を表示
    • 最後の 2 行の単語数を数える
    • 7 行目と 8 行目を出力
    • ! を含む行の数を数える
    • ! を含まない行の数を数える
    • 何も出力しないコマンドチェーンを作る

2件のコメント

 
GN⁺ 2024-07-25
Hacker Newsのコメント
  • 娘に教えるためにこのカードデッキ群([https://punkx.org/](https://punkx.org/))を作ったが、今のところかなり効果がある。
    特に Unixパイプ、4917機械語([https://punkx.org/4917/](https://punkx.org/4917/))、ポインターデッキ([https://punkx.org/c-pointer-game/](https://punkx.org/c-pointer-game/))が良く、Pythonデッキは10枚ほどしか使っていない。
    RISC-Vアセンブリでバッファオーバーフローを扱うボードゲーム https://punkx.org/overflow/ も気に入るかもしれないし、子どものレベルによってはgotoで遊ぶ蛇と梯子ゲーム https://punkx.org/overflow/build/snakes-and-ladders.pdf もできる。
    子どもがいるなら https://punkx.org/panic/ も印刷してみることをおすすめする。ポーカーカード1枚に収まるいたずらが入っていて、たとえば30秒ごとにランダムにバックスペースやスペースを押したり、Minecraftが開いていればWをランダムに押したりする、といったもの。
    多くのデッキを先生や学校に寄付しているので、興味があればメールを送ればよい。
    追伸:これからあと1週間ロンドンにいるので、今注文すると配送は遅れるが、その代わりパッケージにデッキを1〜2個多く入れて送る。
    ちなみにUnixパイプ拡張デッキはプロセス置換ばかりで、子どもたちに役立つとは思わないが、パズルとしては悪くないと思う。

    • 昔のコメントを読むのが好きな人向けには、数年前の Show HNスレッド もある: https://news.ycombinator.com/item?id=33222687
    • 本当に素晴らしい。
      ひとつ気になったのは、ゲームに「2行目を出力」「7行目を出力」のような課題があるが、どちらの行も空だという点。そのため厳密には、何にもマッチしない grep でも正解になり得る。
    • 以前の購入者として、https://www.designhacks.co/products/cognitive-bias-codex-pos... をベースにした 認知バイアスデッキ も作ってほしいとお願いしたい。
    • 今夜リワークが終わったらいくつか注文するつもり。
      気になるのだが、印刷はどうしているのか知りたい。自作なのか、オンデマンド印刷なのか、大量発注して自分で発送しているのか。小規模な物理製品の販売をどう運営しているのかは、いつも興味深い。
    • 数か月前、販売中のデッキを全部1つずつ注文した。
      娘たちはまだ幼すぎて使うには早いが、デッキは素晴らしいと思うし、8年後くらいに取り出して使う日を楽しみにしている。
  • 最近の子どもたちがこういうものを実際に理解できるのか気になる。
    子どもはいないし、子どもたちの周りにいる機会もないので、純粋な質問として受け取ってほしい。

    • 子どもと親によってかなり違うと思う。娘が10歳のときから教えていて、毎日何かを一緒にやるようにしている。進捗はここで見られる: https://github.com/jackdoe/programming-for-kids/blob/master/...
      難しいのは、娘の注意をめぐってSnapchatやGoogle/Metaと競争しなければならないこと。学校もかなり疲れさせるし、Snapchatの ストリーク は本当に厄介だ。友だちが多いほど維持すべきストリークが増え、1日に400通くらいメッセージを送らなければならず、終わりがない。
      娘には、10万人の開発者、心理学者、プロダクト責任者などが毎日出勤して、娘の注意から最大限の価値を引き出す方法を考えているのだと教えている。だから「アルゴリズム」が自分に何をさせようとしているのか、常に意識しなければならないと伝えている。
      Unixパイプはかなり早く理解したが、頻繁には使っていない。それでも、あるプログラムが別のプログラムの出力を読むという概念はつかんだし、コマンドラインを理解するのもそれほど難しくはなかった。
      ただし、いくつか仕掛けは使った。たとえば娘のWindows PCでシェルを explorer ではなく cmd.exe に変えて、起動するとすぐコマンドプロンプトが出るようにし、娘に探索して自分で直させた。ファイルシステムで dircd などを使ってファイルを探す宝探しも作ったし、https://overthewire.org/wargames/bandit/ のBanditゲームでは、レベルをクリアするたびにRobuxで報酬を出した。
      コンピューターがどう動作し、コンピューターに望むことをさせる方法を教えたい。レジスターとは何か、命令とは何か、プログラムとプロセスとは何かまで、いわば基本中の基本だ。
      その過程で、問題を分割する方法、考え方、何より学び方も一緒に教えている。キーボードを押すと画面に文字が現れる過程や、ChatGPTが次の単語を予測する仕組みのあいだに謎が残らないよう、物事の核心を教えようとしている。今は3ニューロンの再帰型ニューラルネットワークのボードゲームを作っていて、数を数えるよう教えるゲームだ: https://punkx.org/move-37/rnn.pdf
      結局、子どもに何を教えるかがそこまで重要なのかは、よく分からない。
    • 子どもたちのことは分からないが、iOSではないコンピューティングデバイスを文字どおり使えない大学生は見たことがある。
      授業で同僚たちは ファイル やフォルダーといった概念から説明しなければならなかった。
      正直、それほど悪いことだとは思わない。コンピューターも自動車と似た道をたどる気がする。大半の人は物を操作するために必要なごく基本的なことだけを知り、より深い知識は愛好家や専門家に残ることになる。
      だからコンピューターの内部はさらに複雑になっても、一般的な使い方はだんだん少なくなっていきそうだ。
  • ゲームをするには https://exaequos.comパイプ処理 をぜひ直さないといけない。

  • awkperl などを使って育った人と最小パイプ数ゲームをすると、一気に難易度が上がる

    • それは得点計算方式がパイプの数を数えるから。文字数を数えるほうがよいかもしれない
      あるいはゲームの趣旨に合わせて、各ツールを本来の目的どおりに学びながらプレイすればよい
      すばやい一回限りの処理には awk/sed をよく使い、たいていは似た思考モデルで処理する。入力ストリームを作り、sed でデータをレコード形式にし、awk でレコードを処理してから、sort/uniq のような方法で出力を整える、という形
      多くの場合 sedawk は互いに代替できるが、そうすると頭の中で組み立てるのに時間がかかり、再利用もしにくくなる
  • ルールでは課題を先に完了したプレイヤーがラウンドに勝つとあるが、最長のパイプチェーン形式はどう動くのか気になる

    • 私たちはカードがなくなるまでプレイした
  • uuoc 賞をくれる人たちがそろそろ来そう
    先頭に cat を置くと、パイプラインの前の部分に何かを追加するのが簡単になる

  • 自分で印刷できる点が本当にいい
    今すぐオフィスのプリンターで印刷するか迷っている

  • このゲームの良いところは、UUoC を知っている人が勝てること
    cat file.txt | tr a-z A-Z | sort は敗者で、tr < file.txt a-z A-Z | sort は勝者

  • カナダへの送料が $19 なのは少し高すぎる気がする
    グレーター・バンクーバーで共同注文する人がいるか気になる

    • ごめんなさい :( PostNL を使っているけれど実際にはもっと高く、EU 圏外への配送はほとんど赤字になる
      それでも各デッキには PDF があるので、近所の印刷所で自分で印刷できる。箱を印刷しなければもっと安くなるはず
      普通に A4 用紙に印刷してハサミで切っても大きな問題はない。むしろ誰かにペンと紙で説明するときに役立つこともある
      この場合、箱は https://punkx.org/unix-pipe-game/unix-pipe-box.pdf、カードは https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
    • 完全にデジタルなアセットをヨーロッパで紙に印刷してから、船に載せてカナダまでゆっくり送るというのは、かなり奇妙な発想だ
    • 追跡可能な大陸間郵便で12ユーロなら、かなり標準的な価格だ
    • 望めば自分で印刷できるし、この価格でヨーロッパから配送まですると、ほとんど利益が残らないことも明らかに見える
 
unsure4000 2024-07-25

8,000₩ですね。お持ちの方がいれば感想をお願いします