基本からやりまする
えいだです!そろそろ厳しくなってきました!いや、厳しくなんかないですっ!私は私、うちはうち、あなたはあなたであるのですよ。キャラづくりとかはなんのことだかさっぱりわからぬです!
昨日のは、よく見ると情報量ほぼゼロで、ただのリンク集にしたほうがよっぽどマシなような気がしてましたー!そんなことないです!多分貴重なMach-O ABIの日本語資料です!流行りのことばでいうと、「Mach-Oまとめサイト」って感じでするよ。でもそれだったらやっぱりリンク集にしたほうがマシです!Web2.0と書いて「まとめサイト」と読む::それはない。
さて、いよいよ、Adaをやりまする!ここまで長かったー!二日しかやってないのにー二日ともAdaの話してぬー!
いや、それはどうでもよく、ようやくAdaネタです。と、思ってネタをやってみようとしたら、基本的なことがわからぬまま停止して、どうしようもないのであった。あった!(というわけで、このネタはまた明日で)
というわけで、ネタより前に基本をやるます!何事も基本が大事です。日々の基本の積み重ねが、なんだかんだであって、基本の「基」の字の形をじっくり見てください!下のほうが広がってて、いかにもどっしりとした構えに見えますよね!そう、土台が肝心なのでする!
しかも!さらにじっと見てると、「墓」っていう字に見えてくるから不思議ですねっ。
さて、というわけで、えーと、何の話ですか?お墓の話ですー違います。うん、無理矢理話を繋げていきますと、まず、最初の問題として、拡張子「.adb」と、「.ads」が何を意味してるのかわからぬところであります。が、まあ、そこらへんはちょっと調べてわかりました。
- adb: Ada の Body
- ads: Ada の Specs
って感じですなー。Adaの仕様っていうより、GNATの仕様っぽです。
http://www.adahome.com/Resources/Compilers/GNAT-info.html#15
それで、次の問題は、「mainがどーやって決まるかわからぬ」という問題であります!
http://adahome.com/Tutorials/Lovelace/s1s2.htm
には、
Note that in Ada there's nothing special about the name of the main program (in C and C++, it must be called main, and in Pascal, it must be specially identified as the program).
大体訳: Adaではmain用の特別な名前はないですよ (C/C++はmain Pascalはprogram)
としか書いてない!どーやってmainは決まるねん!
多分、大体こんな感じです。
- ひとつのコンパイル単位(Compilation Unit)があって、その中に、いっこのPackageかSubprogramかを入れられます。(http://www.adahome.com/rm95/rm9x-10-01-01.html)
- GNATの場合、いっこのSubprogramからなるadbをgnatblとかすると、ほいできあがり
Ada言語として、エントリポイントは決まってなくて、GNATがそういうルールを決めてるのだと思わるるー(違ってたら申し分けぬ)
procedure None is A:Integer; begin A := 8; end None;
まず、こういうプログラムを用意しました。(何もしないprocedureの書きかたがわからぬかったよー。何もしないプログラムはむずい!Python → Pass が思い付かぬ。Haskell → return () が思い付かぬ)
これを、gnatmakeを使わないでコンパイルすると、
~/test/ada/none $ gcc-4.1 -c none.adb ~/test/ada/none $ ls none.adb none.ali none.o ~/test/ada/none $ gnatbind -x none.ali ~/test/ada/none $ ls b~none.adb b~none.ads none.adb none.ali none.o ~/test/ada/none $ gnatlink none.ali ~/test/ada/none $ ls none none.adb none.ali none.o ~/test/ada/none $ ./none ~/test/ada/none $
こんな感じになるまする。
- gccでaliと.oができる
- gnatbind で b~xxx.adb と b~xxx.ads ができる
- gnatlink でリンク
て感じですかねー。aliとb~xxxが何かわからぬですが。飽きてきたので、そこらへんはまた気が向いたらやるます。
と、いうわけでもうmainが無いからと言って迷わないですよ!
Adaの地味におもしろいところ集シリーズその一(最終回)