読者です 読者をやめる 読者になる 読者になる

100年後くらいの「そろばん」の定義

Verilogから各種スクリプトまで、プログラミング言語(HDLをプログラミング言語と言うのかという話はあるが)の低級なところから高級なところまで触ってみての感想。
世の中には「読み書きそろばん」という言葉があある。数字を扱うための必須技術がそろばんだった訳で、電卓が普及するまではそろばんの弾けない会計方はかなり効率が悪かっただろうなあと思う。電卓が普及して、昔の並のそろばん弾き程度はほとんど訓練ゼロで出来るようになった。
では現代で、昔の「読み書き」に並ぶ技能としての「そろばん」は何かというと、プログラミング言語しかないよなあと思う。特定のデバイスで、人間には厳しい計算を補助してもらうというあたりがそっくり。まあ、そろばん出来る人はとんでもない桁数のかけ算が暗算出来たりするらしいので、世の中にはグラフ見ただけでダイクストラ法使える変態もいるのかもしれませんが。補足すると、「パソコンが使える」は多分違う。単にパソコンを使えるようになるというのは、特定のUIに慣れるという程度の意味しか、恐らく、ない。


さて、プログラミング言語と一言で言っても色々な水準や目的があるので、触った範囲での評価を並べてみる。

  • HDL:触ったことあるのはVerilog HDLだけだが、現状HDL=Verilogらしいので気にせずに行く。これはプログラミング言語と言うより文字通りハードウェアを設計するための言語という趣。電子デバイスベースの論理回路を設計しているということを常に意識していないと一瞬で「何で???」ということになりかねない。FPGAが流行ったとしても、HDLをじかに書くのはアセンブリ言語でのプログラミングみたいな扱いになるんじゃないかな。
    • ラダー図:ある種のHDLと言えなくもない。論理素子に相当するものがモロに出てくるあたり、やはり特殊用途の感が否めない。これでアルゴリズム実装するのは、慣れてないと結構頭がこんがらがる。
  • アセンブリ言語マシン語しかないよりはよっぽどいいが、C言語が使えるならそっち使うよなあ。特殊な命令使うためのアセンブラプログラミングはは特殊技能、というのは多分トートロジーなので恒真。
  • C言語:我らが中級言語。Cを高級言語と思うか低級言語と思うかでその人のプログラミング観が計れそう。「彼氏がC言語をしゃべれなかった。死にたい。」というのは、プログラマ職の人には真実だろうけど一般的にはどうだろう。C言語だとアセンブラを多少意識して書くことになるし。
  • BASIC:昔ながらのBASIC絶滅危惧種じゃあるまいか。Pascal流の制御構文もないってのはなあ。歴史的意義は終えたと思う。
  • JavaC#Javaはなんか嫌い。最後に触ったの3年くらい前だけど進化したとかしないとか。いや個人的な好みは置いておいて、この辺の言語は既にプログラミング出来る人が使いやすいような言語、という感じ。用途自体は色々ありそうだけど、逆に人を選びそう。
  • PerlとかPythonとからへん:軽く処理書くのに便利と言いたいところだが、Windows環境だとCUIが貧弱で色々やりづらいというひどい罠がある。でもこれらは使えれば便利だし、一回解けばいい問題向けのコード書くのには適切ぽい。
  • Lispと愉快な仲間達:手続き型スクリプト言語に比べて流行ってなさ過ぎ。慣れれば下手な手続き型プログラミング言語より使いやすそうだけど。ただ、手続き型だけ使える人と関数型だけ使える人のどちらがいいのかという話はある。
  • Prolog:なんとなくすごいのは分かるがプログラミング言語にする必要あるのか。cutとかの不純物入るくらいならほかの種類のプログラミング言語使えばよくね。
  • 番外 C++:あらゆる意味で変態向け。どうしてこうなった。


このエントリの主旨に戻って「そろばん」たれる、というかそろばんとしてのプログラミングが出来るなら使えるべき言語は、手続き型スクリプト言語群が本命、次点でLispといったところか。Lispが手続き型に比べてマイナーなのは関数型で、ハードウェアの構造からの遊離度が激しすぎるのが原因は気はする。でも手続き型スクリプト言語だってもうアセンブラの欠片も見えない(見せない)ものが大半なので、その点はどの道おあいこじゃないかなあ。プログラミング言語として手続き型と関数型のどちらがいいのかはよく分からない。
付記しておくと、昔のそろばんの役割を一番担っていそうな表計算ソフトは算数が出来れば使えるので考えなかった。そろばん程度のレア度のスキルは何になるかな、という思考だったので。