集合論に基づいた言語を作りたい

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2014/08/10(日) 21:27:16.56ID:x7G32Sd0
計算機科学の基礎は集合論であるという。
ならば、集合論に基づいた言語を作れば美しい言語になるのでは?
そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。
2014/09/22(月) 19:40:23.96ID:3ofAPdb2
>>326
Aのほうが遥かにマシだな。
ありきたりでも行動していればそのうちありきたりじゃない発想が出る。
行動する人に対して既存の知識を振り回して笑うことしかできない奴は
いつまでたっても何もつくれない。
2014/09/22(月) 20:07:25.83ID:SUbucwZ9
>>327
生産性が上がる例とかいうのは知らんけど。
俺が何冊か見た集合論の教科書は無限集合を扱ったものばかりだったから、
無限集合を扱えない処理系で
>教科書の章末問題をサクサクっとインプリメントする
なんてできるのかな と思った。

無限集合を扱っている教科書を想定してたから>>15になったんだろ?
2014/09/22(月) 20:21:24.00ID:4th1shUN
あたし中卒やからね 仕事をもらわれへんのやと書いた
女の子の手紙の文字は とがりながら震えてる
ガキのくせにと頬を打たれ 少年たちの眼が年をとる
悔しさを握りしめすぎた 拳の中 爪が突き刺さる
331
垢版 |
2014/09/22(月) 20:46:51.62ID:XoUFao4y
>>329
>>15>>13で話振られたから答えただけ。
実は集合論の教科書はあんまり想定してなくて、離散数学の教科書を想定してた。
332デフォルトの名無しさん
垢版 |
2014/09/22(月) 21:29:11.48ID:UZeuYMIm
集合を言語へどう使うか決まってないし、有限・無限とか細かい部分を決めても意味ないだろ。
スタンダードな言語に対して、集合が扱える仕組みが取り込めばいいだけなのかとか。
2014/09/22(月) 21:48:28.53ID:m1LWUU3t
集合論の教科書を想定せずに
>発想から徹底的に集合論的思想で言語仕様を考える
と言ってたのか…
で、結局、有限集合限定だから
>言語なんか作らずにライブラリで済む
んじゃないか、と…
2014/09/22(月) 21:54:05.38ID:LvPIFofq
ライブラリを作ってみてライブラリではここが不満だって気づいてから言語作り始めても遅くない。
そういう下地があると1ヶ月くらいでコンパイラを書ける。凡人でも。
2014/09/22(月) 21:56:13.85ID:Q+rXpvQc
>>330
ファイト!
2014/09/22(月) 21:58:03.07ID:M8xWvQpL
>>332
>有限・無限とか細かい部分を決めても意味ないだろ。

一番大きい部分だろw
337デフォルトの名無しさん
垢版 |
2014/09/22(月) 22:23:43.15ID:UZeuYMIm
>>336
どういう用途に使うかに強く依存する。
たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
最初に何に使うのかが決まらないと、有限・無限はどうするか決まらない。
2014/09/22(月) 22:31:18.61ID:M8xWvQpL
>>337
>たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。

何言ってるかさっぱり分からん。

>有限・無限とか細かい部分を決めても意味ないだろ。

とどう関係するんだ?
339デフォルトの名無しさん
垢版 |
2014/09/22(月) 22:51:19.51ID:UZeuYMIm
任意のプログラムコードを、ある自然数に対応させることは可能のはずだ。この値は有限値で。
具体的には、ゲーデル文構成のようにしたらいいと思うが良くはわからん。



ゲーデルの不完全性定理 - Wikipedia
ゲーデルの不完全性定理とは、数学基礎論における重要な定理の一つで、クルト・ゲーデルが1930年に証明したものである。
ゲーデル文の構成
ゲーデル数というテクニックを使って間接的に自己言及を可能とし、ゲーデル文を構成する。
コンピュータでは全てのデータを一意な数値で表しており、特に文字列や論理式そして論理式の列も数値で表す。
このように、論理式を数値で表す行為を論理式のゲーデル数化といい、命題Pに対応する数値をPのゲーデル数という。
340デフォルトの名無しさん
垢版 |
2014/09/22(月) 22:56:41.54ID:UZeuYMIm
ゲーデル数 - Wikipedia
ゲーデル数は、数理論理学において何らかの形式言語のそれぞれの記号や整論理式に一意に割り振られる自然数である。
一般化
計算可能性理論において、「ゲーデル数化」は上述よりさらに一般化した意味を持つ用語として使われる。
1.形式言語の構成要素に自然数を割り当てて、形式言語の構成要素の操作を、数を操作するアルゴリズムでシミュレートできるようにする。
2.より一般化して、枚挙可能な数学的オブジェクトに自然数を割り当てて、その数学的オブジェクトにアルゴリズム的操作ができるようにする。
これは数というよりも文字列を操作する計算模型(チューリングマシンなど)に必須の考え方である。



チューリングマシン - Wikipedia
チューリング機械とは次の7つ組である。
http://upload.wikimedia.org/math/6/3/d/63d3280aa62307d33bea8f0e64f4dac7.png
Q は有限集合であり、その元を状態という。
Γ は Q に交わらない有限集合であり、字母とよばれる。その元を記号という。
b は Γ の元であり、空白記号とよばれる。
Σ は Γ - {b} の部分集合であり、入力字母とよばれる。その元を入力記号という。
δ は Q × Γ から Q × Γ × {left, right} への写像であり、遷移函数とよばれる。δ(q, a) = (q', a', m) は、
「現在の状態が q であり、着目位置にある記号が a であれば、状態を q' に移し、着目位置に記号 a' を書き込んでから、着目位置を m 方向に1つずらす」と読む。
qinit は Q の元であり、初期状態とよばれる。
qacc は Q の元であり、受理状態とよばれる。
2014/09/22(月) 23:19:51.98ID:M8xWvQpL
お前アホだろ。
>プログラムコードは有限だから
ってコード長が有限ってことを言いたかったのかよ。
342デフォルトの名無しさん
垢版 |
2014/09/22(月) 23:51:04.16ID:UZeuYMIm
言語の開発以前に、無限にするか、有限にするか決めたとして。
有限の範囲ではおさまらない具体的な例・モデルってあるのか?
既存のコンピュータ、ノイマン型は、有限集合で操れるから具体的にイメージ出来ない。
2014/09/23(火) 00:04:48.04ID:FXTBDWVe
とりあえず有限長の語の集合が無限集合になりうることくらいは理解してくれ。
証明が無限を扱うことと、証明長が有限なことは全然別の話。
プログラムにしても同様。
344デフォルトの名無しさん
垢版 |
2014/09/23(火) 00:11:51.00ID:dVlUahkv
>>343
それは分かってて。
さきに無限を使うと選択した場合、具体的な利用法が不明。
既存のプログラム、有限集合で扱える範囲を超えなかったら意味が無い。
345
垢版 |
2014/09/23(火) 00:23:18.08ID:oT3Rknt8
>>344
計算不能な集合を扱いたいの?
346デフォルトの名無しさん
垢版 |
2014/09/23(火) 00:32:18.88ID:dVlUahkv
言語を開発する上で、既存の有限集合に基づくモデルで十分だという立場。
無限を扱うメリットを知りたい。
347デフォルトの名無しさん
垢版 |
2014/09/23(火) 00:50:04.92ID:dVlUahkv
無限小、無限大を取り込んでない、自然数に基づく数学に、あとから無限小、無限大を取り入れても矛盾しない。





超準解析 - Wikipedia
超準解析ではイプシロン-デルタ論法によって一度は数学から追放されたと思われた、無限小や無限大という極限に関する古典的で
直観的な感覚、すなわち、いわゆる実数論にもとづかないライプニッツ流の古典的な微積分を数学的に厳密に定式化し、取り戻すことができる。
このような古典的な微積分におけるオリジナルな無限小解析学とは区別されることもある。
アブラハム・ロビンソンによって考案された。超準解析の基本的な手法である超積はアラン・コンヌらによって作用素環の研究に応用されてもいる。
超実数は実数を拡張した数概念である。実数体に無限小・無限大を加えたものは体をなし、超実数体と呼ばれる。
超実数体は *R, R* などと表記される。その元を超実数という。



Rubyによる 超準解析 クラス.(HyperRael,MathExt)
超実数体とは,(大雑把に云えば) 実数体にライプニッツ的な無限小を添加して出来る体のことだ.
微分等, 通常の実数では limit を使う場面で, 超実数体内部の四則演算として直接求めることが出来る.
超準的な計算では, 無限小や∞の強さもわかるので無限小/無限小, 無限小*∞, ∞/∞ 等の計算が矛盾無く解釈可能となる.
ただし単なる体なので, 真の0(無限小でなく) については, 0*∞=0 で, 0/0 や 1/0 は定義されない.
この点は IEEE754 的な浮動小数点計算で 1.0/0.0 で Infinity を返すような気持の悪さは解消できる.
http://www.math.kobe-u.ac.jp/~kodama/tips-HyperReal.html
2014/09/23(火) 00:58:09.60ID:IDDuvAyc
んなもん、チューリング完全な言語は能力同等なんだから
無限をその言語機能で直接書きやすく実行効率よくするかどうかの判断しだいだよ
で、1はもう無限を直接扱うのはあきらめたんでしょ

今度は有限の制約があっても、1が元々やりたかった範囲がカバーできてるのかって問題になるわけだが、
「やりたかった範囲」がぼんやりしてるからこれ以上はわからんわな
2014/09/23(火) 01:02:03.65ID:IDDuvAyc
おっと書きわすれた。まあ俺もみんながいってるように、
まず既存言語+ライブラリでやりたいことがどの程度できるのか確かめる
のがいいと思うけどね
2014/09/23(火) 11:31:06.71ID:5tA+8B0p
無限集合を扱わない代わりにストリームを集合として扱えるようにしようぜ
2014/09/23(火) 11:38:18.07ID:yLd7Mbmy
無限集合を扱うのが困難なように言っているが、どういう操作を実装するか次第だろう。
例えば分数ライブラリがあるが、必要になればいくらでも循環小数や無理数の桁を取り出せ、しかし普段は分子と分母を保存しておくだけ。
それをさらに除算以外の演算もサポートした、値を式で保持するライブラリもある。
実際に何かの集合を扱うたびに本物のコンテナを生成するよりもマシな気がするけど。

>>305
> 関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
変化しないものは状態といわない。
例えば人間には生と死という状態があるが、親が人間かどうかというのは変更がないから状態とはしない。
プログラムでいえば再代入のあるものが状態だ。
c/c++のconst変数は建前では参照透明だ(キャスト、mutableがであるので実際は違う)。
本当に関数型言語に状態がないかどうかは言語によるし、システムコールによる副作用があっても参照透明と呼ぶのはレトリックと言われても仕方ない気もする。
特定の言語自体の価値よりも、関数型プログラミング的テクニック全体に価値がある。c++でもPythonでも使える。

> あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
難題とか複雑性が減るとかいう表現を使ったのは、停止性問題の証明には関係ないからだよ。

> これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>288 を読んで知ったかぶりらしく思わない人がどれだけいただろうか。
2014/09/23(火) 12:03:18.67ID:9ll4fKxj
>>326は嘘で、無知で発想が支離滅裂で実行力もない人が多いみたいです。
2014/09/23(火) 16:14:06.99ID:49Grt2TR
実装に寄らないクラス定義、メソッド、オペレータ、その処理の定義決めればいいんじゃね
オペレータオーバーロードできない処理系ではオペレータの代わりにメソッド実装でいいし、しっかり概念が定義されてたらどの言語にも移植できるやん
3541
垢版 |
2014/09/24(水) 20:26:39.07ID:sdype2Aq
うーん。とりあえず、集合のリテラルがある言語、またはリテラルを自作できる言語ってある?
2014/09/24(水) 20:34:18.13ID:Z2e1BcPM
C++11
2014/09/24(水) 20:46:24.29ID:c/ueWxaZ
Pascalの型に集合はあったけど、リテラルあったっけ?
357
垢版 |
2014/09/24(水) 21:32:20.18ID:sdype2Aq
C++11すげぇw
正気の沙汰とは思えないw
しかしこれ、setみたいなテンプレート型のリテラルもちゃんと作れるのかなぁ?
2014/09/24(水) 21:47:35.83ID:icQzJbDu
つうかC++11使ってリテラル定義しなくても、初期化子書けばいいだけ。
359
垢版 |
2014/09/24(水) 21:59:47.35ID:sdype2Aq
std::initializer_listなんてものもあるのか。
世の中知らないうちに便利になってるな。
2014/09/24(水) 22:19:34.82ID:u+CQqrHx
VDM http://en.wikipedia.org/wiki/Vienna_Development_Method
Z http://en.wikipedia.org/wiki/Z_notation
361デフォルトの名無しさん
垢版 |
2014/09/25(木) 22:46:08.06ID:paFK2VHq
>>1 >>360
あーまだそんなこと言ってるのか
362
垢版 |
2014/09/26(金) 20:57:23.89ID:TQ6i6UUU
C++11結構面白そうだが完全準拠したコンパイラが無いっぽい?
2014/09/26(金) 21:17:42.44ID:v6QeAlLd
お前のOSにゃ無いかもしれんな
364
垢版 |
2014/09/26(金) 21:24:17.23ID:TQ6i6UUU
とりあえずVisual Studio 2013 Express でいじってみてるけど結構楽しい。

int _tmain(int argc, _TCHAR* argv[])
{
set<set<int> > a = { { 1, 2 }, { 3 }, { 4, 5, 6 } };
for (auto i : a){ for (auto j : i) cout << j << " "; cout << endl; }
return 0;
}


とか書けていい感じ。
365デフォルトの名無しさん
垢版 |
2014/09/26(金) 21:37:43.18ID:rLR78veI
>>1はC++のように集合が扱える言語が実現したいのか?
一部のスクリプト言語だったらかなり以前からできていなかったか。
CでもC++でも以前から、ライブラリで拡張したら集合は扱えたはずだろ。
366
垢版 |
2014/09/26(金) 21:56:27.24ID:TQ6i6UUU
>>365
個人的にはもうちょっと言語の設計が根本から変わるようなものが
集合にはあるんじゃないかと思ってるんだが。
それがなんだかは分からないw
いまのところ集合を普通のライブラリとして用意する以上のアイディアは出てない。
2014/09/26(金) 22:40:52.33ID:mU/FSdzC
>>856 の続き)

始めは「考えられるリスクの低減」から
・ライブラリや共通部品の多くは(アルゴリズムやデータ変換を実現する単純なものもあるが)
 データベース/ファイル/ネットワーク/プロセス間通信といったプログラムの
 外部インターフェイス処理が多くを占める
 これらを実装するには、プログラマにシステムコールや標準ライブラリ(>>829)、
 そして社外のライブラリや社内の共通部品等等、幅広い知識が求められる
 これを経験の浅いメンバに負わせるのは無謀
・ライブラリ/共通部品の実装技術は機能仕様(=ビジネスルール)には依存しないから、
 類似のシステム開発プロジェクトがあれば、類似の実装になる
 もしライブラリ設計担当がいくつかのプロジェクトを経験したベテランであれば、
 過去の(失敗を含めた)経験から、既存の設計やコードを改造母体にして短期間で設計できる
 これと同じことを経験の浅いメンバに期待するのは無茶
・万が一、ライブラリ/共通部品の開発日程が遅延して結合テストに間に合わなかったり、
 結合テストでバグが多発する事態になれば、その影響はプロジェクトの全体に及ぶ
 もしモスク(>>856)の中位/上位層であれば影響範囲は限定的だし、
 その炎上の火消しのためにライブラリ/共通部品を担当させて余力のあるベテランを投入できる
 (当然、ライブラリ/共通部品設計には日程厳守(or 前倒し)と高品質(=バグ0)をベテランに要求する)
368
垢版 |
2014/09/26(金) 22:44:11.22ID:TQ6i6UUU
>>367
仕事でやってんじゃないんだから好きにさせろ。
369367
垢版 |
2014/09/26(金) 22:44:51.94ID:mU/FSdzC
>>367 は誤爆だから無視してくれ、スマソ
370
垢版 |
2014/09/26(金) 22:55:37.85ID:TQ6i6UUU
誤爆とは思えないほどスレの流れに合ったレスだったが。
まあいいや。
2014/09/27(土) 12:16:01.73ID:Tn3/IHEN
オメガってZFに基づいた言語がアメリカにあったはずだが見つけられない。
集合はsetとclassの型付け。
上にある仕様記述言語Zとは別。
372デフォルトの名無しさん
垢版 |
2014/09/28(日) 20:41:53.96ID:T/KmqFBE
>>1
>>360についてはどうなのよ?
373
垢版 |
2014/09/28(日) 21:20:59.19ID:ngbZk+Gk
>>371
すまん。あんまりちゃんと読んでない。
wikiだけじゃよくわからんというのが素直な感想。
それに英語は大の苦手。
374
垢版 |
2014/09/28(日) 21:21:51.62ID:ngbZk+Gk
安価ミス
>>372
2014/09/28(日) 22:47:39.25ID:qFZf/al/
>>373
http://homepages.cs.ncl.ac.uk/cliff.jones/publications/Jones1990.pdf
http://www.cs.ncl.ac.uk/publications/books/papers/100.pdf
http://spivey.oriel.ox.ac.uk/~mike/zrm/zrm.pdf
http://staff.itee.uq.edu.au/ianh/Papers/SCS2.pdf

英語が苦手なのに
>しかたないのでこのスレは>>4とかの言語を勉強するスレにするか。
と書いたのか。
376
垢版 |
2014/09/28(日) 23:24:45.68ID:ngbZk+Gk
>>375
英語苦手なのでこれを読むのは結構時間かかると思う。
まあ、ぼちぼち頑張る。
2014/09/28(日) 23:48:18.69ID:qFZf/al/
>>376
http://homepages.uel.ac.uk/A.Kans/MSc%20week3.pdf
http://www.cs.nott.ac.uk/~rxq/files/4FSPnotation.pdf
http://formal.iti.kit.edu/~beckert/teaching/Spezifikation-SS04/11Z.pdf
378
垢版 |
2014/09/29(月) 00:04:52.39ID:O3Lh9EkL
>>377
こっちのほうが入門っぽいの?
まあ、あんまプレッシャーかけんなや。
2014/09/29(月) 01:12:43.07ID:1qhCFqkI
>>360についてどう思うかたずねられる →「wiki(pedia)だけじゃよく分からん」
詳しく書かれている文書を提示される →「読むのに時間がかかる」
もっと短い文書を提示される →「プレッシャーかけるな」
380デフォルトの名無しさん
垢版 |
2014/09/29(月) 13:28:38.13ID:AXPWss48
>>1
センスは悪くないが、致命的に勉強が足りんな
381
垢版 |
2014/09/29(月) 18:35:35.54ID:O3Lh9EkL
>>379
このスレで提示されたもの、俺が全部勉強しなきゃいかんのかと思うとちょっと怖いんだが。
>>380
勉強不足なのは認める。
382デフォルトの名無しさん
垢版 |
2014/09/29(月) 20:16:07.80ID:onaWAXdx
どっちに進んだらいいのか分からないんだから、提供された情報を手がかりにして、
wikiだけじゃ分からんとか言わずに自分で情報をさがして勉強するしかないだろ。

情報を提供してもらうためにスレを立てたんだろ。
383
垢版 |
2014/09/29(月) 20:43:37.99ID:O3Lh9EkL
>>382
スレたてた時は軽い気持ちだった。
なんかこんなガチな感じのスレになるとは思ってなかったと言わざるを得ない。
384
垢版 |
2014/09/29(月) 20:52:49.67ID:O3Lh9EkL
>>377
ちょっとだけ読んでみただけだから誤解があるかもしれないけど、
これは仕様をガチガチに固めるためのもの?
こんなこと言うと批判がありそうだけど俺としてはbashやRubyみたいに緩い感じでコーディングして
仕様変更があってもちょちょっとハッキングすれば何となく動いちゃうみたいのが好みなんだけど。
2014/09/29(月) 22:24:17.39ID:MPdknRrK
>>383
>>365の言うとおりだけど、不勉強だから、
「発想から徹底的に集合論的思想で言語仕様を考える」って大風呂敷を広げてしまったわけだ。
386
垢版 |
2014/09/29(月) 22:46:32.46ID:O3Lh9EkL
>>385
まあ、ぶっちゃけ俺には>>365を超えるような大したアイディアがあったわけじゃないな。
みんなで雑談してるうちに面白い話が聞けたらいいなぐらいの気持ちだった。
2014/09/29(月) 22:53:43.66ID:6QlMlDt4
Python の set とかってイメージしてる "集合" とはどういう関係にあるのかな
2014/09/29(月) 23:54:29.23ID:4aZKHf7r
Zは仕様記述言語だよ。
Notationと言われているように、日本語だと記法と言ってもいいかもしれない。
2014/09/30(火) 00:05:52.09ID:lw4FII9v
>>386
大風呂敷を広げている自覚があるならたためばいいのに。
>>365には「そのとおりだ。不勉強だから『発想から徹底的に集合論的思想』などと大風呂敷を広げてしまっていた」と言い、
>>360には「情報ありがとう。でも考えているのは>>365のようなものだからVDM等とは方向が違う」とでも言えばよかったのに、
「言語の設計が根本から変わるようなもの」とか言い出すし。
2014/09/30(火) 00:27:57.32ID:QoKiTOmo
過去の発言をあげつらうとか無粋なことを‥
そのときどきで感想がぽつぽつ上がってそこから何かが生まれればよし、そうでなくてもいいので、こうしてお付き合いしているわけだし‥
391デフォルトの名無しさん
垢版 |
2014/09/30(火) 00:47:37.34ID:63XDoi4/
1の興味がどっちに向いてるのかはっきりさせとかないと、誰かが>>360のように情報を出してくれても、
1は興味を持てず理解もできず、情報を出してくれた人を無視することになるわな。
2014/09/30(火) 04:58:34.96ID:AOM1YMTX
一次元で言ったら
(1-5) | ( 2-6) | (3-9) | (9-10) = (1-6, 3-10) こういうの返すとか
2次元だと、GDIなんかでもよくあるリージョン計算とか
三次元にも応用してとか
言語にこだわらず、集合表記決めて興味持った人が各言語で実装するのがいい
2014/09/30(火) 07:28:17.49ID:JjKI4EMd
ひらがな電卓Calc-Hだと、
「ろくのやくすうはなんですか」とか
「じゅうにいかのそすうは」とか
「よんのばいすうはにでわりきれるか」とか
「いちいじょうのろくのばいすうは、ごよりおおきいさんのばいすうか」
といった質問に答えられるんだけど。参考までに
394デフォルトの名無しさん
垢版 |
2014/09/30(火) 12:59:47.25ID:X/itkzZm
>>381
勿論勉強なんか最低限でよい。
ただ集合言語を論じるなら、「Z」と「集合論プログラミング」(ググれ)
のさわりだけはおさえとけ(それだけでいいよ)
2014/09/30(火) 15:20:16.06ID:3YX+fixm
さわりは音楽でいうサビかイントロか。
イントロと間違う人も多いだろう。
2014/09/30(火) 16:07:43.18ID:tX5UXYDw
そりゃサビだろ
最低限なんだから大事なところ押さえないと
397
垢版 |
2014/09/30(火) 20:27:22.22ID:p23v2Yf3
>>389
まあ、大風呂敷を広げた方が話が盛り上がるかと思って。

>>391
正直すべてのレスをフォローするのはしんどいかも。
方向性はまだ固まってないです。

>>393
結構、ことばがわかりません。ていわれる。
いまのでも結構すごいがこれを実用までもっていったらかなりすごいと思う。

>>394
Zはオブジェクト指向でいうUMLみたいなもん?
集合論プログラミングはぐぐったけどCiNiiの論文がヒットした。
プレビュー読んでみたけどアルゴリズムを自動生成するの?
確かにすごいし理屈も通ってると思う。
これの処理系がすでにあるなら触ってみたいけど、
自分で実装しようとは思わないw。大変すぐるw。
398
垢版 |
2014/09/30(火) 21:50:21.63ID:p23v2Yf3
集合論プログラミングは確かに言語の設計が根本から変わってると思う。
こういう情報が得られるだけでもスレをたてた甲斐があるというもの。
2014/09/30(火) 22:19:13.15ID:ic/LPcqx
>>398
わざわざスレを立てなくても 集合論 プログラミング でググればすぐ見つかるんだけど。
「発想から徹底的に集合論的思想で言語仕様を考える」と言っておきながら
その程度の検索すらしてなかったんだな。
400
垢版 |
2014/09/30(火) 22:29:12.29ID:p23v2Yf3
>>399
まあな。
401デフォルトの名無しさん
垢版 |
2014/09/30(火) 23:59:40.07ID:izhA5Hzv
>>397
アルゴリズムの自動生成をするわけではなく、論理式を使って書かれた
仕様を元にして人間がプログラムを作っていくもので、VDMやZと同じ
方向なんだけど、感想がずいぶん違うな。>>384 >>398
402
垢版 |
2014/10/01(水) 06:02:07.09ID:0+f79Okt
>>401
VDM  書いたものが実装にならない
集合論プログラミング  書いたものが実装になる

と思い込んでたからな。
どっちも書いたものが実装にならないならあんまり俺の趣味じゃないなぁ。
集合論プログラムは書いたものが実装になってもよさそうなほど
論理を詰めていたように見えたが気のせいだったか。
2014/10/01(水) 09:03:58.23ID:Srlu7drV
>>402
VDMは実行可能だ
404デフォルトの名無しさん
垢版 |
2014/10/01(水) 11:04:19.89ID:PsfjCcq+
>>398
やっぱりアンタはセンスが良い。というかこれから何かできる人だ。
集合論プログラミングはZなんかに比べるとマイナーだが、Zより実質がある。
実装もできる。アンタが土台にするべき言語はこれじゃないかな?
検索してないとかなんとかというノイズは無視していいよ。
405デフォルトの名無しさん
垢版 |
2014/10/01(水) 14:56:19.11ID:BreyGGJ4
>>402
論理式を使って、プログラムに自動的に変換できそうなほど詳細な仕様を書くのは、
>緩い感じでコーディングして仕様変更があってもちょちょっとハッキングすれば
>何となく動いちゃうみたいの
とはかなり違うわな。
4061
垢版 |
2014/10/01(水) 19:43:26.77ID:0+f79Okt
>>403
どうゆう意味で実行可能なの?
他のプログラムの外付けアサート的な動作しかできないのかと思いこんでいたが。
VDM単体で動くの?

>>404
俺をおだてても木には登れんぞ。
集合論プログラムのコンパイラを作るなんて俺の実力じゃとても出来そうもない。
ユーザーとしてなら使ってみたいが。

>>405
仕様を詳細にするのはやり方がまずいと柔軟性のないプログラムになると思う。
抽象度の高いプログラムで仕様を満たせるならそっちの方がいいと思う。
2014/10/01(水) 19:49:09.29ID:OzkCABBw
>>406
インタプリタで実行できる
408
垢版 |
2014/10/01(水) 20:28:28.86ID:0+f79Okt
>>407
まじで。英語だからちゃんと読んでないけど>>360のwikiにsqrtの例で

SQRT(x:nat)r:real
post r*r = x

とかいうのがあったからこりゃ単体じゃ実行できないなと思ったんだけど。
早計だったか。
2014/10/01(水) 20:39:41.94ID:OzkCABBw
>>408
VDMには実行できるexplicit specと実行できないimplicit specがある。
その例は実行できないimplicit specのほう。
このリンク先のはみな実行できるexplicit spec
http://www.vdmtools.jp/doc/tips/vdmIdiom.html
410
垢版 |
2014/10/01(水) 21:57:06.59ID:0+f79Okt
>>409
なんか、サンプルプログラムよんでもイメージが湧きづらい。。。
文字列操作の前後のスペースをトリミングとか何やってるのかよく分からん。

[ p | p in set inds org & org(p) <> ' ']がorgの空白でない文字のインデックスの集合で
パターンマッチでその集合の先頭と末尾を取り出してる。
sがorgの空白じゃない最初の文字のインデックスでeがorgの空白じゃない最後の文字のインデックス
でorg(s,...,e)で頭とおしりの空白を取り除いた文字列を返してるってこと?
411
垢版 |
2014/10/01(水) 22:21:29.56ID:0+f79Okt
[]は集合じゃなくて列か。
412デフォルトの名無しさん
垢版 |
2014/10/01(水) 23:50:12.62ID:PsfjCcq+
>>409
クソVDMなんか持ってくるんじゃねえよ。
お前はセンス悪い。
4131
垢版 |
2014/10/02(木) 12:38:59.14ID:CtSzUDAx
あれ?乗っ取られてる?立てただけでちょっと居なくなったすきに…
414
垢版 |
2014/10/02(木) 18:33:20.87ID:McIgqFFk
>>413は偽物。
といっても俺も本物だと証明できるものはなにも持ってないな。
まあ、何が本当かは皆さんの判断に任せるとしましょう。
2014/10/02(木) 19:01:12.47ID:J690LAeG
ここって>>1となれ合うスレ化してるから、馴れ合ってる1こそが1
2014/10/02(木) 19:52:03.79ID:sULo4gIN
>>414
トリップっていうのをつけたら?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1241152992
417
垢版 |
2014/10/02(木) 20:07:14.68ID:McIgqFFk
>>416
今からトリップつけても過去のスレに対してはなんの証明にもならんけどな。
今からでもみんなが付けろっていうなら付けるが。
2014/10/02(木) 20:38:47.31ID:sULo4gIN
>今からトリップつけても過去のスレに対してはなんの証明にもならん
それは>>415のように考えるしかない。
419
垢版 |
2014/10/02(木) 20:45:42.53ID:McIgqFFk
>>418
まじでw
420
垢版 |
2014/10/03(金) 20:31:44.20ID:dWJ2kSUt
Rubyだとトリミングはstr.stripで一発だな。
ライブラリつかわんでもstr.gsub(/^ +/,"").gsub(/ +$/,"")でワンライナーか。
この比較がフェアかどうかは微妙だが、Rubyと比べてVDMは読むのしんどいな。
慣れてないだけかもしれんが。
2014/10/03(金) 22:20:11.35ID:wImYRAo7
>>420
的外れな比較だな。
422
垢版 |
2014/10/03(金) 22:25:06.66ID:dWJ2kSUt
>>421
やっぱそうか。そんな気はした。
でもこういったこまごまとした道具がきっちりそろってるのもRubyの魅力なんだよな。
2014/10/04(土) 04:41:52.82ID:TsYLxX57
で、文字列をトリミングするのが君のいう集合論ベースの言語なのかい?
424
垢版 |
2014/10/04(土) 09:55:23.27ID:jzKUq2O9
>>423
トリミングについてはちょっとふれただけだろ。
そんなに粘着した覚えはないぞ。
2014/10/04(土) 12:53:49.48ID:TsYLxX57
言ってることがブレブレなんだよ。
集合論から徹底的にと言ってみたり有限集合だけと言ってみたり
言語仕様だと言ってみたり便利なライブラリだと言ってみたり
美しい言語だと言ってみたり処理速度がどうのと言ってみたり
で、今度は文字列操作ユーティリティライブラリの充実度か。

結局何がしたいんだ?
2014/10/04(土) 13:00:56.11ID:by55sH8H
有限集合のみだと素朴集合論以下だしな。
2014/10/04(土) 13:34:13.41ID:s6wyGDsN
>>425
そんなに結論を急ぐのはなんでなの?
2014/10/04(土) 14:11:28.47ID:TsYLxX57
結論どうこう以前に
こうまで毎回後だしジャンケンばかりでは
永遠にグダグダだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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