Tisse Diary

ネトゲが大好きな負け組元プログラマーの日記。内容はいろいろです。

10月« 2017年11月 /  123456789101112131415161718192021222324252627282930»12月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ティセさんちのプログラムのことをちょっと知ってみよう講座:第1回

プログラマーなところをちょっとは見せたい!ティセです。こんにちは。
1年もたって、ろくにプログラマー的な話をしていないと気がつきました。
ゲームばっかりやってません!ちゃんと仕事もしてるんです!ってな感じで
今日は技術的な話をしようと思います。

そんなわけで、興味のない人にはまったく興味のない話になってしまいます。
でも、知っておいて損はない話だと思うので、ちょと目を通していただけるとうれしいです。

今回話す内容は、コンパイラについて、です。
コンパイラとは何ぞやという話になりますが、単純に言うと、翻訳機械です。

内容は、初めての方でもわかりやすく書いてある・・・はず。
自分がわからなかった頃がわからなくなっているので、駄目かもしれません。
と、とりあえず、始めたいと思います。

****** ▼ 追記記事 ▼ ******

  
まずは、プログラムとはなんぞやー。という話から。

プログラムというのは、いわゆる設計図のようなものです。
パソコンで動くものには、みんなプログラムが存在しています。
例えば、MoEとかPSUとかみたいなゲームもみんなプログラムがあります。

具体的に。
Aさんが攻撃したら、Bさんにダメージが当たる、としたとき、
いろんな取り決め(設計)をしておかねばなりません。

・そもそも当たり判定はどうやって計算されているのか。
・このとき与えるダメージはどうやって導き出されるのか。
・ダメージの表示はどこに出すか。
・Bさんの残りHPの計算
・Aさん、Bさんのモーションの描画はどのタイミングでどのようにやるのか。

と、まぁ、数えたらたくさんあります。

このような行動をプログラムでせこせこと書いていくわけです。

で、↑のようなプログラムを書け!といわれると死ぬので簡単な例で。

----- ここからhello world -----
# include       ← 画面に Hello, world! を出すために必要なもの

int main(void) {         ← プログラムが始まりますよーのマーク
printf("Hello, world!\n");  ← ここで画面に Hello, world! を出力
return 0;            ← プログラムが終わりますよーのマーク
}
----- ここまでhello world -----

このプログラムを書いて、実行すると、画面上に 「Hello, world!」って出ます。
簡単に「実行すると」なんていってますが、ここがだいぶ重要です。

↑のプログラムって、英語で書いてありますよね。
でも、コンピュータは0と1の二進数、つまり、電気のON,OFFしか理解できません。
0と1の羅列(以下、機械語)にすれば、後は何とかOSがやってくれるので(多分)
そこまで変換してあげる必要があります。


前置きが長くなりましたが、ようやく、ここでコンパイラが登場します。

コンパイラとは、人間が(勉強すれば)読める文字列を、機械語へと翻訳してくれます。
例えば・・・。(この話をすると色々周りから叩かれるんですけど)

私たちが普段使う言語 を 普段使わないような原始的な言葉 に 変換するみたいな?

ようするに、通訳さんみたいなものです。
このコンパイラを使うことによって、私たちはひじょーに楽にプログラムがかけます。

そんな面倒なことしないで、いきなり機械語で書けばいいじゃん!と思うかもしれません。
でも考えても見てください。プログラムを0と1だけで書けといわれたらどうですか?
例えば…。

0100110011010010010001がアイテムを使用。
0100110011010010010000がアイテムを捨てる。
0100110011010010010010がアイテムを装備。
0100110011010010010011がアイテムを装備を外す。

ということとして、使用、捨てる、装備、外すの順にプログラムを書いたとすると、

0100110011010010010001010011001101001001000001001100110100100100000100110011010010010011

見たいになります。
これじゃあ、どこからどこまでがどの行動なのか、全然わからないですよね(w;

実は、↑の羅列。装備のプログラムを書く部分が捨てる、になってます。
アイテムを装備する、を実行したらアイテム捨てちゃった!というゲームになります。

俗に言うバグがここに生まれるわけですが、これ、ぱっとわかります…?
わからないですよね。私はわかりません。わかりたくもないです。

もしも、これを人間のわかりやすい言葉で書いたとするなら、

使用、捨てる、装備、外す てな具合に書くだけなのですぐわかります。
使用、捨てる、捨てる、外す になってても、すぐ間違ってることがわかりますよね。

そんなわけで、目で見てわかるプログラムというのは大事なのです。
よって、目で見てわかるプログラムを機械語に変えてくれるコンパイラも大事です。


したらば、今回はおしまい。
プログラムって言うのは、それだけで動くんじゃなくて、
コンパイラって言う翻訳機を通すことで、コンピュータで動くんですというお話でした。
いきなりの路線変更で驚かれる方も多かったと思いますが、
明日からは通常営業に戻す予定です。反響が多かったら、このネタ、またやります。

ティセさんは、コンパイラという割と目の届かないところで働く方を応援します。

*** COMMENT ***

インタプリタもアイシテッ(ぁ

ねうさん

インタプリタだと最適化の話ができないので、コンパイラの話にしました。
次回でコンパイラの最適化の話をして、その後、
インタプリタとコンパイラの対比の話に持っていこうかなーと考え中。
やるか未定ですけど!(ぁ

コメントの投稿

管理人にだけ読んでもらう

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。