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

■ このスレッドは過去ログ倉庫に格納されています
1名無しさんは伊達じゃない
垢版 |
NGNG
どうよ?
NGNG
>>384
いんや、実行時はCと変わんないよ。コンパイル時チェックが厳しいだけ
まあ、デバッグコンパイルしたのを運用すれば範囲外の数値なんかは検出してくれるが…
386デフォルトの名無しさん
垢版 |
NGNG
盛り上がってまいりました!
387デフォルトの名無しさん
垢版 |
NGNG
>>386
工エエェェ(´д`)ェェエエ工
NGNG
>>387
(・∀・)イダ!!
389デフォルトの名無しさん
垢版 |
NGNG
>>374
>>375
名前がまぎらわしいけど、フリーのIDEあるよ。
GPS: The GNAT Programming System
http://libre.act-europe.fr/gps/main.html

あと、前からあるのはAdaGIDEとか。
http://www.usafa.af.mil/dfcs/bios/mcc_html/adagide.html
NGNG
GPS…酷い名前だ。
391デフォルトの名無しさん
垢版 |
NGNG
>>390
誤解されそうだな。
392デフォルトの名無しさん
垢版 |
NGNG
>>390
名前が一緒っていいのか?
393デフォルトの名無しさん
垢版 |
NGNG
>>384
まあ、C/C++でいうバッファオーバフローはないね。
http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/c-cpp.html
394デフォルトの名無しさん
垢版 |
NGNG
>> 371
MPIとは違うな。
rendezvousは、1ノード上のマルチスレッド間通信。

MPIみたいな多ノード間の通信の言語仕様は、Annex E "Distributed Systems"。
http://www.adaic.org/standards/95lrm/html/RM-E.html
395デフォルトの名無しさん
垢版 |
NGNG
このスレの住人には常識かもしれんけど

http://e-words.jp/w/Ada.html

> 当時の最新のプログラミング理論やソフトウェア方法論をまるごと取り入れようとした野心的な言語仕様で、厳密なデータ型の定義や、ソフトウェアのモジュール(部品)化、並行処理に関する仕様が特徴的である。

> しかし、あまりに多くの仕様を取り込もうとしたことが過度の肥大化を招き、当時の貧弱なハードウェアで開発を行なうのは困難になってしまった。

> このため、1980年代中盤から後半にかけて、より「軽い」仕様を持ったC言語に取って代わられた。

これ文の特にこの部分
>当時の貧弱なハードウェアで開発を行なうのは困難になってしまった。

これ読んでふと思た。
パソコンでもメモリが1G、CPUクロック3Gが常識な今、まだアセンブラに近いようなC言語使ってて良いの?
ポインタなんてのはCPUの構造を熟知してアセンブラがある程度わかって初めて正確に理解できるようなもんでしょ。

きっとAdaの時代がくるに違いありません。ひょっとしたら進化したPascalなのかもしれないけど?
識者の検証を頂けたら幸いです。
NGNG
Adaって、C並にガリガリの組込用言語だと思ってるんだけど。
Cの場合実装依存として投げてしまってる部分を、
全部ガッチガッチに文法にしてコンパイルエラー出せるようにしてあるから
仕様がでっかくなってるだけで。
NGNG
>>393にも関連するけどAdaでOSを作ろうとかいう話があったね。
(海外Webサイト)
NGNG
コンパイルエラーちゃんと出してくれる方がプログラマにはやさしいと思うが?
NGNG
>Adaって、C並にガリガリの組込用言語だと思ってるんだけど。
Adaを論理回路設計に特化させたのがVHDLだし。
つまりVHDLでCPUも造れてしまうわけで。
400デフォルトの名無しさん
垢版 |
NGNG
 
NGNG
なかなか次のgcc出ないなあ…Ada05早く使いたいYO!
402デフォルトの名無しさん
垢版 |
NGNG
>>402
05だけに、2005年まで出ないのでは?
NGNG
ではこのスレも来年まで保守か…長寿スレだな(いまでも充分
NGNG
型の種類が多すぎて覚えられない。

あと、変数を大文字から始めるという慣習のために、小指がいたくなる。
NGNG
こんなイイ言語がCより前からあったなんて….
NGNG
>>404
そんな貴方に親指シフト

マジレスすると、大文字小文字無視(だから"_"で区切ってる)なので、全部小文字で打て
407デフォルトの名無しさん
垢版 |
NGNG
408デフォルトの名無しさん
垢版 |
NGNG
>> 405
Plauger(ANSI C委員会)さんも昔
“Beyond 100,000 lines of code, you should probably be coding in Ada.”
と言ってた。
NGNG
なに?コンテナライブラリが作って?
NGNG
http://www.ada-auth.org/ai-files/grab_bag/Amendment-D8.html
誰かこいつを要約してくれ
NGNG
ISOで制定されたAda95に対する修正案のドラフト版?
NGNG
列挙型としてboolean,character,Wide_Characterが予め定義されている。
 ↓(修正)
それにWide_Wide_Characterも追加しる!

とかそんなのがいっぱい書いてあるみたいだけど…
NGNG
overridingの明示が、overriding procedure …って書くようになってるなあ
pragma overriding …はどうなるんだろう

あと面白そうなのが拡張return文
C++なんかではreturnで(コピー)コンストラクタが走った後もうそのオブジェクトには触れないが
関数を抜ける前に細工ができるようになってる
414デフォルトの名無しさん
垢版 |
NGNG
Ada05がメジャーになる日は果たしてくるのだろうか?
415デフォルトの名無しさん
垢版 |
NGNG
来ないでしょ。
NGNG
ていうか日本語で入門記事キボンヌ
マジわからん
Delphiやっててもさっぱりなんだが
NGNG
>>416
Hello World程度ならこのスレの上の方にあるだろ
それ以上は逐次質問してくれい

…このスレ三人ぐらいはいそうなので俺もわからなくても誰か答えてくれるさ
NGNG
じゃあ質問して見るか。
並列処理の制御ってどうやるの?
task,task body...をいくつか書いておけばそれらは同時に処理されるんだけど
勝手に処理が始まる。こちらで任意に処理を開始したり停止したりできない。
英語のサイトも見てacceptも試して見たがさっぱりだ。
誰かわかる?
...ああいま昔のレス見てたらlovelaceっていうAdaチュートリアルにも並列処理の事載ってるみたいだな。
そこを見るの忘れてた。当たって見るか。
419デフォルトの名無しさん
垢版 |
NGNG
ゲーム作りはC++やJAVAが主流だし、日本ではこの言語がどんな所で
使われてるのかさっぱり分からん。
日本語の参考書も見たことないし…
大学か趣味プログラミングが主流なのかな?
NGNG
アメリカでも使ってるヤツ少ないんじゃないか?
NGNG
今書いてみたヘボサンプルを貼ってみるテスト。
with Ada.Text_IO;
procedure Test is
 task type A_Task is
  entry Setup(Message: in String);
  entry Join;
 end A_Task;
 task body A_Task is
 begin
  Ada.Text_IO.Put_Line("* start!");
  accept Setup(Message: in String) do
   Ada.Text_IO.Put("* "); Ada.Text_IO.Put(Message); Ada.Text_IO.Put_Line("!");
  end Setup;
  loop
   select accept Join do Ada.Text_IO.Put_Line("* exit!"); end Join; abort A_Task;
   else Ada.Text_IO.Put("#"); delay 0.1;
   end select;
  end loop;
 end A_Task;
 type A_Access is access A_Task;
 A: A_Access;
begin
 Ada.Text_IO.Put_Line("go!"); A := new A_Task; A.Setup("setup");
 delay 1.0; A.Join; Ada.Text_IO.Put_Line("end!");
end Test;
NGNG
Win32で言えば、entryがCreateEventで、acceptがWaitForSingleObjectで、
selectがWaitForMultipleObjectsで、delayがSleepで、abortがExitThread…かな。
なおacceptの後にdoを続けた場合、そのブロックが終わるまで呼び出し元は待ってるようだ。
それとtask typeって形で型にしておけば、newするまで実行されない。
NGNG
with Ada.Text_IO;
procedure Test2 is
begin
 select
  delay 1.0;
 then abort
  loop
   Ada.Text_IO.Put("*");
   delay 0.1;
  end loop;
 end select;
end Test2;
条件を満たしたらthen abort以下の処理を強制中断するとか…こんな機能あっても使うのか?
RM読んでたら、並列処理関係はほんとのほんとに無駄に機能豊富。
424418
垢版 |
NGNG
>>421-422
ありがたい。助かるよ。
が、>>421のプログラムをそのままコンパして実行って見たが
やっぱりtask body A_Task 内のaccept setup()の所で止まる...
いやぁ、上で「acceptも試して見たがさっぱりだ」と書いたが同じだよ。
acceptに入った時点でプログラムが止まるんだ。無いと普通に動くんだけどねぇ。
しかもacceptの有無にかかわらず呼び出し元も止まるし。
コンパるときに何かオプション必要だっけ?
とりあえず今やらんとしていることは>>421を参考にできそうだ。ありがとう。
NGNG
>>424
んー…別にオプションも要らないけど…
環境は?こっちはMinGWの3.4.2@Windows2000
426418
垢版 |
NGNG
>>425
GNAT3.15p+gcc2.8.1@MandrakeLinux10.0也。
gcc3.4.2でやりたいんだけどね。うまくいかなくて。
まずはしっかりと環境を整えるべきだったか。
先にgcc3.4.2使えるようにするか...。
427デフォルトの名無しさん
垢版 |
NGNG
 
428デフォルトの名無しさん
垢版 |
NGNG
>>423
select-then abortはそれなりに便利だよ。

時間をかければかけるほど精度の高い解が得られる近似計算があって、
ただし時間制約(100msecとか、イベントが入ってくるまで)が来たら、
その時点までに得られた近似解を採用しなければならない、なんて
「タイムアウト」は、リアルタイムシステムには 割とよくある
問題領域だと思うけど。

「タイムアウト」がどんなOSでもソース・コンパチで書けるって、
かなり樂。
NGNG
>>428
ほうほう
430デフォルトの名無しさん
垢版 |
NGNG
>>396
確かに。

例えばメモリマップドのハードウエアをアクセスするなら、
CやC++よりもAdaのほうが確実で樂だしね。
ユーザ定義の固定小数点も使えるからA/DやD/Aなんかも直感的。
NGNG
GNATのprotected型、multi-read-exclusive-writeになってない気がする…
気のせいだろうか?単なるクリティカルセクションのような…
432デフォルトの名無しさん
垢版 |
NGNG
>>274
タイーフォ
NGNG
>>430
まじで?
俺GBAで使ってみたいんだけど、誰かやってみるやつはいないか?
NGNG
>>433
ARM向けクロスコンパイラ、ですか。
NGNG
YES!YES!YES!
NGNG
よくわからないデスケド、この辺?
http://www.mingw.org/MinGWiki/index.php/build%20a%20Win32%20x-compiler%20for%20Linux
…逆かも
437デフォルトの名無しさん
垢版 |
NGNG
AGE
NGNG
CLONE OF ADA sage !
439433
垢版 |
NGNG
とりあえず、コンパイルできたら報告するよ
440デフォルトの名無しさん
垢版 |
NGNG
>>439
がんがれ!
NGNG
>>439
GOGO
442433
垢版 |
NGNG
コンパイルできたヽ( ´ー`)ノ
手順まとめてみた
http://tinyurl.com/42wx4

この辺が参考になりますた

http://milky.way-nifty.com/nuzou/2003/12/cygwinarmgbazau.html
http://gba.imou.to/gcc.html

ただ、adaでコンパイルはまだ試してないorz
443418
垢版 |
NGNG
ようやくgcc3.4.2のgnat*がインストールできた...
初心者よ、
ttp://gcc.gnu.org/install/build.htmlを見る前に
INSTALL/build.htmlを見よう。
...インストールなんかで詰まるのは俺ぐらいか...

ちなみにgcc3.4.2だと>>421のプログラムも正常に動作。
GNAT3.15じゃなくgccを使おう。
...GNAT3.15でいいやと思うのは俺ぐらいか...

長かったor2
444デフォルトの名無しさん
垢版 |
NGNG
>>443
乙!
NGNG
もつかれ
446デフォルトの名無しさん
垢版 |
NGNG
Adaは宇宙開発にも使われてるのかな?
447デフォルトの名無しさん
垢版 |
NGNG
ada
NGNG
PL/Iと同じ轍を踏んだ言語
449デフォルトの名無しさん
垢版 |
NGNG
>>446
FedSat - Ada Inside
http://groups.google.co.jp/groups?selm=3dfc72d4%241%40iridium.webone.com.au
International Space Station
http://www.boeing.com/defense-space/space/power/iss.html
NGNG
>The language on the On Board Computer? Ada-95. Of course.
>
>The compiler? Gnat 3.13p

>"In space, no-one can press CTRL-ALT-DEL"
>
>But with Ada, you don't have to.

カコイイ。
451446
垢版 |
NGNG
>>449
ありがd。
やっぱり使われてたんだ!
452デフォルトの名無しさん
垢版 |
NGNG
こりゃえいだって既出ですか、そうですか
NGNG
454デフォルトの名無しさん
垢版 |
NGNG
>>449
おお
455デフォルトの名無しさん
垢版 |
NGNG
Beagle 2:
http://www.xgc.com/news/2000.htm
The Beagle 2 Mars lander, using ERC32 Ada, successfully separated
from Mars Express and started its descent to the red planet.
456デフォルトの名無しさん
垢版 |
NGNG
Atlas V:
http://www.ddci.com/programs_atlasv.shtml
Lockheed Martin Space Systems depends on TADS to develop modern,
object-oriented real-time flight control software for the new
Atlas V launch vehicle.

The maiden voyage of Lockheed Martin’s first Atlas V rocket
lifted off from Space Launch Complex 41 at Cape Canaveral on
August 12, 2002, freed from its earthly bonds by flight control
software created with DDC-I’s Tartan Ada Development System
(TADS).
457デフォルトの名無しさん
垢版 |
NGNG
こいつもAdaという噂。
http://www.nasda.go.jp/projects/rockets/gx/component_02_j.html#configuration
まあ1段目はロッキードだけど。

他のところはどうなんだろう?
458デフォルトの名無しさん
垢版 |
NGNG
アメリカではいろいろ使われてるんだな
459デフォルトの名無しさん
垢版 |
NGNG
>>458
参考書もいっぱい出てるし、そうだろうな。
460デフォルトの名無しさん
垢版 |
NGNG
461デフォルトの名無しさん
垢版 |
NGNG
>>1
m9(^Д^)プギャー
NGNG
http://burks.brighton.ac.uk/burks/language/shoot.htm

すごい言われようだな(w
463デフォルトの名無しさん
垢版 |
NGNG
>>462
まあAda以外の言語にもすごいこといってるし
464デフォルトの名無しさん
垢版 |
NGNG
盛り上がってきたな!
NGNG
ADAはたぶん埋もれる言語の一つだと思う。
466デフォルトの名無しさん
垢版 |
NGNG
>>465
このスレがそのことを暗示しているような…
467デフォルトの名無しさん
垢版 |
NGNG
 
468はるな
垢版 |
NGNG
作り方分かりますか?
コンピュータが 0から 9までの数を 4つ, 順序付きで重複なく選ぶとする. プレイヤ(人間)は, この数列を当てるのだが, はずれた場合に提示されるヒントは次の通り.

正解の n番目の数を n番目に解答していれば, Hit と呼ぶ. Hit の個数がヒントとして提示される.
正解の n番目の数を m番目(n≠m)に解答していれば, Blow と呼ぶ. Blow の個数がヒントとして提示される.
NGNG
with Ada.Numerics.Discrete_Random,Ada.Text_Io,Ada.Integer_Text_Io,Ada.Calendar;
use Ada.Text_Io,Ada.Integer_Text_Io,Ada.Calendar;
procedure game Is
package R Is New Ada.Numerics.Discrete_Random(natural); use R;
type Four_Array is array(1..4)of Integer;
function Generate Return Integer is
seed:Generator;
begin
Reset(seed,Integer(Seconds(Clock)*100));
return Random(Seed) mod 10;
end Generate;
function Search(Target:Four_array;Seed:In Integer) Return integer Is
begin
for I in 1..4 loop
if Target(I) = Seed then
return i;
end if;
end loop;
return 0;
end Search;
procedure Initialize(computer:In out Four_array) is
begin
for I in 1..4 loop
computer(I):=-1;
end loop;
end initialize;
NGNG
procedure Decide(computer:in out Four_array) Is
int:Integer;
begin
Initialize(Computer);
for I in 1..4 Loop
loop Int:=Generate;exit when Search(computer,Int) = 0; end loop;
Computer(I):=Int;delay 0.01;
end loop;
end Decide;
procedure Read(Player:in out Four_array) is
int,Index:Integer:=1;Char:character;
begin
while Index <= 4 Loop
Get_Immediate(char);
case Char is
when '0'..'9' =>
Int:=Character'Pos(char)-16#30#;
if Search(Player,int) /= 0 then
New_Line;Put_Line("その値はもう使えません");
for I in 1..Index-1 loop
Put(Character'Val(Player(i)+16#30#));
end loop;
else Put(char);Player(index):=int;Index:=Index+1; end if;
when others =>
New_Line;Put_Line("0から9までの数値を入れてください");
for I in 1..Index-1 Loop
Put(Character'Val(Player(I)+16#30#));
end loop;
end case;
end loop;
end Read;
NGNG
function Compare(computer,Player:in Four_array) return Boolean is
Hit_Count:Integer:=0;
Blow_Count:Integer:=0;
Search_Result:integer;
begin
for I In 1..4 Loop
Search_Result:=Search(Computer,Player(i));
if Search_Result = I Then
Hit_Count:=Hit_Count+1;
elsif Search_result /= 0 then
Blow_Count:=Blow_Count+1;
end if;
end loop;
New_Line;
Put_Line("Hit : "&Integer'Image(Hit_count));
Put_Line("Blow : "&Integer'Image(Blow_count));
if Hit_Count = 4 then
return True;
end if;
return False;
end Compare;
computer,player:Four_Array;
begin
Decide(computer);
loop
Initialize(player);
Read(Player);
exit when Compare(computer,Player);
end loop;
end game;
NGNG
ここって改行いくつまで...?
まぁもっとうまいひとが書けばもっと短くなるだろうが。
473デフォルトの名無しさん
垢版 |
NGNG
474デフォルトの名無しさん
垢版 |
NGNG
>>24
> あの設計者は、懲役3年執行猶予2年くらいには相当するね。
執行猶予のほうが短いなんて…
NGNG
>>29
ぬるぽ
476デフォルトの名無しさん
垢版 |
NGNG
>>465
embedded?
477デフォルトの名無しさん
垢版 |
NGNG
>>475
ガッ!
478デフォルトの名無しさん
垢版 |
NGNG
(;´Д`)ハァハァ
NGNG
Adaって今更な感じもあってか、書籍やWebページが少ないね。
特に書籍にいたっては絶版になっているのか入手がむずい。

みなさんはどうやって情報を得てるんですか?
NGNG
RM読む
NGNG
A#+DirectXとかやったひといないのかな
482デフォルトの名無しさん
垢版 |
NGNG
>>481
そんなのがあるのか、知らなかったよ。
483デフォルトの名無しさん
垢版 |
NGNG
(;´д`)ハァハァ (;´Д`)ハァハァ (;゜Д゚ )ハァッハァッ :.` ;:.・∵ ゚ д:.`
484デフォルトの名無しさん
垢版 |
NGNG
すでにこれまでに話題なってそうな質問です。恐縮。
Adaが突然実装できなくなるとどんな飛行機が落っこちますか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。