アカウント名:
パスワード:
仕様記述言語でシステムを定義するだけで完成とか・・・
#あれ?それって結局仕様記述言語でコーディングしているだけ?
いやいや。仕様はあくまで仕様なので、具体的なアルゴリズムは書く必要はありません。入出力の関係さえ正確に書けば、欲しいプログラムが自動的に出来上がります。たとえばこんな風に書けばその場に応じた適切なソートアルゴリズムを生成して…
sort(XS, YS) :- permute(XS, YS), sorted(YS).permute([], []).permute([X|XS], ZS) :- permute(XS, YS), insert(X, YS, ZS).insert(X, YS, [X|YS]).insert(X, [Y|YS], [Y|ZS]) :- insert(X, YS, ZS).sorted([]).sorted([X]).sorted([X,Y|XS]) :- X = Y, sorted([Y|XS]).
…ということを1982年ごろから10年かけて国家プロジェクトでやろうとしてたんですよね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
仕様書の作成 (スコア:1)
仕様記述言語でシステムを定義するだけで完成とか・・・
#あれ?それって結局仕様記述言語でコーディングしているだけ?
Re: (スコア:1)
仕様書がいい加減でもプログラムで何とかする→仕様書をプログラム並みに正確に書かないと動作しない
に移行するだけってこと忘れてるよね。
Re: (スコア:2)
いやいや。仕様はあくまで仕様なので、具体的なアルゴリズムは書く必要はありません。
入出力の関係さえ正確に書けば、欲しいプログラムが自動的に出来上がります。
たとえばこんな風に書けばその場に応じた適切なソートアルゴリズムを生成して…
sort(XS, YS) :- permute(XS, YS), sorted(YS).
permute([], []).
permute([X|XS], ZS) :- permute(XS, YS), insert(X, YS, ZS).
insert(X, YS, [X|YS]).
insert(X, [Y|YS], [Y|ZS]) :- insert(X, YS, ZS).
sorted([]).
sorted([X]).
sorted([X,Y|XS]) :- X = Y, sorted([Y|XS]).
…ということを1982年ごろから10年かけて国家プロジェクトでやろうとしてたんですよね。
Re:仕様書の作成 (スコア:2)
> sorted([X,Y|XS]) :- X = Y, sorted([Y|XS]).
右辺は X <= Y, sorted([Y|XS]). ですね。