米国国防省の標準高等言語エイダ(Ada)を語れ!

■ このスレッドは過去ログ倉庫に格納されています
1名無しさんは伊達じゃない
垢版 |
NGNG
どうよ?
81デフォルトの名無しさん
垢版 |
NGNG
Ada, 楽々受かるからだ。
82デフォルトの名無しさん
垢版 |
NGNG
Ada, rakurakuukarukarada
NGNG
82が気が付いてくれて、81も浮かばれただろ

もっとも82=81ならその限りではないが
84デフォルトの名無しさん
垢版 |
NGNG
>>83
たぶん、>>82=>>81と思われ。

そんなの気づく奴は、本人以外なかなかいない。

よくできてるとは思うけどね。
85デフォルトの名無しさん
垢版 |
NGNG
Adaから派生したDIANAって知ってる?
80年代、Adaを勉強しようとして、まちがえてDIANAの本買って鬱になった。
Ada構文⇔DIANA木に変換できるらしい。NTT通研がやっていたと思う。
NGNG
>>84
81って、大昔の ASCII かなんかの雑誌にのっていた覚えがあるよ。
87デフォルトの名無しさん
垢版 |
NGNG
Ada って Pascal から生まれたんでしょ?
だからいまだにアメリカではPascalを教えてるんだね。
あとでCにもAdaにもいけるからね。
88デフォルトの名無しさん
垢版 |
NGNG
Algol系の言語が好まれるということだな。
PL/1, JOVIAL, modula-2/3などなど

PascalからCという流れは?だが。
NGNG
raise Sage; --(意味不明)
NGNG
>>89
そういやコメントが--なんだよね。
NGNG
if 書き込む then
 存続;
else
 dat落ち;
end if;

-- ぶらさがりelse問題の無い理想的なif文です
NGNG
loop
 存続;
 exit when dat落ち;
end loop;

-- 無限ループ専用の構文があるのも珍しいかも
NGNG
A: loop
 loop
  exit A;
 end loop;
end loop;

loop
 loop
  goto B;
 end loop;
end loop;
<<B>>
NGNG
declare
 type S is array(Character) of Boolean;
 Age: S := ('A' | 'G' | 'E' => True, others => False):
 Sage: S := ('S' | 'A' | 'G' | 'E' => True, others => False):
 R: S;
begin
 R := Age and Sage; -- Booleanの配列はPascalみたく集合演算できる
end;
NGNG
Thread.Write(Text => "仮引数明示呼びだし", Mail => sage);
NGNG
with System; use System;
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Win32; use Win32;
with Win32.WinUser; use Win32.WinUser;
procedure WinHello is
 pragma Linker_Options("-Wl,-subsystem,windows");
 function To_CStr(C_Str: CHAR_Array) return LPCSTR is
  function UC is new Ada.Unchecked_Conversion(Address, LPCSTR);
 begin
  return UC(C_Str(C_Str'First)'Address);
 end;
 Dummy: Win32.INT;
 Text: constant CHAR_Array := "Text" & Win32.Nul;
begin
 Dummy := MessageBox(Null_Address, To_CStr(Text), To_CStr("Caption" & Win32.Nul), MB_YESNO);
end WinHello;
NGNG
ADA95どうよ?
NGNG
Ada95で、クラスワイド型じゃないと多態しないというのはまあいいのですけど、
多態で飛んでいった先の各ルーチンに渡されるオブジェクトはクラスワイド型じゃない方ですよね?
多態先からまた多態したい時はそのつどクラスワイド型にキャストし直すしか無いのでしょうか?
NGNG
>>92
> -- 無限ループ専用の構文があるのも珍しいかも

CSPの影響でしょうね。
100デフォルトの名無しさん
垢版 |
NGNG
>>87
Concurrent Cは、Adaから影響を受けたね。
NGNG
委員会が作った言語に優れたものは1つもない。
102C++好き
垢版 |
NGNG
>>101
最近のC++には耳の痛いお言葉で…
103デフォルトの名無しさん
垢版 |
NGNG
C++は、委員会が決めたのか?
NGNG
C++に贈る言葉
「船頭多くして、船、山に登る」
105C++好き
垢版 |
NGNG
>>103
最近は http://anubis.dkuug.dk/jtc1/sc22/wg21/ こういうところがメインですよ。
もうBjarne Stroustrup個人の言語じゃないです。
NGNG
しかしAda(やCommonLisp)はそもそも委員会が設計した言語だからな。
もっとひどい。
107C++好き
垢版 |
NGNG
CommonLispは、mailing-listの議論をGuy Steeleの独断でまとめた。
だから委員会じゃないが、確かにすっきりしない言語だな。
NGNG
対照的なのはOberonとかSchemeとか。
好き嫌いはともかく、すっきりしてる。
109デフォルトの名無しさん
垢版 |
NGNG
うんだ、Ada はええだ。
恩を Ada で返すだ。
NGNG
>>109
ワラタ
NGNG
Adaに無限ループ専用の構文なんてないぞ。
loop文の繰り返し規則がオプションになってるだけ。

for ch in CHAR'RANGE loop ... end loop;
while ch in CHAR'RANGE loop ... end loop;
loop ... end loop;
112デフォルトの名無しさん
垢版 |
NGNG
平社員: 係長、何か泳いでいますね〜
係長: エイだ。
113ADA
垢版 |
NGNG
ADA
NGNG
保守
NGNG
AADDAA
NGNG
人類初のプログラマーは女性
http://www-6.ibm.com/jp/lead/010115_a.html
NGNG
raise…してもネタも無し。保守
NGNG
国防省というと、Multicsがついこないだまで現役で動いていた
そうですが、それってPL/IをAdaに焼き直して動かしていた
とかいう話はあるんでしょうか?
NGNG
保守sage
120デフォルトの名無しさん
垢版 |
NGNG
age
121_
垢版 |
NGNG
作られた時代を考えたらAdaって凄く先進的な言語ですね。。。
122デフォルトの名無しさん
垢版 |
NGNG
作られたときは先進的だけど今はどうってことないじゃん。なんて国防総省が
いまだにエーダなんてつかってるかわからないよーん。ボケ。
NGNG
F-22しか使われてるの知らないけど、他にはどんな軍用兵器の開発に
使われてるの?

124デフォルトの名無しさん
垢版 |
NGNG
スティンガー
125デフォルトの名無しさん
垢版 |
NGNG
エイダちゃん
キタ━━━(゚∀゚)━━━!!


でも年輩ハッカーしか知らないに( つД`)1デリゲート
126C++好き
垢版 |
NGNG
>>122
違うよ。そういう後ろ向きの理由じゃなくて、Multicsはバリバリの現役だったよ。
B2 security通っていたからね。
http://williamstallings.com/Extras/Security-Notes/lectures/trusted.html

「コンピュータセキュリティの基礎」D. Russell, G.T. Gangemi Sr.
山口英監訳 アスキー出版、が日本語書籍では詳しい。絶版なのかな?
http://www.amazon.co.jp/exec/obidos/ASIN/4756102999/qid%3D1028710845/250-8907122-0857047

>>123
>>50から辿ってね〜。
NGNG
国内でも航空管制で使われてない?
NGNG
保守
NGNG
Text_IO.Put_Line("下へ参ります");
130デフォルトの名無しさん
垢版 |
NGNG
GCC に Ada が入ったみたいだが、なぜ?
NGNG
Ada.Coda.IUNA
NGNG
Ada.Coda.You.Know
NGNG
ttp://www.adahome.com/Pictures/ladyada.gif結構美人じゃない??
134 
垢版 |
NGNG
いまgnat-3.13p-8.i386.rpm ってのダウソしてるんだが・・・
・・・不安
135134
垢版 |
NGNG
RedHat7.1と7.3にすんなり入った。

gnat-3.13p-runtime-1-8.i386.rpm
と、gnat-3.13p-8.i386.rpm
の、とりあえず二つだけ持ってきて、この順にrpm -ivh するだけ。

ちょっとイラっとしたことといえば、User's Guideにあった
$ gcc -c hello.adb が駄目で、gnatgccじゃないとコンパイル
しなかった事ぐらいだった。

まぁ温故知新って言うか、割と楽しめそうな感じ。
NGNG
lovelaceっていうAdaチュートリアルみつけた。
なんかよさげ。

Section1-4にAdaの実行時例外を投げさせる例題があったけど、
例外なんか一個も投げられないで、おかしな値を表示しながら
無限ループしてる。
調べてみると、漏れのつかってるGNATではコンパイル時の
オプションで-cargs -gnatoと指定しないとだめだと分かった。
それ以外はいい感じだった。もうしばらく続けてみよう。

今日はLesson4までやった。
明日はLesson5〜8までやる。オブジェクト指向が含まれる。
あさってはLesson9〜12までやる。Genericsが含まれる。
しあさってはLesson13〜17(最後)までやる。並行処理とかが含まれる。

・・・つうか暇。。。
NGNG
Windowsでも、mingw版gccで試せる、と一応書いておく。
138デフォルトの名無しさん
垢版 |
NGNG
levelace って名前がなんか
軍用って香りがするのは
Ada に対する偏見だろうか?
139 
垢版 |
NGNG
Augusta Ada Lovelace(バイロンの娘。世界最初のプログラマ)
NGNG
Boochなんかも、もとはAda畑の人だったわけね。
でRational Rose もAda Illustratorってツールに起源をもつとか。

もしかしてSmalltalk程度には評価されていいのかも知らんね。
case-insensitiveなのは、いやなんだが・・・。
NGNG
さてと、lovelaceとか言うチュートリアルを半分までやって見た。

メッセージを受け取る側のオブジェクトも引数としてメソッドに渡すわけか。
UMLとか書くときはどうするんだろう。

あとタイプとクラスを別々の概念として扱うってのが、なんかイマイチ
よく分からん。(興味深くもあるけど。)
代入とコン(デ)ストラクタを定義するのに、いちいち組み込みのクラス
から派生させるてのもいかがなものかと思いますた。

マルチディスパッチできるらしいんだが、これはちょっと面白いかも。
寝る時間までちょっといろいろ書いて見るか。
142デフォルトの名無しさん
垢版 |
NGNG
Adaたんって可愛かったのかな?
写真なんか無い時代だよね…
NGNG
Ada.NETはともかく、.NETに総称を付け加える研究をMSRでやってるよ。
144デフォルトの名無しさん
垢版 |
NGNG
そのgnatってネットワーク系のライブラリとかあります?
単にHTTPでPOSTして結果をうけとるだけでいいんですけど。
NGNG
>>143
貴族の娘だから肖像画くらいはあるんじゃねーの?
NGNG
Lady Augusta Ada Byron
http://www.cs.kuleuven.ac.be/~dirk/ada-belgium/pictures.html#LA
NGNG
現在mingwダウンロード中。
「lovelaceっていうAdaチュートリアル」とやらはどこにあるの?
148デフォルトの名無しさん
垢版 |
NGNG
gcc-3.2-Ada-20020817-1.tar.gzをmingwのディレクトリに重ねて解凍しただけではコンパイルできないのか?

fatal error, run-time library not installed correctly
cannot locate file system.ads

みたいに言われる…(system.adsそのものはmingw\lib以下の深いところに存在する)
多分何かパス設定が必要なんだろうけど、誰か知りませんか?
149148
垢版 |
NGNG
自己レス。
環境変数ADA_INCLUDE_PATHとADA_OBJECTS_PATHが必要でした。
さて、Hello Worldのコンパイル通ったし、lovelace探すか…。

やけに生成されるexeがでかい気がするのですが、スマートリンクみたいなオプションが必要?
それともこんなもの?
150デフォルトの名無しさん
垢版 |
NGNG
好奇心で勉強するのは良いけどさ、
Adaって案件あるのか?
先輩が昔、三菱のホニャララで聞いた事が
ある、とか言ってたけど...
151デフォルトの名無しさん
垢版 |
NGNG
>>150
軍事関係なら多いだろ
でもそういうのは機密なものばかりだろうから話題には上らない
NGNG
>>150
三菱というと、もしかしてF-2とかの戦闘機ってAdaで動いてるのか。
それはそれで面白そうだ。
# ま、漏れ的にはAdaは遊びで十分なんだけど。現実的に。

ちなみに、ソフトウェアの再利用性に関連した論文とかで、
CAMP(Common Ada Missile Package)ってのをたまに
見かけるんだけど、是非、拝見して見たいものだが。
やっぱミサイルクラスとか弾頭クラスとかあるのかな・・・?。

あとNASDAとかもにもありそうな気がするんだがどうなんだろ。>案件
NGNG
>136
>無限ループしてる。
なった、なった。
>調べてみると、漏れのつかってるGNATではコンパイル時の
>オプションで-cargs -gnatoと指定しないとだめだと分かった。
そんなとこまで気付かなかったよ。
154141
垢版 |
NGNG
>>153
おお始めてみたんですか。心強いです。
自力で分からないことあったら訊くかも知れんのでよろしこ。

あと、正直すまんかった。
間違ったこと書いてたらしい。マルチディスパッチはだめみたいだ。
operation can be dispatching in only one type.
いきなり怒られた。
Visitor使えよってことか。
NGNG
>147
>「lovelaceっていうAdaチュートリアル」とやらはどこにあるの?
目次
ttp://www.adahome.com/Tutorials/Lovelace/master.htm
トップ
ttp://www.adahome.com/Tutorials/Lovelace/lovelace.htm
156147=148
垢版 |
NGNG
>>155
ありがと。でも、既に検索して見つけちゃってました。
とりあえず順番にクイズをやってます。
NGNG
一応書いとくか。
LovelaceのSmallってサンプル(ダウソしたやつ)は、俺の環境RH7.3+gnat3.13pでは
makeできなかった。
ちょっとがっかりしたけど、深追いするのはやめときますた。

今、ライブラリとか調査中。
NGNG
>>157
mingw+gnat(バージョンはどこで見るの?)でもビルドできない…と思いきや、
zipに格納されているファイル名が8文字で切れてしまっている様子。
(directions.ads が directio.ads になっている等)
ファイル名を正してやればビルドできました。

しかし…二部屋しかないのか?このゲーム(w
NGNG
win32adaというものを拾ってきて、WindowsAPIを呼ぶ実験をしてます。
一部書き換えが必要になったものの(gnatのバージョン違いが原因と思われる)、
なんとか成功…はしたのですが、
毎回、リンカにlibuser32.a等を渡してやらないとリンクできない面倒な状態になってしまってます。
リンカ(gnatlink)に渡すデフォルトオプションを書いておける、環境変数とか設定ファイルとかありませんか?

それと、win32*.aliを、ADA_OBJECTS_PATHにコピーしても、見てくれず、
毎回ソース(ADA_INCLUDE_PATHに配置。こっちは見てくれる)からコンパイルされるのは何故だろう…。
NGNG
>>159
いまソケットライブラリやってるんだけど、こっちではこんな風にmakeできる。

1.gnatmakeに渡すオプションをなんかのファイル(例えばfoo)に書く。
-I/usr/lib/ada/adasockets -L/usr/lib/ada/sockets -largs -L/usr/lib/ada/adasockets -ladasockets
 (-largs以降がリンカオプションらしい)

2.そんで、gnatmake hogehoge `cat foo`

窓、出ましたか?
NGNG
``というのはUNIXのコンソールの機能ですか?cmd.exeにそんな機能あったかな…。
無駄と思いつつ`type foo`なんて書いて何も起きない事を確認。

とりあえずソースコードに直接pragmaを埋めこむ事で、一応対処はできました。

pragma Linker_Options("-s -mwindows");
pragma Linker_Options("C:\progra~1\mingw\lib\gcc-lib\mingw32\3.2\adalib\win32ada.a");
pragma Linker_Options("C:\progra~1\mingw\lib\libgdi32.a");

で、窓、出ました。
( ソースコードにパスを埋めこむのは気持ち悪いのですが… )

-s をリンカに渡すと、スマートリンクらしいです。だいぶ.exeが小さくなります。
162160
垢版 |
NGNG
>>161
スマソ。なんとなくCygwinユーザかと思ってた。

>で、窓、出ました。

いいなあ。。。
漏れもGtkでやって見ようかな。

それにしても情報が少ない。まさに「ソースがドキュメント」状態・・・
163 
垢版 |
NGNG
メモっとこ。
主要ドキュメント。

『Language Reference Manual 』
言語自体のリファレンスだけど、BNFばかりでとっつきにくい。
http://www.ocsystems.com/user_guide/powerada/html/ada_lrm/lrm-TOC.html

『Ada 95 Quality and Style Guide 』
スタイルガイドだけど、要所要所コードの断片が載ってちょっと分かりやすい。
http://www.grammatech.com/style_guide/contents.html
NGNG
巫女の予言とかいうやつ?
NGNG
海で泳いでいるのは
NGNG
興味本位でいじってみてるんだが、最初思ってた程悪くは無いわな。
日本語のサイトで「巨大なゴミ」とか書いてるところもあったけど、
別にそうは思わないなあ。

流行らなかったのは、だいぶ前のレス>>62にあったように開発ツール
とかの問題だと思うんだが。言語仕様じゃなくて。
NGNG
総称が使えるという事は、STLみたいなものもある筈…
というか初期STLはAda由来というのをどこかで見た…

どなたか、御存じ無いですか?
NGNG
>>167
sglってのがあるみたいですね。
逆にC++STLをもとに作ったらしいですが。

ftp://ftp.cs.rpi.edu/pub/stl/SGL.tar.gz

IEからはダウソできなかったんですが、anonymousでftpに入ったら
持ってこられました。中身のバージョンは2.0a3でした。
まだ使ってませんが。
NGNG
>>168
テスト程度に使ってみました…で、印象としては、ファイルを細分化させ過ぎているせいで、
withの数や特殊化の数が増えて、C++/STLほど気軽に使えない感じ。
Controlled型がprocedure内でローカルに作れない(特殊化含む)というのも、初めて知りました。痛い制限ですね…。
NGNG
ラプターはエイダで動いてるらしいな。
171 
垢版 |
NGNG
>>169
おれのとこだと、通らないテストがいくつかあった。
自分で修正しようとしたけど、漏れのスキルじゃまだまだ無理っぽかった。

>痛い制限ですね…。
やはり突っ込みどころは多々ある。かなりある。
あまり気にしませんが。

ライブラリといえばBoochコンポーネントとかいうのにもコレクションとか
あったと思う。どうなんだろ?
NGNG
ところで、Adaは言語仕様でGCが想定されていますが(同時にGC無しモードも想定されてるけど)
GNATのGCは、exe終了時にしか働かない気がします。
forで回してnewしまくったら、あっさりヒープが足りないとエラー出して終了、
でも、それまでに割り当てたオブジェクト(Controlled型にしてました)に関しては、
きちんとFinalizeが呼ばれて解放された事が確認できます。

マトモに作ろうと思えば、GCは気休め程度に考えて、
やはりUnchecked_Deallocation使ってFreeするしか無いのでしょうかね。
それとも知らないだけで、明示的にGC起こすような関数があるのでしょうか?
173169
垢版 |
NGNG
>>171
>おれのとこだと、通らないテストがいくつかあった。

あら、ほんと。(昼間は全部試して無かった)
そのままじゃ使えない色が強くなってきました…→SGL
NGNG
Booch試してみました。
STLとは異なる作りですが、こっちの方がいい感じ。テストも通ったみたい。
しばらくこれで遊べるかも。

直接関係ないのですが、BoochのCase-Studyを見る限り、
Adaは関数内関数をgeneric引数に使えるらしいです。
スコープとかどうなるのかよくわかって無いのですが、なんか強力そうな感じは受けます。
175デフォルトの名無しさん
垢版 |
NGNG
日本語の情報が少ないage
C++とも勝負できる仕様と思うんだけどなあ…
176_
垢版 |
NGNG
>>175
仕様の巨大さで?
いや、好きだけどね。
NGNG
C++の場合、構文のいい加減さを繕うために無駄に仕様がでかい気がするが、
Adaの場合、使いもしない機能を詰め込んで無駄に仕様がでかい気がする。
NGNG
日本政府の被差別言語エタ(穢多)を語れ!
NGNG
うちの大学の授業では Ada は必須ですが、好きじゃないです。
180デフォルトの名無しさん
垢版 |
NGNG
pragma CPP_xxx って、具体的にはどう使うのだろう。
上手く使えば、例えば、IUnknownを定義できたら、COMなども使えると思うのですけど。

GNATCOMというのを見てみたら、pragma CPP_xxxは使わずに、VTableを自前で作ってる…。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況