暇なので、書いてみる。俺自身はソフト側なのでそうのように書く。
コンピュータがなぜ動くかというと。マシン語を運用しているから動く。 マシン語自体は単なる数字の羅列であり意味はマニュアルに載っている。 数字やモノにに意味を付与することをマップするという。これはコンピュータ用語だと思う。 CPUはマップされた数字の意味を独自解釈することで動作する。 マップされた方言をしゃべりまくるのである。 その方言のことをインストラクションセットと読んだりする。 世界で一番売れてるのはx86ではなくてArmだそうだ。どっちも相互運用性はまったく無い。 マシン語を覚えることに辟易したらアセンブラを覚える。 アセンブラはマシン語の数字に名前をつけて、多少覚えやすいようにできている。 大体は1対1でマップされているのでアセンブラの書いたとおりに動く。 オプティマイザがあるか知らないけど、同じ意味で効率を上げることを最適化という。その自動化されたツールをオプティマイザと言うことがあるらしい。 アセンブラの命令はニーモニックという。 大体は意味を表した英文の単語の頭文字の羅列だったり結構大雑把にできている。 自分でアセンブラを設計する気になったらもっとマシな命名規則を適応するのも良いかもしれない。 でも、プログラマは怠け者だから、結局端折った命名になりがちである。 アセンブラでアセンブリをアセンブルするのに辟易したら、C言語を覚える。 高級アセンブラといわれるほどのもので小物を書くには悪くない選択だ。 コンパイラさえ用意できれば多少の相互運用性を確保できる。 さらにポインタなどの概念はアセンブラの概念がそのまま使える。 基本アドレス[相対アドレス]; の書き方で表せるこの方法は配列という構造を作ることを可能にした。アセンブラでも可能だが、言語仕様であるわけではない。 基本的にメモリはミクロに見ればBITの配列だが、プログラミング的にはByte(8BIT)単位の連なりつまり配列である。 C言語で一アプリに突っ込める構造は基本的に1個だけである。 2個とか3個突っ込と途端にスパゲッティといわれるぐちゃぐちゃなコードを生成してしまいがちになる。 だから、1プロジェクト1アプリが基本であろう。C言語の基本構築方法を手続き型と呼ぶみたい。 C言語に慣れてきたらC++を覚える。ただし、CがC99といわれる規格で別流をたどったみたいだ。 クラスが強力でクラス1個に1アプリを独立した形で突っ込める。手続きも自分の意思で公開できる。 でもメモリ管理がその分複雑になる。基本的にクラスで使ったメモリはそのクラスで開放しないとリークしやすい構造になる。iostreamは必要なら覚える。 C++の見所はやはりTemplateである。 BOOSTっていうサードパーティライブラリが有るのだが、変態級の発想でTemplateを駆使している。あれにはついていけない。 C++の次期標準ではBOOSTをたたき台にしている。 C++に辟易したら、ここで2本の流れがある。 1本はDMのD言語。 1本はニシキヘビや宝石系のスクリプトである。 D言語は執筆時点でまだマイナーである。でもC++で色々と疲れたら、これを手にする価値はあると思う。趣味でもいいので。 なんせガベージコレクタというメモリの掃除やが言語仕様にある。 これが便利で偉い人が考え出したメモリ回収機構が勝手にメモリを掃除するのである。 これによって例外を除いてメモリをリークさせることは無くなった。 プロパティを生成する構造も良い。構文はほとんどC/C++系列だ。 スクリプト系の話。 スクリプトはある種のトレードオフによって実現されている。 それは、処理速度を求めない代わりに簡単お手軽を実現するのだ。 GCはあるし、変態構文糖はあるし、作者の思惑に乗りまくりですよ。一番面倒なのは学習コストかもしれない。慣れれば都だと思われる。 ただ、実行環境事態は処理速度を追求して作られるので思ったほど遅くも無いみたい。 で、俺はDを選んだ。
さらに、最近はDのマイナーさにちょっとびびりつつ、C++をいじっている。 やっぱVCは快適だなー。Orz
最後に、プログラミング言語と言うのは道具です。 道具をつかってゴールを目指すのが正道なわけで、凝った使い方にはまったりするのは学習の面では悪くないが、それではアプリは完成しない。 あくまで道具です。
 |