RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
やっぱりAtomだと限界が・・・Core2Duoのノートが欲しい。
なんて考えている今日この頃です。
でも買っちゃうと僕のノーパが5台に・・・それはちょっと多すぎる(笑)
まぁ4台でもレポートやるにはこれくらいないときついですね。個人的には。
そんな感じで今日は以前に予告したようにコンパイラの話です。
とりま、コンパイラってなんでしょうって話は全壊前回したと思います。
詳しくはC言語基コンパイラ言語についての記事を参照して下さい。
といっても、全然詳しく書かれてないですけど(笑)
まぁここではとりあえず、「コンパイラ=翻訳機」である。といった感じのことは説明したと思います。
でもちょっと英語できる人だと疑問に思うのがこの点、
コンパイルは英語にするとcompile
これを日本語に直訳すると「編集する」という意味になるんです。
まぁ翻訳も編集のひとつかもしれませんが、そもそも翻訳するだけなら”とらんすれーしょん”でいいと思いませんか?
なんでわざわざコンパイルというんでしょうか。
まぁコンパイルの語源はともかく、結局コンパイラって、翻訳の為のものではあるけど、
「翻訳だけ」している訳じゃないんです。寧ろこっちの方が翻訳より大事かも知れないですね。
そのコンパイラが担当しているもうひとつの役目とは何か。という話ですが、その前に。
皆さん。プログラムって完璧に書けますか?
100%ミスなしでプログラム、作れます?
まぁ簡単なプログラムならできるでしょうけど、
複雑なプログラムなら大体1個や2個は気が付かない打ちミスとかがでてきます。
そのミスをそのまま放置して、機械語に翻訳させて、
ロボットに送ってその間違ったプログラム、実行させたらどうなると思います?
どうなるんでしょうね(笑)
静かにお亡くなりになるかも知れないし、いきなりロボットは真赤に輝きだすかもしれない。
頭のいいLEGOだったらFileErrorで済むかもしれませんけど・・・。ちょっと怖いですよね。
だからみんなちゃんと、プログラムは確認してからロボットに送りますが、それでも確認しているのも人間なので
やっぱり抜けが出ますよね。
でも、こういった打ちミス等の構文的なミスをした際に、
PC側でロボットに送られる前にそれがチェックできたら便利だと思いません?
そう思った先人達はそういった機能、即ちエラー発見機能を作ってしまいました。
それでそれをコンパイラに搭載してしまいました。つまり、翻訳の時に間違いがあったら
「ここおかしいぞ」と教えてくれるようなものを作ってしまったのです。
これによってコンパイラの機能は「翻訳」だけではなく、「エラー検出」も加わることになり、
文字通りプログラムの編集者として世に送り出されることになったのです。(ということらしいです)
因みに現実の翻訳家は明らかに文法とかがおかしかったりしても、
大体翻訳家の方で勝手に脳内修正して翻訳するらしいのでまだ翻訳作業に関しては現実の方が上ですね。
あ。エラーの検知といっても、明らかにやりたいことと違うプログラムを書いたり、括弧がなかったりしても
文法的にさえあっていれば、コンパイルは大体通っちゃうので
コンパイルが通ったからと言って実際に動かしたいように動くかというと、それはまた別の話だったりします。
これは現実の翻訳家でも同じですね。「これ明らかにおかしいだろー」って文章があっても、
とりあえず原文を尊重して原文のまま訳すのが翻訳家の仕事ですから。
まぁ最近は原文の著者に確認を取るケースも増えてきているらしいですが・・・
という訳でこの「翻訳」と「エラー検知」がコンパイラの2つの大きな役割です。という記事でした。
なのでコンパイルが正しく行われないと、プログラムを実行したり、ロボットに送ったり、ができないようになっています。
つまり、プログラムをロボットに送る前には必ず「コンパイル」という手順を踏まないといけません。
それを踏まないままプログラムを送信したり、実行しても、送ったプログラムは実行されません。
その場合は何も実行されないor最後にコンパイルして送信したプログラムが実行されるような仕様になっています。
因みにROBOLABやNTX-GとかNQC、NXC、NBCの場合はプログラムの送信ボタンを押すと、
勝手にコンパイル+送信を一気にやってくれていたりします。
(^・ω・)ノRadiumProduction in RoboCupJunior
なんて考えている今日この頃です。
でも買っちゃうと僕のノーパが5台に・・・それはちょっと多すぎる(笑)
まぁ4台でもレポートやるにはこれくらいないときついですね。個人的には。
そんな感じで今日は以前に予告したようにコンパイラの話です。
とりま、コンパイラってなんでしょうって話は全壊前回したと思います。
詳しくはC言語基コンパイラ言語についての記事を参照して下さい。
といっても、全然詳しく書かれてないですけど(笑)
まぁここではとりあえず、「コンパイラ=翻訳機」である。といった感じのことは説明したと思います。
でもちょっと英語できる人だと疑問に思うのがこの点、
コンパイルは英語にするとcompile
これを日本語に直訳すると「編集する」という意味になるんです。
まぁ翻訳も編集のひとつかもしれませんが、そもそも翻訳するだけなら”とらんすれーしょん”でいいと思いませんか?
なんでわざわざコンパイルというんでしょうか。
まぁコンパイルの語源はともかく、結局コンパイラって、翻訳の為のものではあるけど、
「翻訳だけ」している訳じゃないんです。寧ろこっちの方が翻訳より大事かも知れないですね。
そのコンパイラが担当しているもうひとつの役目とは何か。という話ですが、その前に。
皆さん。プログラムって完璧に書けますか?
100%ミスなしでプログラム、作れます?
まぁ簡単なプログラムならできるでしょうけど、
複雑なプログラムなら大体1個や2個は気が付かない打ちミスとかがでてきます。
そのミスをそのまま放置して、機械語に翻訳させて、
ロボットに送ってその間違ったプログラム、実行させたらどうなると思います?
どうなるんでしょうね(笑)
静かにお亡くなりになるかも知れないし、いきなりロボットは真赤に輝きだすかもしれない。
頭のいいLEGOだったらFileErrorで済むかもしれませんけど・・・。ちょっと怖いですよね。
だからみんなちゃんと、プログラムは確認してからロボットに送りますが、それでも確認しているのも人間なので
やっぱり抜けが出ますよね。
でも、こういった打ちミス等の構文的なミスをした際に、
PC側でロボットに送られる前にそれがチェックできたら便利だと思いません?
そう思った先人達はそういった機能、即ちエラー発見機能を作ってしまいました。
それでそれをコンパイラに搭載してしまいました。つまり、翻訳の時に間違いがあったら
「ここおかしいぞ」と教えてくれるようなものを作ってしまったのです。
これによってコンパイラの機能は「翻訳」だけではなく、「エラー検出」も加わることになり、
文字通りプログラムの編集者として世に送り出されることになったのです。(ということらしいです)
因みに現実の翻訳家は明らかに文法とかがおかしかったりしても、
大体翻訳家の方で勝手に脳内修正して翻訳するらしいのでまだ翻訳作業に関しては現実の方が上ですね。
あ。エラーの検知といっても、明らかにやりたいことと違うプログラムを書いたり、括弧がなかったりしても
文法的にさえあっていれば、コンパイルは大体通っちゃうので
コンパイルが通ったからと言って実際に動かしたいように動くかというと、それはまた別の話だったりします。
これは現実の翻訳家でも同じですね。「これ明らかにおかしいだろー」って文章があっても、
とりあえず原文を尊重して原文のまま訳すのが翻訳家の仕事ですから。
まぁ最近は原文の著者に確認を取るケースも増えてきているらしいですが・・・
という訳でこの「翻訳」と「エラー検知」がコンパイラの2つの大きな役割です。という記事でした。
なのでコンパイルが正しく行われないと、プログラムを実行したり、ロボットに送ったり、ができないようになっています。
つまり、プログラムをロボットに送る前には必ず「コンパイル」という手順を踏まないといけません。
それを踏まないままプログラムを送信したり、実行しても、送ったプログラムは実行されません。
その場合は何も実行されないor最後にコンパイルして送信したプログラムが実行されるような仕様になっています。
因みにROBOLABやNTX-GとかNQC、NXC、NBCの場合はプログラムの送信ボタンを押すと、
勝手にコンパイル+送信を一気にやってくれていたりします。
(^・ω・)ノRadiumProduction in RoboCupJunior
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
プロフィール
HN:
Luz
性別:
男性
アーカイブ