Ada

gcc-4.8の変更点

相変わらずchangesに何も書かれてませんのでメモっときます。 4.7の時の変更が派手だったぶん、今回はおとなしいです。まあでも4.8で一番嬉しいのは-Ogと思う。 Ada2012のattributeの更なる実装 'Overlaps_Storageとか'Importとか'Conventionとか。めぼしい…

headmaster 2013

C Ada

URL → https://github.com/ytomino/headmaster/wiki/Document前回 → http://d.hatena.ne.jp/ytqwerty/20101025#p1というわけで良いタイミングですので(?)、headmasterの現状を書いておきます。 headmasterと先達プロジェクト headmasterは、C言語を滅ぼすこ…

OCaml Ada interoperability

adaside.ads *1 with System.Storage_Elements; package adaside is subtype Value is System.Storage_Elements.Integer_Address; use type Value; function caml_string_length (S : Value) return System.Storage_Elements.Storage_Count; pragma Import (…

Adaと64bit呼び出し規約とlldiv

lldivを呼ぶ関数を書いてたらちょっと驚きました。 こういうの。 procedure call_lldiv (x, y : long_long_integer; q, r : out long_long_integer) is type lldiv_t is record q, r : long_long_integer; end record; pragma Convention (C, lldiv_t); func…

振り返ってみる

「Ada言語の現状」という検索キーワードでここにたどり着いた方がおられるらしい。ふと振り返ってみると、私が最初にAdaに触れてから、随分とAdaも変わりました。昔語りをしてみましょう。

GNAT開発環境について〜gcc付属ツール

Ada

2012年12月時点でのgccまたはGNAT GPLをインストールした際に付属する「公式」ツール群の紹介を行う。多岐に渡るので、一つ一つの詳しい説明は行わない。各ツールの細かい情報はそれぞれのドキュメントを参照して欲しい。もし知らないツール名があったらちょ…

Ovenモドキ妄想

Ada

gcc-4.7ではAda2012のAda.Iterator_Interfacesが実装されました。 コンテナをfor文で回すためのものですが、要するに所謂"range"そのものですので、Ovenの様に連鎖させることもできるはずです。(まあこんなもの無くてもシグネチャを全部自分で決めてしまえば…

gcc-4.7のAdaの変更点

公式Release NoteのAdaのところが相変わらず手抜きなので、いつものようにメモっときます。今回はなぜかAdaCoreが本気出してて、gccがStage 3(バグ修正のみのフェイズ)に入ってもガンガンコミットされてたりしてたので、最後まで追いきれてないです。ウォッ…

4.7がStage 3に入ったので試してみた

2012対応状況 use all type → 「変数 := 式;」の形の式の部分でのみOK。 Implicit_Dereference → 関数呼び出しの返値でのみOK。 range-based for(違) → OK、ありえんぐらい酷いコードが出てくるけど動く。Ada.Iterator_Interfacesもちゃんとある。 operator …

Delphiの文字列並の効率を実現できるようにUnbounded_Stringを改造したい

Ada

何度も書いてますが、言語組み込みの文字列とライブラリ提供の文字列では効率に天と地の差があります。C++みたいになるべく自然に使えるように努力している言語ですら、その差は到底埋められていません。ましてやAdaのUnbounded_Stringなんて(略)ですよ。 De…

ところで

Ada

http://www.ada-auth.org/standards/12rm/html/RM-A.htmlを眺めていて、Wide_やWide_Wide_バージョンが必要な大抵のpackageはAda.直下にWide_なんとかがあるのですが、StringsだけAda.Strings.Wide_なんとかの形になる(他と同じならAda.Wide_Strings.なんと…

Ada2012で追加される文字判定サブプログラム

Ada

http://www.ada-auth.org/standards/12aarm/html/AA-A-3-2.htmlIs_Line_Terminator, Is_Mark, Is_Other_Format, Is_Punctuation_Connector, Is_Spaceが追加されます。Unicodeカテゴリともちょっと違うようですし(ていうか素直にIs_XXXをUnicodeカテゴリの全…

たまにはOOP

Ada

定期的にAda 95のRationaleを読み返したくなります。http://web.archive.org/web/20020607043031/http://www.tsujiken.ee.kogakuin.ac.jp/jada95_02.htmlこのRectangle(四角)からCuboid(立方体)を派生させる例、OOPの入門としては犬猫動物並によくあると思う…

作りかけの置換ランタイム

本当は完成させてから偉そうに書きたかったのですが、もうなんといいますか完全に私事で自業自得ですがそれどころではありませんので、書いちゃいます。https://github.com/ytomino/drake今までGNATについてあーだこーだ文句を書いたりコンパイラに勝手なパ…

ソースファイルの読み込み

お久しぶりです。ASISのチュートリアルは大抵、コンテキストを用意したらすぐに翻訳単位の列挙をはじめてまして、大事なことがぽっかり抜けています。 それは……どうやってソースコードをASIS環境に読み込ませるか。どのソースファイルを対象にするか教えてな…

歴史語り

どう考えてもASISを完全マスターする時間はないので、発表の構成を考えます。 まず発表全体を見渡すと、他は新技術が目白押しです。メタプログラミングテーマで必須に思えるC++、Dすら無い。それどころかこれから作られる言語まで入ってます。 すると必然的…

ASISのビルド

メタプログラミングの会でASISネタで発表させていただけることになりました。 ただ……問題点がひとつ。今までに私はASISを使ったことがありません。というわけでしばらくASISの勉強シリーズにおつきあいください。ASISなら俺のほうが詳しいから発表代わりやが…

Cの.hからのトランスレータ

C Ada

ある程度形になってきたためこっちに書きます。 http://panathenaia.halfmoon.jp/alang/headmaster/ Cの.hをAdaの宣言に直すトランスレータです。この間の愚痴はこれを作っていたのでした。やっていることは、-fdump-ada-specの二番煎じ、SWIGの三番煎じ、CI…

String Encodingぅ

Ada

Ada2012ではUTFの変換ライブラリが用意されます。http://www.ada-auth.org/standards/12rm/html/RM-A-4-11.htmlStringからUTF_8_Stringに変換(同じ型ですが)するEncode関数が用意されていることで、文字コードの違いが明確になっています。Stringには現在の…

Ada2012

Ada

いつの間にかAda2012の規格が公開されていました。 http://www.ada-auth.org/standards/ada12.html あれ……with private/end private/limited new論争とか、foreachのようなものとか、GNATがフライング実装したif式/case式とか、VectorsのReference関数とか、…

それ例外でできるよ!

Ada

http://kmonos.net/wlog/101.html#_1934090919 の記事に対して、「それ例外でできるよ」とつぶやいたところ、「再帰では最内周で補足されてしまうため使えない」と言い伏せられたため、無理やり解決してみました。 恐らく何言ってんだか何やってんだかわから…

型修飾 (調べ物パート)

Ada

FLTVの発表資料のひとつ、luciferの設計コンセプトに触発されて、妄想を垂れ流したいと思いました。ここでの型修飾という言葉は言語組み込みの機能を指します。Cのconstみたいなやつです。C++のauto_ptrやC#のNullableやJavaの属性みたいなユーザー定義可能…

クロージャで簡易ストリーム

Ada

もうイテレータはどうでもよくてAda.Containersをdisっているだけです。 O'Camlでよく見るスタイルを真似るのはどうでしょう。 let print_all (print : 'a -> unit) (next : unit -> 'a option): unit = ( match next () with | Some item -> print item; pr…

イテレータ

Ada

Iterator に抵抗があるなら、自分の時代遅れを見直した方が良いです。 http://twitter.com/shinji_kono/status/3317315646 ……と言われたので、イテレータについて調べてみました。 プログラミング言語において配列やそれに類似するデータ構造の各要素に対す…

そして忘れてた話

Ada

Ada Hackathonをやるからにはtanakmuraさんやzubenaltさんにも声をかけてみるべきでした……。 今日の今日まで思い付かなかった!なんという失策!

あれ、俺いつのまにAda Issuesに妄想を投稿したっけ……

Ada

http://www.ada-auth.org/AI05-SUMMARY.HTML Ada IssuesにあまりにもAdaらしくない提案が連投されて、Randy氏が投げた……。 Following is one of a number of "trial-balloon" proposals for future enhancements to Ada. I've been thinking about these mor…

Ada Hackathon補足

Ada

Agdaいいですね。(枕詞) さて、当日までひとりHackathonを覚悟していたのですが、最終的に5人になりまして、皆様ありがとうございました。 石川さんはNACLの遥か先のステージへ。稲葉さんやh_sakuraiさんはきちんとAda「を」作っていて凄いと思いました。shi…

問題です。

Ada

次のプログラムはなんと出力するでしょう。 with ada.text_io; with ada.integer_text_io; procedure a is k : boolean := true; type t is record x : integer; end record; function z return t is x : integer := 10; begin if k then k := false; ada.in…

訂正です。

Ada

ちょっと行ってみたのですが、場所を間違えてた気がしました。すみません。それにしてもあの辺ルノアール系列店が固まってるような……?そして新宿周辺は何度行っても迷えるのでした。

Ada Hackathon開催のお知らせ

Ada

のんびりしててごめんなさい。ようやく日時と場所を確定しました。 日時 2/14(土) 10:00 .. 18:00 バレンタインデーってなんですか 場所 ルノアール大久保店1号室*1 場所代 飲み物代含めてたぶん2500円ぐらい(5人時) 参加者 今のところ5人?増えると場所代の…