「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



先日おとずれた「言語ゲーム」、12/27の日記で
http://d.hatena.ne.jp/propella/20081227

世界聴診器とScratchでバーチャルヨーヨー。
面白い!

「スクリプトを書く」といっても、とっつきやすさ
からなのか、普通のテキストエディターで書く
イメージと全然違ってて、なんか凄くカラフルで
綺麗なんですねぇ。

Yahoo!などの記事では
http://headlines.yahoo.co.jp/hl?a=20081226-00000048-zdn_ep-sci
http://www.itmedia.co.jp/enterprise/articles/0812/26/news022.html

Scratchは子供向け言語と紹介されていますが、別に
子供に限定しなくても良いような気がするなぁ。
logoだって確かに入門者には間口が広いけど、別に
初心者以外には使い道が無い言語ってわけでも
無い気がするし。

それにしても、こういう風にPC上のプログラムと
現実世界のモノとが簡単に連動できるって言うのは
面白いな。いい世の中になったものだ…

そう。確かに、お作法が複雑になりすぎた現代の
プログラム言語と比べれば、80年代のBASICに
相当するような簡単な言語ってあまり見当たらない
から、もしいきなり.net対応のVisualBASICなどを
子供が最初に触ったら、ぜったい拒絶反応でる
気がする。デジタルディバイドの原因にすら
なりうる…


ただ、なんだか少し洗練されすぎているような気が
しちゃうんだよなぁ…。私みたいなひねくれ者には…

80年代にBASIC使ってプログラム組んでた頃を
思い出してみると、確かに「インタープリタ」で
動くBASICって凄くとっつきやすくて簡単で、
しかもそれなりに長いプログラムを書けば複雑な
ことも出来たので、その辺りの機能で見ればBASIC
もScratchも初めて触る言語として、難易度は近いもの
があるのかもしれないけど、BASICって、
なんていうかそれだけではない「裏技的なもの」
がいっぱい有って、それが間違えなく楽しかった
んだよなぁ。

例えば、PEEK、POKEでRAMを直接読み書きできたので、
VRAMに直接POKEで書き込みしたり、迷路型ゲームでは
衝突判定にVRAMから読み出したデータ使ったり…

特にPC-8001でゲーム作る時など、グラフィック処理
にpset、presetコマンドなんて遅くて実用にならない
から、BASICでもそういう技を駆使してスピード
アップを図ったりするのは当たり前。

それでも物足りなくなると、ハンドアセンブル
した機械語プログラムをBASICから呼び出し
たり…と言った感じで、究極的にはマシンの
容量の最後の1ビットまで、処理速度の最後の
1クロックまでを使い尽くすようなプログラム
を夢見て、そんなのを実際に作っちゃう人たちを
羨望のまなざしで見たなぁ…
(TEXDER作ったGAME ARTSとかね)

AVRで機械語使って楽しいなぁって思うのは
多分この頃のワクワクした裏技とかが大きく
影響しているんだろうなぁ。

今のwindowsの環境は、OSとDLLが大変なこと
を全部肩代わりしてくれちゃっているので、
あまりワクワクが無いんだよなぁ…

で、Scratchは、とっつきやすさとか解りやすさ
とか、…凄く正統派なので安心して入門に使える
んだけど、中身をほじくるような裏技的楽しみって
言うのは期待しちゃいけないんだろうなぁ…

スペースインベーダーにはすでにゲームの基本的な
要素が含まれていたと言われる理由の一つに、
  「裏技を見つけ出す楽しみ」
っていうのが指摘されていますが(名古屋撃ちとか)、
80年代のBASIC機にもそんな裏技的楽しみが
いつも付きまとっていた気がするなぁ。

そもそも、そんなことに楽しみを感じている
変態さんはオイラ一人くらいか…?


で、そんなことを考えていた昨今、知人から超シンプル
な変わりモノ言語の話題を振られて、ふと思い出したのが
Brainfuck。命令体系が全部1文字で、しかも8個の命令
しかないという小ささ。

http://www.kmonos.net/alang/etc/brainfuck.php
「hello world」すら↑こんなですよ!
しかもこんなにシンプルな言語なのにチューリング完全。


でBrainfuckといえば、そこからさらにワルノリした
色々な派生言語があって、
http://kmaebashi.com/zakki/lang0003.html

↑これとか。Brainfuckを「べーしっ君」にしちゃう。

べーしっ君は以前どこかでも見たような気がしますが、
さらに「北斗の拳」や「ジョジョの奇妙な冒険」
ともなると、世界にこんにちはを言い終わる前に
既に死んでいたり、もしくはスタンドもろとも再起不能
になっていたりしそうだからコワイ、コワイ。


生産性や動作安定性などといったことを考えると、
言語はどんどん洗練されているのが当たり前なので
しょうけど、でも、登場当時のVisualBASICと
現代の.NET対応のVisualBASICを見比べると、
なんともなぁ…

この間VB2005使ったときには、「お作法ばかりに
なっちゃったなぁ」って感じで、とても楽しさは
感じなかったもんな。

最後の1クロック、最後の1ビットを搾り出す楽しみ
っていうのは、やっぱりマイコンのアセンブラって
世界にしか残っていないのかな?



コメント ( 11 )




simさんからご紹介いただいたVHDLによる論理合成の基礎
ようやく読み終わりました。って言っても、まだ全部理解
出来たわけじゃないんですけどね…。(´o`)

「FPGAボードで学ぶ論理回路設計」はFPGAボードと
解説書付きであの値段だからお買い得といえばお買い得
なんだけど、ゴールがあらかじめ決まっていて一本線で
突っ走る感じだったので、そのわき道に何があるのか
が良く解らかった…。
(一歩踏み外すとサポートが何も無い)
なので、知りたいところにもう少しで手が届かないって
感じ。

トラ技スペシャル79「初歩のHDL設計学習帳」や
80「VHDLによる設計演習帳」も、実例などが
いっぱい載っていてなかなかなんだけど、やっぱり
何かがちょっと足りない…。

なんていうか、「日の字LEDに数字出そう」
とか、「カウンタを回そう」とか、そういうことを
何も知らない状態の時に読めば、「あぁ、こういう
風に書くのね…」ということが解るんだろうけど、
大規模の設計する時に必要なことは何も書いてない
といってもいい状態。


で、「VHDLによる論理合成の基礎」はその点で
とても満足だったな。特に第5章「合成に向いた
コーディング手法」のところ。タイトルに基礎
と書いてあるけど、基礎の本というよりは
入門書を読み終わった人向けの次の一歩って
感じかなぁ。

意図しないラッチの回避の意味もなんとなく解ったし、
回路規模を減らすための「論理の共有化」とか、
計算式につける括弧の順序で「遅延時間が変わってくる」
とか、クロック回路やリセット回路の鉄則とか、
モジュール分割の考え方とか、モジュールとモジュール
を繋ぎ合わせる時の注意(グルーロジック)とか。
もう盛りだくさん。

そうなんだよねぇ。この辺なんだよねぇ。
単なる文法書でもなく、一般論を並べるでもなく、
かなり実践寄りって気がした!

願わくば、演習問題の章でもいいんだけど、もっと
大規模な設計をやってみるっていう風だとよかったな。
演習問題は簡単で小規模なものばかりだったので…


続編があったら良いんだけどな。応用編とか実践編
みたいな感じで。

この人の文体はけっこう読みやすかったので、
できればこの人の本で、と思って検索してみたん
だけど、verilogHDLの本と、テストベンチ
の本しか見つからなかった…




コメント ( 2 )