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

■ このスレッドは過去ログ倉庫に格納されています
1名無しさんは伊達じゃない
垢版 |
NGNG
どうよ?
2005/11/19(土) 01:35:43
>>550
おもいっきし書くのが面倒くさくて
しかもコンパイラが厳しすぎること。

いや、マジで。
2005/11/19(土) 12:35:19
>>552
つまりアフォには書けない ⇒ バグが減る、ウマー

ってことか。(w
2005/11/20(日) 00:16:04
…Σ (゚Д゚;)さてはお前、頭いいな。

Adaでアドバンテージと言えば、並行処理を挙げないと。
2005/11/20(日) 01:18:06
sourceforge.netにAda関連のプロジェクトがあるね
2005年になってから増えたようだ

コンテナライブラリもいろいろあるようだが皆使ってる?
Booch Componentsなんてどうよ?
2005/11/20(日) 19:08:11
>>553
俺のようなアフォでも苦労してコンパイルが通る頃には
なかなかバグの無いコードになってるところとかな。
Adaにしかないような機能はいっぱいあるけど
アドバンテージとするなら「コンパイラの厳しさ」が勝ると思う。
2005/11/21(月) 20:45:56
コンパイルといえば

GCC3.4.2でコンパイルしたら実行ファイルのサイズが202KBだったんだが
GCC4.0.1でコンパイルしたら29KBになってワロス
何もオプション変えてないのにな
素敵コンパイラ(´∀`)
2005/11/21(月) 20:59:33
・何かの拍子でデバッグシンボルを削除した
・知らないうちにlibgnat-4.0.dllを使うようになってる

どっちかじゃないか?
2005/11/21(月) 21:02:48
>>555
コンテナは標準のAda.Containersができたから、
STLで言うところのalgorithmを共通化するためには
関数のシグネチャ(Adaなんで命名規則は違ってていい)が
Ada.Containersと互換じゃないと…。

Ada.Containersも微妙に肥大だったり小回りが利かなかったりするんで
互換の軽量コンテナがあればいいんだが。
2005/11/21(月) 22:20:39
>>558
> ・知らないうちにlibgnat-4.0.dllを使うようになってる
ディストリビューションごと変えた(だけな)んで多分こっちだワ
lddで見てみたらリンクしてた
2005/12/01(木) 18:44:12
declare
 torf:boolean:=false;
begin
 put_line(torf'img);
 torf:=boolean'value("true");
end;

↑これが通ってちゃんと動く
さらにAdaのboolean型は列挙型であるため
ユーザー定義の列挙型でも可能

他にこれができる言語ってある?
2005/12/01(木) 20:39:28
program testBool;
 var
  torf: boolean;
begin
 torf := false;
 writeln(torf);
 readstring('true', torf);
 writeln(torf);
end.


program testEnum;
 type
  userEnum = (melon, apple, orange);
 var
  userEnumV: userEnum;
begin
 userEnumV := melon;
 writeln(userEnumV);
 readstring('apple', userEnumV);
 writeln(userEnumV);
end.
2005/12/01(木) 21:26:01
PascalはRead/Writeで列挙型が入出力できる。文字列とのスマートな変換は無かったと思う。DelphiならRTTIで可能。
あとはJavaだのC#だのVM系はできて当然なんじゃないかな?

でもAdaのが一番手軽で便利っぽい。
2005/12/01(木) 21:28:15
…ていうか562はPascalか…処理系によってはあるのかもなあ。
Delphiのリファレンスには562の使い方のReadStringは無かった。
2005/12/02(金) 08:04:35
JDK1.5

enum Foobar { FOO, BAR, BAZ }
class FoobarSample {
public static void main(String[] a) {
   boolean b = Boolean.valueOf("true");
   System.out.println(b);
   Foobar fb = Foobar.valueOf("FOO");
   System.out.println(fb);
}

最近のスクリプト系の言語だと連想配列(ハッシュ)使うかな?
2005/12/03(土) 20:48:42
これどうですか?
Ada―移植性とプログラミング・スタイル
ttp://www.amazon.co.jp/exec/obidos/ASIN/4764901579/503-1051603-3695108
2005/12/04(日) 00:43:52
1989年かー。
Ada2005どころかAda95もまだだなー。

でもAdaは他の言語と違って、言語の底にある考え方を理解して無いと、何もできないっぽい(←うけうり)ので、今も売られてる本があるだけマシか…?
2005/12/04(日) 02:56:04
レオン:エイダ〜

エイダ:レオ〜ン

シェリー:うぅ・・・

エイダ:Gウィルスが・・・

レオン:エイダ〜

G最終形態:グチャグチャ

自爆シークエンス:あぼ〜ん
569デフォルトの名無しさん
垢版 |
2005/12/04(日) 03:19:06
AdaでOracleにアクセスできる処理系ってありますか?
AdaでWebアプリケーションを作成することはできますか?
2005/12/04(日) 04:03:14
>>569
Webアプリは単にCGIなら標準入出力が扱える言語ならなんでもできるので勿論Adaでも可能。
サーバー向けにgccでクロスコンパイラ作ればいい。
JSPだのASP.NETだのは、JGNATやMGNATでがんばれ。
Oracleは、商用Adaなら普通にバインディングついてくるっぽい。
2005/12/05(月) 21:11:19
>566
どうだったかなぁ。
お勧めはこれだけど。
http://www.amazon.co.jp/exec/obidos/ASIN/4781904734/qid=1133784487/sr=1-17/ref=sr_1_2_17/250-5384434-5362614
在庫切れか。
2005/12/23(金) 22:25:25
h
573デフォルトの名無しさん
垢版 |
2005/12/28(水) 21:15:15
o
2005/12/29(木) 06:23:55
バグの出にくい言語仕様を考える。
http://pc8.2ch.net/test/read.cgi/tech/1111747980/

このスレのアイデアの半分ぐらいは既にAdaにあるんだよなあ…。

> そうすると、制約だらけでウザいだけの言語になって、さらに既存の言語の拡張という形はとれなくなるが。

までピッタシカンカンだしなあ…。
2006/01/07(土) 19:02:40
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure NSort is
N : Natural;
begin
Get(N);
declare
Used : array (1 .. N) of Boolean := (others => False);
procedure Rec(F : Natural; Par : not null access procedure) is
begin
if F < N then
for I in Used'Range loop
if not Used(I) then
declare
procedure P is
begin
Par.all; Put(I, 2);
end;
begin
Used(I) := True; Rec(F + 1, P'Access); Used(I) := False;
end;
end if;
end loop;
else
Par.all; New_Line;
end if;
end Rec;
procedure Prompt is begin Put('>'); end Prompt;
begin Rec(0, Prompt'Access); end;
end NSort;
576デフォルトの名無しさん
垢版 |
2006/01/19(木) 21:02:18
age
2006/02/05(日) 11:33:10
すいませんどなたかlimitedが何なのか教えてもらえませんか
一応RM95読んだんですけど生半可な英語力でわかりませんでした
2006/02/05(日) 14:43:56
>>577
限られた、とか、限定の、とか、限定版、とかそういう意味で、
Adaでの意味は「代入禁止」。
2006/02/06(月) 00:43:16
なるほど。tnx
2006/02/14(火) 10:30:27
保守するだけじゃなんなので、教えて君。
つか、見てる人何人いるんだろう?

とりあえず、Adjustで何をしたらいいのか教えてください。
代入時に呼び出されてるっぽいことはわかるんだけど。
代入直前なのか直後なのか、引数は代入される側なのかする側なのか、とか。
2006/02/14(火) 11:47:22
このスレの誰か入門書を書いてくれー。
2006/02/14(火) 13:08:30
「RM嫁」とか、「とりあえずそれっぽいの書いて、コンパイルエラーを消してけ」としか。
RMは非常に読みにくいが、コンパイルエラーは親切。

「初心者の初心者による入門書」なら書けるけど、、、読んでも得るもの少ないよ?
2006/02/14(火) 20:35:12
>>580
oopweb.com
ttp://oopweb.com/Ada/Documents/AdaLinux/VolumeFrames.html?/Ada/Documents/AdaLinux/Volume/book.html
とかどうだ。
コピーコンストラクタのようなものと書かれてはいるが
2006/02/14(火) 21:34:42
>>580
a := b;としたらAdjust(a);が呼ばれる。
例えば中にポインタがあったりして、その中身まで複写しないと
いけないようなケースでコピー後の調整を行うのがAdjust。
全部コピーして回るC++のコピーコンストラクタとはちょと違う。

type a is new Controlled with record x : access Work_Area; y: Integer; end;
procedure initialize(obj:in out x) is begin obj.x := new Work_Area; end;
procedure Free is new Unchecked_Deallocate(...);
procedure finalize(obj:in out x) is begin Free(obj.x); end;
とすると必要なAdjustは
procedure adjust(obj:in out x) is begin obj.x := new Work_Area'(obj.x.all); end;

x,yとも値は勝手にコピーされるけど、xは中身まで複製しないとその後共有してしまうしFinalizeで二重解放になってしまう。
2006/02/14(火) 22:04:25
なるほど、「複製」ではなく「調整」か
586580
垢版 |
2006/02/14(火) 23:33:15
>>583-584
ありがとう!
とりあえず代入の際の補助と理解しといた。
2006/02/15(水) 01:14:38
>>581
切実
2006/02/15(水) 23:44:59
amazonあたりでAdaの洋書を買おうとか思うんだがお薦めある?
2006/02/27(月) 09:53:30
ttp://www.macada.org/
このへん使ってる人っている?
590デフォルトの名無しさん
垢版 |
2006/03/02(木) 00:58:34
>>589
ttps://libre2.adacore.com/
のppc-darwinを使ってる。
591デフォルトの名無しさん
垢版 |
2006/03/02(木) 01:09:03
>>588
いまなら
Programming in Ada 95:
www.amazon.com/gp/product/0201342936
Ada As A Second Language:
www.amazon.com/gp/product/0070116075

もうすこししたら
Programming in Ada 2005 with CD:
www.amazon.com/gp/product/0321340787
co.ukだと出版がJune 30, 2006と書いてあるけど,
著者もまだ予定を出版社からきいてないみたいだからデマかも。
592デフォルトの名無しさん
垢版 |
2006/03/02(木) 01:35:23
>>588
とりあえず、
Object Oriented Programming in Ada95
ttp://burks.bton.ac.uk/burks/language/ada/ada95.pdf
とか
Ada for Software Engineers
ttp://stwww.weizmann.ac.il/g-cs/benari/books
なら,もと有料だったのがタダ。
特に、あとのBen-Ariのは,RM95の解説にもなってるのでお薦め。
昔これ読んで、やっとStreamが理解できた。
2006/03/16(木) 11:11:36
そろそろ保守
594デフォルトの名無しさん
垢版 |
2006/03/28(火) 04:30:58
ほす
2006/04/06(木) 05:04:02
AdaってGPLなんだよね
それさえなければな
2006/04/06(木) 08:17:58
GNATがGPLなだけで、他の有償コンパイラはあるけど?
ちょっと検索すれば一杯出てくる。IBMとかも出してるし。
2006/04/08(土) 21:46:30
あれ?コンパイラのGPLも感染するんだっけ?
2006/04/08(土) 22:17:54
GNATつかうとGPL汚染されるはず。
リンクされるライブラリの問題?
2006/04/08(土) 22:37:34
ライブラリの問題で、コンパイラ自体は、エディタとかと同じ扱いだったはず。
2006/04/08(土) 22:59:47
>GNATつかうとGPL汚染されるはず。
ブルブルガタガタ
2006/04/09(日) 00:35:26
libgnat.aがGPLだしねえ。って震えるほどか?
あとバイナリ配らないことにすればGPLにする必要もないわけで。
2006/04/09(日) 14:41:12
バイナリ配らないプログラムにどんな意味が?
2006/04/09(日) 14:46:17
相手が非Windowsだったらgccぐらい入ってるだろうから、makeしてくれ、と。
あとCGIとかもバイナリは「配布」する必要が無い。

ソースはGPLとは矛盾しない別ライセンスにして、GPLのバイナリと一緒に公開してもいいわけで。

…Adaの問題というかgcc使う限りそうなんだけどな。
gccが嫌でそれでもAdaを使いたいなんて意思がある奴はどっかの製品買ってるだろうし、こんなのでごねてるのはgccがGPLでなくても結局使わないとも思うが。
2006/04/09(日) 15:00:35
gcc は関係ないでしょ。gcc を使っても GPL に汚染されない言語もある訳だし。
2006/04/09(日) 15:14:18
そりゃ、ラインタイム全部用意できればねえ。
MinGW用のwindows.hとインポートライブラリなんかはGPLじゃないので、それだけで書いたらGPL以外にできるんだけども。
2006/04/15(土) 09:30:31
Cからimportすれば別だけどAdaでfork出来ない、つまり別プロセス立てられないよね
サーバーアプリケーションとかデーモンを作るときはどうするんだ?
サーバーアプリはtaskでいいかもしれんが
2006/04/16(日) 00:53:52
あれ?そういえば標準ライブラリに別プロセス実行機能が無いね。
やっぱ組み込みまでターゲットとかそんな理由なんだろうか。(GNAT.OS_Libにspawnの宣言はあるけど)
2006/04/28(金) 22:45:32
保守というかチラシの裏:begin
 図書館で検索したら一応4冊のAdaの本があった。
 日本語1冊、英語3冊。
 日本語のは出版が古くAda83で、さらにサンプルが少なかったので、英語の一冊を借りてきた。
 さて、GWはこいつと格闘するか。
end 保守というかチラシの裏;
2006/05/04(木) 04:53:25
GPS は凄いけど作るものが無い。
どこかで Adaプログラマ募集してないかな。
内職時給800円くらいでおk。
2006/05/04(木) 05:25:49
GPSは2.0代のを見てしょぼいと思ったが
GNAT GPL 2005のほうのGPS 3.0インストールしてみたら凄かった。

更にVS統合が出てた。
ttp://www.martincarlisle.com/VisualStudioIntegration.htm

仕事は……それこそ軍隊にでも雇われないと、内職に出すようなのは無いんじゃないか……。
開発速度を犠牲にしても堅牢性を追求するAdaの姿勢は、一般企業が求めてるものとは違う気がするし、何より日本では知名度が無い。
つーか、仕事あるなら俺を雇ってくださいお願いします。
2006/05/04(木) 11:28:48
仕事があるとしても新規開発じゃなくて
過去Adaがポッとで始めたときに物珍しさ?で作られたものの保守くらいだろうね
大概C++で書き直されてるんじゃないかと思うけど
612デフォルトの名無しさん
垢版 |
2006/05/13(土) 22:40:35
ほしゅ
613デフォルトの名無しさん
垢版 |
2006/05/13(土) 23:51:08
新参ですが、エイダは何が得意なんですか?
2006/05/14(日) 00:19:00
数学と競馬が得意ですわ
2006/05/14(日) 00:40:15
多次元配列を扱うサブルーチンが書きやすい。
2006/05/14(日) 06:43:58
delphiみたいなradツール作ってよ。
2006/05/14(日) 16:04:50
>>616
GWindows
…Delphiの足元どころか一般的に想像されるGUIツールの水準にもとかそういう話はこの際おいといてくれ。
618デフォルトの名無しさん
垢版 |
2006/05/16(火) 00:02:20
Adaで業務システム組んだことのある奇特な方いますか?
2006/05/24(水) 22:50:05
GWindowsがDelphiライクに使えればいいのになぁ、無理か。

GtkAdaは、、、どっちもどっちか。
2006/06/08(木) 12:21:50
h
621デフォルトの名無しさん
垢版 |
2006/06/14(水) 21:09:21
GNAT GPL 2006キター
622デフォルトの名無しさん
垢版 |
2006/06/14(水) 21:37:56
マジだー!!!!ktkr!!!!!
2006/06/17(土) 21:57:22
保守

と、チラシの裏。
さて、GNAT GPL 2006入れたらコンパイルできなくなったぞ、と。
>Ada compiler not installed on this system
orz
環境変数かな。
2006/06/20(火) 17:31:12
インストール時にPATHに追加するか聞いてくるくせに、追加しないかダメみたいだ。なんじゃそら。
私のとこもgcc-4.1いれてたので、そっちが起動されて混乱してた
625デフォルトの名無しさん
垢版 |
2006/06/22(木) 01:07:10
>>591
>Programming in Ada 2005 with CD:
>www.amazon.com/gp/product/0321340787

届いた!
2006/06/22(木) 02:11:22
>>625
うぉ、うらやまし。
AdaCoreにある.pdf以上のこと、書かれてる?
627デフォルトの名無しさん
垢版 |
2006/06/22(木) 03:45:22
CreateGame〜陸海空オンライン〜
次世代新基軸MMO製作プロジェクト始動!

PG大募集!力あるものだけね。


よろすく
2006/06/22(木) 08:51:29
>>624
Windows?
今LinuxにインストールしたけどPATHに追加するかなんて聞かれなかった
629623
垢版 |
2006/06/22(木) 09:26:43
俺も聞かれなかった@ppc-darwin
手作業で追加しろ、とは言われたけど。

結局、gccが見つけてくれなかったのはPATHの表現が原因だった。
公式の表記には従っとくものだと思った。
2006/06/22(木) 23:09:51
>>628-629
Yes, Windowsです。
2006/06/22(木) 23:40:17
GPSで、TABで3文字インデントを行うような設定どっかにないかな……
Ctrl+/で補完される基準もよくわからん
2006/06/23(金) 01:26:41
宣言関係は2文字インデント、処理が3文字インデントだっけか。
何かに乗ってたなぁ、何だっけか。。。
2006/06/30(金) 12:58:34
拡張リータン構文はどうやって使うの?
return ... do 〜 end return;内とそれが帰った先の両方で
system.address_image 使って変数のアドレスが同じ(= return 時のコピーが行われない)ようだということは確認できたけど
↓のようにしたらアドレスは同じでも中身のデータが壊れてましたよ?
俺使い方間違ってる?

function test return string is
str:string(1..10):=(others=>'n');
begin
return ret_str:string(str'range) do
for i in str'range loop
ret_str(i):=str(i);
end loop;
end return;
end test;
2006/06/30(金) 21:06:25
>>633
サイズ可変な型に関しては怪しいらしい。
http://www.adacore.com/2006/05/10/NF-A05-DC16-057-ada/
>subtype is constrained and 〜

もしかControlledもダメか?きついな。
2006/06/30(金) 21:49:38
Ada用のx64用コンパイラはありませんか?
2006/06/30(金) 22:10:28
>>635
gccを自分でビルドすれ
2006/07/01(土) 00:15:10
x64で動作するコンパイラじゃなくて
x64ネイティブバイナリを吐き出すコンパイラって意味じゃないの?
gccのAdaって対応してたっけ?
2006/07/01(土) 15:32:09
そう言われると不安だな……。
AonixやIBMなら売ってそうな気もする。知らんが。
2006/07/01(土) 23:50:35
>>633
limitedじゃないやつに対してもコンパイラ内部エラーがでた。
実装されたばかりの機能だから、バグバグみたいだ……。
not nullなんかもgcc 4.0.0直後はgenericと混ぜるとすぐ落ちてたしな……。
2006/07/01(土) 23:51:53
補足、Limited_Controlledを拡張returnで返そうとするとまだ実装されてませんとかでる。
2006/07/14(金) 19:12:19
拡張リターンヤバいマジヤバい
privateなrecord型のメンバー変数のアクセス型返せる上に
それやるとコンパイル時にもランタイム時にもエラーにならない
そして普通に中身書き換えられる

>>640
limited_controlled型は拡張リターンでなくてもエラーにならないか?

そして保守
2006/07/15(土) 01:55:07
>>641
普通のリターンでエラーになるのは当たり前なんですよ。コピーができないのがlimited型だから。
ただ、拡張リターンは「コピー無しに値を返せる」わけで、limited型にも使えるのがウリのひとつだった筈。
2006/07/26(水) 12:32:11
GNAT GPL 2006アップデートされてる?
libre2.adacore.comの日付がJul 24, 2006になってるけど
2006/07/30(日) 02:22:56
DLしなおしてみたが、gdbの日付が変わっているだけだった。しょぼん。
2006/07/30(日) 02:58:21
GNAT GPL 2006だとimited withしてもtask typeが見えるようにならないみたいなんだが、
これって仕様通りなのかな?
実験してたらGNAT落ちるし。
package Class_As is
type Hog
2006/07/30(日) 03:00:29
途中でおくちゃった

-- class_as.ads
limited with Class_Bs;
package Class_As is
type Class_A is tagged record
B : access Class_Bs.Class_B;
Foo : access String;
end record;
procedure Hoge(O : in out Class_A);
end Class_As;

-- class_as.adb
with Class_Bs;
package body Class_As is
procedure Hoge(O : in out Class_A) is
begin
O.B := new Class_Bs.Class_B;
end Hoge;
end Class_As;
2006/07/30(日) 03:01:52
-- class_bs.ads
limited with Class_As;
package Class_Bs is
type Class_B is limited private;
private
task type Class_B is
entry Hoge;
end Class_B;
end Class_Bs;

-- class_bs.adb
with Class_As;
package body Class_Bs is
task body Class_B is
begin
accept Hoge;
end Class_B;
end Class_Bs;

task typeが見えないなら1度privateで宣言したらどうなるか実験してたら、
コンパイル中にGNAT落ちるし。
2006/07/30(日) 08:49:23
仕様は知らんがたぶんバグじゃないか?
649デフォルトの名無しさん
垢版 |
2006/08/10(木) 18:58:15
エイダってあのANUBISの?
2006/08/10(木) 21:16:40
>>649
由来は一緒ですがこのスレのAdaと貴方の知るエイダは別物です。
2006/08/16(水) 00:43:24
ほす
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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