今度の新人の基本情報技術者試験の勉強会はCASL(仮想アセンブリ言語)なのだが、とある先輩が新人に言った一言「CASLなの? だったら出る意味ないじゃん」。

個人的にはものすごく勉強になると思っている。私と『とある先輩』の違いはなんだろうか?

たしかに『とある先輩』のところのプロジェクトは Java なので Java を勉強すれば、実務でも使えなおかつ試験にも役立ち、一石二鳥だと言いたいのだろう。また、CASLは仮想アセンブリなのでどこに言っても役立つことはない、という思いもあるのかもしれない。だけど、C言語やオブジェクト指向言語を理解するためには、CPU の最低限の挙動を知ることはこの業界においては財産になると思っている。

私自身の経験ではCASLを学ぶことは以下の二点において有利だと考える。

  1. CPUとメモリを意識できる
  2. アルゴリズムを意識できる

一点目は、C言語の壁と言われるポインタもCPUとメモリを意識さえすれば難しいものではなくなる。ただ、C言語以上の高級言語やスクリプト言語になると、CPUとメモリはかなり隠蔽されるので一点目はあまり意味はない。二点目は、最近感じてきていることなのだが、自分の周りのほとんどの人はアルゴリズムなんぞ意識してプログラムを作ってはいない。悪いアルゴリズムを選択すると、即サイクルが増えるアセンブリを勉強することで自然と一番良い方法を探そうとするはずだ。
ただ単に、CASLを試験対策として勉強するのであれば無意味だと思う。CASLは他の言語の勉強と違い言語仕様が公開され丸暗記問題ではない。その問題で問いているのは『問題を解く力』だ。

以下余談:

CASLをかっこよく書きすぎた気もするけど、まぁおおむねこんな感じ。自分は CASL で受けたけど、その時暇だったので Java の問題を見たら『 String.subString のインデクスに指定した文字が含まれるかどうか』みたいな問題だった。そんなの知ってるかだけの問題で面白くない、C言語は printf の format の問題が出るというのは各所から。

自分は以下の二つの本でアセンブラの道に入った。(とちらも有名な本ですね) はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス) はじめて読むMASM―ソフトウェア環境のからくりを学ぶ

また、アルゴリズムがなっていない、と感じ同意したのは次のリンク。イケてないプログラム(使えない成果物)に見られる3つの共通点 :: Drk7jp

コメントを残す

メールアドレスが公開されることはありません。