アセンブリ言語は覚えておけば良いとは言うが・・・

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

正直なところ、個人的には一般的なPC/スマホアプリあるいはウェブアプリを開発するという意味ではアセンブリ言語などの低級言語 ((マシンとの親和性の高い言語で、直接機械語に変換可能でマシンにとっては理解しやすいが、人間にとってはわかりづらい)) は学習する必要性は今日では考えられないと言える(そもそもウェブアプリをアセンブリ言語で開発しようと考えることはないだろうが)。もっとも、極端に容量の少ない、あるいは軽量な動作(余計な動作を極力省く)が必要な環境向けのプログラムを開発する、あるいはコンパイラーなどを開発するといった場合は別だが。今日ではPC/スマホアプリならC言 (あるいはC++/Objective-C)やJavaなど、ウェブアプリならPHPやPerl、Rubyなどの高級言語 ((人間よりの言語で、人間にとっては理解しやすいが、直接機械語に変換できず、コードをもとに機械語を作らなければならない)) で十分といえる。当方がこのように考えている点について、以下に述べたい。

まず、アセンブリ言語ではCPUのアーキテクチャごと及び処理系ごとに構造が大きく変わっており、それぞれに合わせてプログラムを書き分けなければならない。これは大きな手間がかかるし、移植性に劣るといえる。特に他の環境に乗り換えるあるいは移植する際の大きな障壁となりうる。その点で高級言語ではその実行環境さえあれば環境への依存度合いは低いと言える。

また、可読性という点ではアセンブリ言語はそれがどういう処理を行っているのかは機械にとっては問題ないのだが、人間にとってはコメントが無いと全くわからないものとなっている ((基本的にレジスタやメモリなどに数値を代入したり計算を行ったりしているということしか書かれていないため)) 。高級言語であれば(書き方がしっかりしていれば)わかりづらいということはそれほど多くない。

また、今日ではアプリの複雑化および巨大化に伴い、アセンブリ言語でプログラムを開発するのは(環境の貧弱あるいはサイズの小さい組み込み用途あるいはごく一部をパフォーマンス目的でアセンブリで書く場合を除き)事実上不可能なほど困難といえる。実際、アプリ用のC言語コードなどをアセンブリ言語に変換すると膨大な量となり、一つのファイルでさえアセンブリ言語で書き上げるのは骨が折れるわけである。

以上のことから、今日では特定の用途を除けば、アセンブリ言語を使う機会は全くと言っていいほどなく、また、使う必要性もほとんどないと言える。

タイトルとURLをコピーしました