カテゴリー
プログラミング言語

EndBASIC – Rustで書かれたBASICインタプリタ+環境

フリオ・メリノさん(Julio Merino)によるBASIC処理系プロジェクト EndBASICは、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。

EndBASIC サイトトップ

BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いたLocomotive BASICや、マイクロソフトのQuickBASIC を意識したものとなっているそう。

Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、ブラウザ上でも動く環境が公開されています。

Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。

環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。

EndBASIC のサンプルコード

BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。そのうち実装するかもということですが、分岐とループ命令でおおかたは問題ないかと思います。

面白いのはクラウド対応機能で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。

Raspberry PI で動かした時はGPIOにアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。

今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。

via Hacker News

カテゴリー
ゲーム

ROWS & TABLES – SQLカードゲーム

ROWS & TABLES は、SQL をテーマにしたカードゲームです。

ゲームに含まれるカードは大きくわけて4種類。Insert, Delete, Select, Update です。

各プレイヤーに3枚の手札を配り、時計回りにプレイします。自分のターンになったらまず山札から一枚引いて、場に出すカードを選びます。

Insertカードの片面はデータになっていて、トラとかテディベアとかのentry と、所有者 owner 、カテゴリー category が記載されています。

自分の場にデータカードを Insert で増やしていきます。

Select カードを使うと、category で指定した場のデータカードで条件にあったものを、場から下げて獲得することができます。一旦獲得してしまったデータカードは、今後他のプレイヤーから奪われることがありません。

他の2種類のカードは、他のプレイヤーとのやりとりになります。

Delete カードでは、カラムの条件を指定することで場に出ているカードを廃棄させます。うまく他プレイヤーが多く出している条件を指定することで、自分が有利になるわけですね。

Update カードは、データの 内容を where で指定し、owner を「自分」に変更することで、他人が場に出したデータを奪うことができます。相手のデータを減らして自分につけることができるので、効果は大きそうです。

これらのカードを使い、場でデータを集め、うまく Select で手中に確保し、最後にすべてのカードを使った後に場と獲得したカードの枚数が一番多い人が勝利者となります。

ゲームの解説動画はこちら。

このカードゲームは1セット $15(1650円) 、4セットだと$40(4400円) ということです。

SQL の勉強の始めに、このようなカードゲームで導入をするのもいいかもしれませんね。

カテゴリー
ゲーム

Oh My Git! – git の使い方を学べるゲーム

Oh My Git! は、バージョン管理ツール git の使い方を学ぶためのゲームです。

中央にgitツリーのグラフが表示され、手元にはgitコマンドを表すカードが配られます。

カードを使わずに右側のターミナルでコマンドライン操作することも可能。お題で出てきた課題を満たすためのカード/コマンドを正しく実行すると、右側の達成項目が緑に反転し、すべて達成すればそのレベルはクリアです。

commit を指定し、そこにカードを捨てることでカード上のコマンドを適用。

levels にあるステージ一覧から、好きな項目について遊ぶことが可能です。

カードを使っても解けますが、コマンドラインで解くと右端のボックスを黄色にすることができます。

ソースコードは GitHub で公開されていて、バイナリ版も Windows, MacOS, Linux 向けに提供されています。

テキストファイルで新たなlevelを自作することも可能で、必要な学習項目が無ければ追加することもできるようです。

作者の二人による紹介動画

git を学ぶためのサイトはこれまでもいろいろ出ています。それだけ初めて使う時は難しさがあるんでしょうね。また、普段gitを使っていても自分が日常的に使わないコマンドについては全く知らない、なんてこともあるので、このようにlevelで網羅されているとそういった知らないコマンドの勉強にもなりそうです。

via Hacker News