2020-07-02
ITの楽しさ伝える、福井県立科学技術高校、2年生全員向け講演。

体育館に掲げられている「技」と「創」が良い!


情報技術に関してとリクエストいただいたので「情報技術の活かし方・遊び方・学び方」と題したプレゼンテーション、IchigoJamゲームのライブコーディング、質疑応答の50分。


IchigoJamのCPU、凄い!という感想。作った私も凄いと思ったほどです。100円なのにね。スライドの16:9化に伴い、京と富岳を並べる形にアップグレード。 同じ予算なのに性能100倍!世界一のスパコン「富岳」の活躍、これからも楽しみです。


こちら、引退したスパコン「京」で、実際動いてたコンピューター。かっこいい!
7億6000万個のトランジスタでできているこのコンピューターを、88,128個つないで動かしていたのがスパコン京。 CPUの動作周波数は2GHzとみなさんのスマホと同等です。IchigoJamの48MHzともたかだか40倍しか変わりません。

計算が速い=時間の創出=社会が豊かになる

IchigoJamで三平方の定理を使った斜めの距離計算をやってみましょう。

10 ?"CALC LEN" 20 INPUT "X?",X 30 INPUT "Y?",Y 40 N=X*X+Y*Y 50 ?"X*X+Y*Y=";N

横(X)と縦(Y)の長さを入れてもらって、それぞれ自乗したものを足した数(N)。これのルートをとれば斜めの距離がでます。 ルートを計算するコマンドはないので、ひとまずシンプルに愚直に繰り返して求めてみましょう。

60 L=0 70 L=L+1 80 IF L*L<=N GOTO 70 90 L=L-1 100 ?"SQRT(";N;")=";L

長さ(L)を1足しながら自乗した値が先程計算したNを超えたら、1戻して表示するプログラム。 X=3、Y=4で結果Lが5とでました!

30, 40 だと、50。100,100だと144。数が大きくなると遅くなります。IchigoJam BASIC は、1コマンド1文字ずつ間違いがないか確認しながら丁寧に実行するので、間違っても安心な楽ちん言語ですが、その分速度が犠牲になっています。

そんな時は「マシン語」、コンピューターの能力をフルに引き出してみましょう。 BASICに似たマシン語生成用プログラミング言語 asm15 を使ったルートの計算はこちら。

R1=0 @LOOP R1+=1 R2=R1 R2*=R2 R0-R2 IF GE GOTO @LOOP R0=R1-1 RET

変数の代わりにコンピューター内部にある最も高速なメモリ、レジスタ(R0〜)を使います。IF GE GOTO は、もし、直前の計算結果が0以上だったらを意味する(GE)を使って、ループしています。 やってることはほぼ同じですね。

C言語と同様、これをマシン語に変換します。asm15 assemblerを使ってできたマシン語をメモリに書き込み、USR関数を使って呼び出しましょう。

POKE#700,0,33,1,49,10,70,82,67,144,66,250,218,72,30,112,71 ?USR(#700,25) 5 ?USR(#700,10000) 144

計算できました!大きな値でも一瞬ですね!
IchigoJamは1秒間5000万回、富岳は100京回、マシン語を使うとコンピューターの性能をフルに引き出せます。

汎用的に使えるC言語(IchigoJam BASICもC言語で作っています)、スマホやPC、サーバーでも気軽に動かせるJavaScript、並列処理に便利なC言語に似たGLSLなど、用途に合わせたいろんな言語も最終的にはそれぞれのコンピューターに合わせたマシン語となって動いています。

コンピューターと人間はステキな補完関係、うまく付き合っていきましょう!


HTMLはじめのいっぽ
30分でOK、HTMLからはじめる、自分だけのアプリづくり入門。CSSでデザインに凝るもよし、JavaScriptで動きに凝るも良し。


科学技術高校生による福井県てぬぐいがステキです!オリジナルスマホアプリづくりにもぜひチャレンジしたくなったら、どうぞお声がけください!


ハードウェア好きなら、栃木県立栃木工業高校による「SkyBerryJAM」のように、IchigoJamをベースにした、オリジナルハードづくり、楽しいかも?


講演資料「情報技術の活かし方・遊び方・学び方
CC BY のオープンデータです。ご活用ください!

福井県立科学技術高校のみなさん、楽しい時間、ありがとうございました!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS