2002/10/31 | 生きてますよ? |
だいぶ間があいてしまいましたが……。
と思ったら、ROは課金ですか……。
さて、私が修羅場で二葉亭た間も、世間はいろいろ動いていたようで……。
11月頭は、もう少しまめに更新する予定ですので、もうしばらくお待ち下さい。 |
2002/10/16 | C#と.Net |
再び修羅場の2/3が始まって、ちょっと溜息なシェラです、こんばんは。
なんだか、Псиさんに丸投げされかけたので、ちょっと触れてみることにします。
というわけで、今回はちょっと、ヨシミさん風にいってみようかと。
この英語っぽい書式のおかげで、プログラマは意図した機能をそんなに苦労することなく実装することができます。
ありがたい話です。
しかし、稀にですが、「コンパイラ」が、麻宮騎亜先生の「コンパイラ」に登場する「コンパイラ」よりもアレだった場合、もしくは、「コンパイラ」が機械に優しい書式を全部把握しているわけではなかった場合には、より涙ぐましい努力が求められます。
その翻訳プログラムを「コンパイラ」とか「インタプリタ」とか呼びます(両者の違いは割愛)。
軽く説明しますと、「コンパイラ」は事前一括翻訳、「インタプリタ」は実行時翻訳の違いです。
Sunが作ったこの言語は、コンパイル時にプラットフォーム依存の機械語に翻訳するのではなく、当たり障りの無い中間言語に翻訳・圧縮します。
この、Javaの当たり障りの無い中間言語を、「バイトコード」といいます。
さて、本題のC#は、C/C++を拡張した書式で書かれたプログラムをMS独自の中間言語に翻訳し、.NET Frameworkという部分がそれを更に翻訳、実行。
そしてこの、C#の中間言語を、「MSIL(MicroSoftInterMediateLanguage)」といいます。
どう見てもC#がJavaの仕組みと機能をパクっていて、構文もちょっと似通っていて、更に後追いの特権としてJavaの欠点を出来る限り潰し、高速化し、そんなものを全く同じ市場に向けて提供したとしても、それも仕方がないと思います。
ここでは、C#とJavaを対象として見ていますが、これが、JavaVMと.NetFrameworkを対象として見た場合、恐ろしいことが発覚します。
なんと恐ろしい陰謀でしょう。
シェラ0x19歳は、Microsoftの策略に怯えつつ、やっぱり泥沼になってしまって、ちょっと後悔しています。 |
2002/10/10 | Pascal規約 | ||
ようやく修羅場の1/3が終わって、ちょっと一息なシェラです、こんにちは。
修羅場ってる間に、いつの間にか、季節はもう冬。
さて、この間、投稿フォームで、このような投稿をいただきました。
……こんな話でも、需要があってよかった。(ぇ
このPascal規約というものは、簡単に言うと、関数の呼び出し方や、関数からの戻り方等が定義されているもので、他にもたくさんある規約の中の一つです。
では、この規約で一体何が変わるのかというのを、軽くまとめてみましょう。
装飾名というのも、聞き慣れない言葉だと思いますが、これは、コンパイラが関数の定義時に生成する文字列のことです。
では、試しに、以前の「WinTest」プロジェクトで、MAPファイルを生成してみましょう。
アンダースコア(_)がついていて、装飾名の後に、アットマーク(@)と引数サイズの16バイトが書いてあるのがわかりますね。
ところで、なぜ、このような規約がいろいろあるのでしょう?
しかし、ここで困ったことが起こります。
というわけで、DLLを作成、使用する際には、問題を起こさないようにするために、常にこの呼び出し規約を意識して、プログラムを組むのが吉ですね。
シェラ0x19歳は、ネタをくれる投稿に感謝しています。 |