時代に命題を課すと
いまは知らないが。私の若いころの時代は。BASICをバカにするヤツ、多かった。(Visualのつかない、むかしのBASICね)。
つーかね。そうした侮蔑をするヤツが、C言語やマシン語など別の言語を操れるならまだわかる。
しかし、プログラミングなんて経験もない、せいぜいワードやエクセルを使えるレベルのヤツが、聞きかじりの知識だけで。
「こいつ、BASICなんて使っているんだぜ、ダサい、バカだ!」などと自慢げに吹いていたんだよ!
そいつはそもそもBASICがなぜバカにされているのかも、知らないのだろ。
単にむかしの市販ソフトにはまず使用されず、エンドユーザーが手慰みに趣味で用いていたから……くらいしか認識がない。
そいつこそバカだ。違うんだよ。
BASICはむしろ偉大な言語だった。
貧弱なハードでも実装でき、指定や宣言をしなくても各種の変数を使えた。コンパイルせずとも、インタプリタで即実行できたし。
仮に実行速度が遅い、と叩かれたにせよ。ピークとポークで、直にメモリのアドレスを読み書きできたから、マシン語レベルだって容易に操れるのだ!
他には。文字列変数にデータを代入しておくだけ、という仕組みで。簡単に自在に音楽を流せた裏ワザ級のシステムすらしていたのだ! 本来の働きとは違うはずなのに、むかしのエンジニアはよく作り上げたものだよ。
素人でも比較的、プログラムが簡単に組める? 簡単に作れるならむしろBASICはすばらしいではないか。
そういうことを指摘するヤツは、どうせマシン語も構造化プログラミングも知らないのだろ。
マシン語は難解だ。そのマシン語を介さず、比較的わかりやすいコードで、しかも即実行できる。BASICはこれがすごい。
逆に誤解されがちだが。C言語などの構造化プログラミングでは「プログラムは簡単に書いていいのですよ」が、前提にあるのだ! つまり、C言語の方が簡単にわかりやすくプログラミングできる。
つまり「簡単だからBASICはバカ……」という理屈は成り立たないのだ。
オブジェクト指向言語までいくと、C言語も時代遅れ。その後継のC♯などが幅を利かす。
C♯はかなり使い勝手がいい。C言語の欠点だったルーズさをなくし、優等生にした感じ。
対してむかしのC言語は例えば文字列変数を定義した後、それに代入するときの保守機能がなかった。
C言語で文字列変数に、その許容量をオーバーする長さの文字列を代入したらどうなるか? なんと、メモリ上の無関係なアドレスのデータに続きを上書きして、メモリを破壊してしまうんだよ、即PC暴走もの。
他の例としては、変数の型指定がルーズだった。変数に、使用を予期しなかったデータが代入されても、コンパイルされて実行するまでなにがいけないかわからない。(というか、実行されてもなかなかエラーに気づけない)。たとえば数値型に数値ではなく文字型を入れると、数値として文字型の記号コードが代入されてその数値が表示される、という具合だ。
ついでにいうと、C言語は演算子がパラノイアものだ。論理演算子も比較演算子も代入演算子も、とても判別しつらい。
コードの見やすさ保守しやすさに関しては、PASCALのDelphiがとてもスマートで美しい。つーかCとPASCALの言語の開発陣、同じらしいのになんで統一できなかったのかな。
これでは過去のC言語のほうがおバカというものだ。
C言語の最高の利点は。実は、記したコードがコンパイルされた後に、どんなマシン語になっているかをプログラマが直に確かめられた点による。
しかしこれは逆アセンブル禁止という決まりによって無効となり、次いで現れたC++ではコンパイル時に、裏コードが生成されるので逆アセンブルを事実上できなくしてしまった。
むかしを知るエンジニアとしては歯がゆいが、内部でどんなマシン語のコードに変わっているかは知りたくも我慢して、C♯のスマートなオブジェクト指向プログラミングの開発環境を利用するしかない。
この危険性に関しては、過去にエッセイで挙げたな。『数学は理解しなくても使えるものだが』とかか。
要はだ。
コンピュータは管理できる、管理するものである。
自在に書き換えられる。書き換えは管理しないといけない。
だから理解できないから信頼できないし、しかし使えないといけないから信頼するしかない……ああ矛盾。
対処するとしたら?
簡単な例としては【神経衰弱】。トランプのカードのね。
これは必ずといっていいほど、コンピュータが勝てる。めくったカードを完璧にすべて記録できるのだから当たり前だ。おそらく前世紀60年代のコンピュータで十分可能だ。
しかし。コンピュータ上でこれを実行できるものなら、踏まえておくべきことがひとつ。
コンピュータは、処理を少し変えれば自在に【チート】できるのだ。
だから、めくる前からすべてのカードを『盗み見』、そして一回の狂いもなく、すべて開いて当ててとってしまうなんてことすらも、プログラミングで少し細工すれば容易なのだ!
この点がブラックボックスとしたときのコンピュータの怖さであり、工学上扱われる関数の現実だ。
さて、これからの時代にどう対応すべきかな。ここに命題を課すものである。
お疲れ様でした。ありがとうございます。
もしよろしければ私のメイン作の、
『九九も忘れた理系中退野郎が叫ぶ!』も、よろしくお願いします。
(^^♪