HN 日本語サマリー

← 一覧へ戻る
キャリア

子供たちにForthを教える

Teaching Kids Forth – Anna Liberty (gracefulliberty.com)

88 pointsby rbanffy36 コメント

要約

PythonやScratchが主流の中、筆者は中高生にプログラミングを教える機会に、1970年代のスタック指向の連結型言語であるForthを選択しました。限られた時間と基本的な概念の習得を重視し、構文よりもスタックの概念を紙皿を使った実践的な演習で教え、最終的には生徒がForth環境で独自のグラフィックアートを作成できるようにしました。

全文翻訳

子供たちにForthを教える 2026-04-14 · 11分 · #コンピューティング Forthは、子供たちにプログラミングを教えるために一般的ではありません。Pythonのようなスクリプト言語やScratchのようなビジュアル環境がはるかに人気のある選択肢です。しかし、私が中高生にプログラミングを紹介する機会を得たとき、私は1970年代のスタック指向の連結型言語を選択しました。この機会に私は狂喜しました。私は、人々が毎日持ち歩くデバイスに閉じ込められた可能性を、もう少しコントロールできるようにすることに情熱を注いでいます。人々がコンピューター全般、特に独自のソフトウェアを作成することについてより多くを知ると、世界が開かれます。これは、おそらくそれ以外では決して発見しなかったであろう人々のために、その世界への扉を開く機会を与えてくれました。 以前にも個人にプログラミングを教えたことはありましたが、教室環境で教えるのは初めてでした。私は教えることについてほとんど何も知らない状態から、レッスンプラン、カリキュラム、デジタル学習環境を含む独自のカリキュラムを設計しました。 なぜForthなのか? 私はどのプログラミング言語でも教えることができたでしょう。PythonやScratchを選んだかもしれませんが、私はあまり選ばれない道を探求し、見過ごされている宝石を見つけたいと思いました。教える時間が限られており、より基本的な概念を教えたかったため、構文を教えることを避けたいと思いました。Pythonはコードを理解している人にとっては疑似コードとして意味をなしますが、新しい学習者にとってはほとんど理解不能であり、これは以前のマンツーマンでのプログラミング指導で発見したことです。私はForthかHaskellを教えたいと思いました。 Forthは連結型言語であるため魅力的でした。命令を記述すると、すべてが順番に実行されます。スタックが何であるかを理解していれば、Forthプログラムを書くことができます。Haskellは、学生が数学で変数や関数について考える方法を教えられている方法とよく統合されるため魅力的でした。プログラミングでは、変数は数学の代数定義ではなく、任意の値を保持できる箱であるということに、多くの新しいプログラマーが混乱しているのを見てきました。 最終的にForthを選んだ理由は2つあります。第一に、私が学生のために準備できるカスタム学習環境に統合するのが容易でした。第二に、クラスでの最終デモのために、手続き型プログラミングの方が関数型プログラミングよりも概念化しやすいと考えました。副次的な利点として、半ば知られていない言語であるForthを使用することで、以前にプログラミングをしていた学生でも、新しい学習者を疎外することなく、経験から何かを学ぶことが保証されました。 カリキュラムの設計 カリキュラムを設計するにあたり、時間が限られていることを知っていました。週に1回、1時間ずつのセッションが12回ありました。また、学生は私のクラス外の生活を持っていたため、宿題を割り当てても、彼らが完了する可能性は低いことも知っていました。具体的な学習成果は、学生がForth環境で独自の芸術作品を作成することでした。これは、簡単な描画からアニメーション、ゲームまで何でも構いません。コース終了後も彼らが持っていられる、目に見える何かを持ってほしいと思いました。トピックについて多くの技術的な詳細を学び、ほとんど何も得られなかったと感じるのは落胆する可能性があります。学生が自分で書いたコードを自分のコンピューターで実行できることが重要でした。学生はさまざまなオペレーティングシステムを使用している可能性があり、そのうちのいくつかはサードパーティ製ソフトウェアをインストールできない可能性があるため、それを機能させるために何もダウンロードまたはインストールする必要がないことは二重に重要でした。 私たちの学習環境の最初の選択肢は、Rustで独自のForthをゼロから書き、WASMでコースウェブサイトに埋め込むことでした。残念ながら、私の実装のバグを修正するのに意図したよりも時間がかかりました。そこで方針を転換し、Nick MorganのEasy ForthをカリキュラムとForthインタープリターの両方として使用することを選択しました。各レッスンについて、スライドとレッスンプランを作成し、学生がアクセスできるオンラインポータルにアップロードしました。これにはEasy Forthのコピーが含まれていました。 コンピューティングの紹介 次に、実際のレッスンを学生と進める時間になりました。ラップトップを大型テレビに接続してスライドを表示し、紹介講義を開始しました。コンピューティングの歴史とコンピューターとは何かを説明することから始めました。私のお気に入りの部分の1つは、さまざまなデバイスを見せて、それらがコンピューターかどうかを尋ねることでした。彼らは、私がそろばんを見せてコンピューターだと言ったとき、最初は困惑しました。私たちの作業定義は「数字を計算するものは何でも」でした。彼らはすぐに、自分自身を含むほとんど何でもコンピューターになり得ることに気づきました。これはコンピューターです! コンピューターについての彼らの考えを壊し、期待を設定した後、私は特にForthについて教え始めました。それがどこで使用されているか、そしてその組み込みアプリケーションについて説明しました。基本的なことが終わったら、次のステップはカリキュラムに進み、Forthを深く掘り下げることでした。しかし、Easy Forthは読者が少なくとも1つのプログラミング言語を知っており、スタックベースのデータ構造について知っていることを前提としています。ここでは全くそうではありませんでした。そのギャップを埋めるのが私の仕事でした。 スタックとは? コンピューターに触れる前に、Forthの基盤となるデータ構造、つまりデータスタックを視覚化することから始めなければなりませんでした。初歩的なコンピューターサイエンス教育を受けた人なら誰でもデータスタックとその操作が何であるかを理解しますが、通常は新しい学習者に最初に紹介されるものではありません。そこで、私は紙皿を使いました。 Forthでは、空白で区切られた数字を入力すると、それらはスタックに追加されます。たとえば、これはスタックに1、2、3を追加します:1 2 3 これらの数字を出力する場合、例えば . . . を使用すると、出力されるテキストは 3 2 1 になります。これは、スタックが後入れ先出し(LIFO)データ構造であるためです。スタックにアイテムを「プッシュ」(一番上に置く)するか、スタックからアイテムを「ポップ」(一番上から引き出す)ことができます。ほとんどの場合、より複雑な操作はそれらの操作に基づいて実装されます。 これを表現するために、すべての学生に紙皿の山を与えました。次に、それらの皿を使って特定のForth操作を実行するように指示しました。スタックに数値をプッシュするように指示された場合、彼らは数値を皿に書き込み、スタックの一番上に置きました。スタックの上の2つの数値を加算するように指示された場合、それらを取り除き、加算し、新しい数値をスタックにプッシュしました。 スタックの一番上に7と6をプッシュし、次にスタックの上の2つのアイテムを加算して、結果を一番上にプッシュします。結果は13になります。 8 6 + スタックの一番上に2と3をプッシュし、次にスタックの上の2つのアイテムを乗算して、結果を一番上にプッシュします。結果は6になります。 2 3 * 彼らに多くの操作を実行するように指示し、彼らが何をしているのか慣れるまで続けました。彼らはForthインタープリターとして機能していました。コンピューターは単にこの作業を自動的に行っているだけです。これにより、システムが何をしているのかについて、より深い理解が得られました。その後に初めて、コンピューターが彼らのために作業を行いました。 Forthを進める スタックが記憶に残ったところで、私たちは進み、Easy Forthのレッスンを週ごとに進め、コース終了までに完了するようにペースを保ちました。問題なく進みました。概念を説明し、彼らは演習を行い、質問があれば答えました。一緒に過ごせる時間は12時間しかなかったため、最終プロジェクトは小さくなければなりませんでしたが、コース全体で構築された知識を示すものでなければなりませんでした。Easy Forthで作成されたグラフィックスフレームワークを使用して、あらゆる種類の独自の芸術作品を作成することにしました。絵、アニメーション、またはゲームにすることができました。ゲームを作成する時間があるとはあまり信じていませんでしたが、組み込みのヘビゲームをいじってユニークなものを作成するように奨励されました。 EasyForth Snake Demo これを容易にするために、Easy Forthプレイグラウンドのコードを抽出し、独自のページにしました。小さなボ