AdaによるCGIの優位性

http://www.wikiroom.com/sakurai/?D%B8%C0%B8%EC%A4%CB%A4%E8%A4%EBCGI%A4%CE%CD%A5%B0%CC%C0%AD

今回も相当参考にさせていただきましたid:h_sakuraiさんのWikiから盗作で。ごめんなさいごめんなさいごめんなさい。

ヒアドキュメントな文字列定義が…できない

できません、面倒です(キッパリ)

ネィティブ言語なので起動が高速。perlの10倍は速いだろう(ベンチマークが必要)

gdcとバックエンドは同じgccですので当然同じことが言えます。

正規表現がGNAT.Regexpとして一応用意されてはいるが、簡単に文字列操作とはいかない。

GNAT.Regexpもマッチを判定するだけの機能しか持ってないし…。

高機能な文字列処理関数群がありません。

まず無制約配列とUnbounded_Stringの使い分けが手間ですからねー。ライブラリの文字列関数も貧弱ですしねー。素のCよりはマシという程度です。95年の規格というのを考えたら仕方ないのかもしれませんが。一部変わったライブラリも見かけますが、使い方がわかりません(__

JVM向けのコンパイラがありながらJavaには似ても似つかずスクリプト言語のような感覚はかけらもありません。

複雑で単機能なライブラリはスクリプト言語で書くような感覚でCGIを書くことが不可能です。そのため、Cに近い感覚でがりがり書いていくしかありません。本来のAdaの用途から書き捨てよりは大きなアプリケーションに向いてると思われます。コンパイル速度が遅いのもスクリプト言語から遠くイライラする要因でしょう。
えーと、その、言語が厳しいので、コンパイル通ればまず実行時に落ちたりはしないというのがありまして、サーバーではデバッグが困難ですのでその点は安心感があるかも。

ハッシュを言語仕様にもっていません。

…もっていません。

コンパイルが低速。

C++といい勝負かもです。DやDelphiなんかとは比較にもなりません。

文字列操作メソッドを…メソッドって何?

実行時バインディング(仮想関数呼び出し)であってもドット記法は使いませんので全て通常の関数呼出しの形で統一した記法ができます。つまりどういうことかというとA.B().C()…みたいに連鎖が気軽に書けません。

個人レベルで作成したCGIを困難にクロスコンパイルして無料サイトで利用できる。

私はクロスコンパイラをバイナリ配布するつもりはないので…。た、たぶん上記手順でやれば問題ないですよ、ええ。
現在確認しているサーバは(aaacafe freebsd)です。

終了時のみガーベジコレクションによる、メモリ管理。

GNATのガーベジコレクションは終了時にしか動きませんが、対話型アプリやメモリを大量使用するものならともかくCGIにはそれで充分です。

ソケットライブラリがGNAT.Socketとして用意されています。

私は使ったことはありませんが。

高速チャット、ゲームCGI、大型掲示板どころかCGI全般に向いていない。

こんな言語がCGIに向いててたまるかこのやろー(--;

サーブレット的なアプリケーションフレームワークが研究されている…かもしれない。

いや、その、私は知りませんが、歴史のある言語で利用者もDより多そうだからあの、あるかも、ないかも。

古い言語だが多分日本ではフロンティアである。

既にコンパイラは安定どころかその辺の商用コンパイラを凌いでいると思われます。エラーメッセージもやたら親切ですし。日本で使う人がいないというだけでしょう。とりあえず、Adaで書かれたCGIは皆無にちかいので、作ればAda言語界で有名になれるかもしれないが、日本にはAda言語界そのものが存在しないかもしれない…。

問題点

書く気にもならないぐらい山積み。
では何故Dを使わなかったのかといいますと、各所で有名なdelegateバグを私は確実に踏みそうなのと、Windows2000+AN HTTPDdmdCGIとの組み合わせでPOST発行時に確実に落ちてくれましたので多分dmdのメモリ管理には相性問題を起こすような潜在的バグがあるのかも…AN HTTPDのほうかも知れませんが無気味でしたので避けとくに越したことはないかなー…(へたれ)