Ada

mod型

Ada

type T is mod 16;なT型で0-1とか計算すると15になります。type T is mod 10;だと9になります。 Boolean'Pos(I in 2..3)より(-I)/13の方がずっと短いため、配列宣言などで範囲型を作るついでがある時は試す価値あり。

placement new

Ada

Adaがいまいち書きにくい理由のひとつに、placement newが無いことが挙げられます。いやまあplacement newが無くて書きにくいのなんかコンテナぐらいだろってのは間違いないですけどね。 一応説明しておきますと、placement newといいますのはC++での名称で…

Rope

Ada

くやしいのでRopeだけ作ってました。 文字列の操作って圧倒的に末尾へのAppendが多い(と思う)ので、真面目にバランス取らないといざSliceの際に単なるリンクリストとしての性能しか出ないような……。勿論取って無いんですが。各ノードを非破壊的にすると、回…

嵌めら…(ええとええと)…れた

Ada

月U9の「れ」が覚えられなくて困る。そんな話はどうでもいいです。 久しぶりにAdaの言語仕様に嵌められました。 with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure Test is A : String (10 .. 20); B : Str…

NASAのコーディング規約なのか?

Ada

あとで読む。http://software.gsfc.nasa.gov/AssetsApproved/PA2.4.1.1.1.pdf

ADT

Ada

そういえば(恐ろしく前に)AonixのADTが公開されていたので試してみました。 http://www.aonix.com/adt_downloads.html ツールチェインとしてObjectAdaとGNATが選べます。ObjectAdaは勿論ObjectAdaを買わないとコンパイラは手に入りませんし、GNATのほうは、"…

改行を文字列中に表記する

Ada

'["0a"]'を思いついたのですが、ASCII.LFと文字数変わらなかったorz んー……1バイト差はどこでついているんだ。

敗北日誌

http://golf.shinh.org/p.rb?delete+blank+lines#Ada Dさんは96バイト。今見たら77まで縮んでます何事でしょうか。 私は↓で102バイト。 with text_io;use text_io;procedure a is s:string:=get_line;begin if s>""then put_line(s);end if;a;end; これ以上…

70バイトecho!?

ここに、Dさんの70バイトの解があるのですが……。 http://golf.shinh.org/p.rb?echo#Ada ううむ、2日考えてたんですが、わからん……。 with text_io;use text_io;procedure a is begin put_line(get_line);a;end; だけで71バイト到達してしまいます。*1 GNAT.I…

Ada Golf

Ada.Text_IOではなく単なるText_IOを使う Integer'Image(X)ではなくAda.Integer_Text_IO.Put(X,1);を使う (GCC限定) でもX'Imgで済む時はそっちを使う > goto L;は他の長ったらしい制御文と比べ相対的に短い 頼み込んで-gnat05付けてもらったのでGet_Line(S,…

concept_map

C++0xの話を聞いてきました。 concept_mapという、Haskellのclassに対するinstanceで書くアダプタをusingで後から選択/交換可能というステキ機能が追加されるそうです。 仮に、++と*と比較演算子を要求するInputIteratorがあったとして、intに足りないのは*…

書式化入出力・妄想

Ada

むしろ単にAdaがめんどくさ過ぎるだけか。 Text_IOは割と何でもPut(X);で出せることは出せるのですが、Putひとつにつきひとつの値しか出せないため、他の言語がWriteLn(X, Y, Z);で済むところをPut(X); Put(Y); Put(Z); New_Line;と書かないといけないのは、…

gccのAdaランタイム改造

それはそうとhttp://panathenaia.halfmoon.jp/alang/gcc-private-build/ですが、改造は着実に進んでまして、既に入出力関連は普通に使いそうなものは全部UTF-8になっています。 特にpragma Wide_Character_Encodingの追加されたgcc-4.3系では、s-wch_*を実行…

Ada vs Fortran

Ada

http://gnuada.sourceforge.net/pmwiki.php/Main/Oct2006CLAGFORTRANComparison comp.lang.adaのスレッドはこことかこことか。 いろいろ試行錯誤がなされてますが、gccに限れば、コンパイラの実装具合からいって、Fortranの圧勝と思われます。

gnatmem

Ada

gccのMakefileですとgnatmemは作られないしMinGWにはlibaddr2line.aが無いため作れないのですが、そこはそれ、GNAT GPLには付いてきます。 どーせgmem.outのフォーマットなんて変わっちゃいないだろうと思ったら案の定でした。 procedure test is x : access…

マージ来た

http://gcc.gnu.org/ml/gcc-patches/2006-10/ アンタgccのMLは暫く見ないと誓ったんじゃないのかなんて話は置いておいて、AdaCoreの定例一括マージ来ました。これでgccのtrunkもGNAT GPL 2006相当になったわけですが、どうせならあと何週間か早ければ、gcc-4…

勝手に直す、これ最強

ある種の諦めとも。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/gcc-4.2.0-mingw32.7zhttp://panathenaia.halfmoon.jp/alang/gcc-private-build/gcc-4.2-patch-by-yt Ada.Calendar GNAT GPL 2006のAda.Calendar.Arithmetic, Formatting, Time_…

GNAT GPL 2006のCalendar

Ada

ローカルタイムへの変換にlocaltime_rを呼んでるのですけどMinGWのランタイム(VC++のランタイム)にはtm_gmtoffが無いのでタイムゾーンがてんでデタラメになる件。(それまではタイムゾーンが実装されて無かった) うるう秒を真面目に計算に含めているのですけ…

Eclipse

Ada

http://www.aonix.com/adt.html AdaコンパイラメーカーのひとつAonixの、Eclipse対応プラグインADTが、無料で使えるようになってました。 ObjectAdaの他にGNATにも対応しているようです。 ただし金を出さないと、ObjectAdaの評価版同様に、2000行制限だかが…

gcc-4.2-20061007 with patches

Ada

http://d.hatena.ne.jp/ytqwerty/20061006#p1へんの流れでAda.Directoriesのパッチを作っていたのですが、gcc-4.2-20061007に組み込んでビルドしてみました。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/gcc-4.2-20061007-mingw32-with-patche…

AdaでCGIを書かないべき10の理由

Ada

なんちゅーかレスポンス遅いにゃーと思うんじゃー。えいだがわるいのか!この約180歳め! 口に出すのも憚られる人の村 ……というわけでいつもと逆のことをほざきます。 ネィティブ言語なので起動が低速。 ぶっちゃけmodなんちゃらの方が速いです。 Adaのgener…

Ada.Directories Windows(MinGW)特別版

Ada

http://d.hatena.ne.jp/ytqwerty/20060713#p1へんの流れで──ついにgccに文句を言う→AdaCoreのひと曰くGNAT Proなら対応済みだから買え(GPLじゃ無いのかよ)→GNAT GPL 2006は一見対応している風に見えて変なのでGNAT Proでも直ってるとは思えない!文句たらた…

.gprがそこそこ便利?な件について

Ada

Ada専用makefileみたいなやつです。 http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gnat_ugn_unw/GNAT-Project-Manager.html gprmakeという専用コマンドがあるものの、こちらは.gprのファイル名を指定するオプション-Pのあとにスペースを入れられないのでgprmake…

pragma Restrictions

Ada

……の用途がようやくわかった。 pragma Restrictionsというのは、ある機能を封印するpragmaです。 ですが、RMにはたいしたものが定義されて無くて、実装依存の機能やObsolescentなものを弾いてPureなサンプルコードを書くためのものか?ぐらいの認識だったの…

ASIS表現を見る

Ada

package test is type t is record a : integer; b : integer := 10; end record; end test;手始めにこれがASISでどう見えるのかを探りたいと思います。

ASIS

Ada

https://libre2.adacore.com/で公開されている最新版のASISをgcc-4.1.1用にビルドしてみました。http://panathenaia.halfmoon.jp/alang/gcc-private-build/asis-for-gcc-4.1.1-mingw32.7zASISは、Adaのソースコードをめたちっくに処理するための標準で定めら…

それはともかく

Adaでも、実行時ディスパッチが行われるストリームに対して、1文字ずつCharacter'Readと'Writeなんてやったら遅いことがわかった。やる前にわかれって話ですが。あほか私は。 一括で読んでしまってString上の位置で処理するようにしたらまあそれなりの速度に…

真・AdaによるCGIの優位性

Ada

なんてネタを持ち出してきたのは、こないだ(去年だろ)のパクリネタと異なり、まともな話がAdaCGIというライブラリのところにあったのです。 意訳してみます。 利点 断然速いぜ コンパイル時のチェックが凄いぜ 読みやすいぜ C/C++よりセキュリティ抜群だぜ A…

堕落したAdaプログラマのレベル10

Ada

レベル1: pragma Restrictionをこまめに書いている。長いサブプログラムはseparateする。コンパイラのチェックだけでは飽き足らず各種ツールを併用している。AARMは暗唱できる。Adaは甘過ぎると思っているが他の言語では話にならないので仕方なく使っている…

ICFPの例のVMの問題をAdaで解いた人がいる

Ada

http://www.rfc1149.net/blog/2006/08/01/icfp-ada-virtual-machine/ 余談ですが、スピードが出ない言語は使い物にならない問題なのは、全くもって正しいのでは……と恐る恐る。