アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
パラダイム (スコア:0)
学ぶべきは言語ではなくパラダイムなんだが、他に学ぶべきというと宣言的プログラミングくらいしか思いつかんな。
それはともかく、宣言的だと関数型と論理型とあるが、論理型だとある種のループ構造が使えて便利なんだが…
Re: (スコア:0)
関数型と論理型はパラダイム的には等価じゃん?
Re:パラダイム (スコア:2, 興味深い)
論理型は、「複数の変数の関係を記述する」「ルールの適用の順に実行」
という差が一応あるんだけど、工夫すれば相互に記述出来るので等価といってもいいかな。
一見、関数型は手続き型に見えるし、副作用を持つ関数型言語は、実際、手続き型言語と
ほぼ同じ。論理型でも、Prolog なんかは、backtrack以外は、ほとんど手続き型と言っても
良い。
一方で、OPS5系とかCommitted Choice言語、あるいは関数型言語でも、
実行の順序も外側の関数で実行出来るものから実行するなんてのがあって、
どんな順序で動くのか予測が難しいものは、手続き型からは遠い。
人が知らない言語、あるいは学ぶのが難しい言語を使いこなすというのは、快感ではあるんだが、
虚しくもある。(淋しいという感じ?)
Re: (スコア:0)
上記にも形を変えて書かれていますが、
それが「関数型の」特徴か?というとダウトですよね。
むしろ「純粋」関数型かそれ以外か?によって、
順序縛りが来るかどうかが(がらっと)変わる。
…ということは、
字面が関数型言語っぽいかどうかはどうでもよくて、
字面からは一見読み取れない「副作用があるか否か」のほうが
よほど強く効いて来るってことになります。
元々、普通の言語でも、
副作用があるかどうかが字面から読み切りにくい!という点が
バグの温床だと
Re: (スコア:0)
> 論理型は、「複数の変数の関係を記述する」「ルールの適用の順に実行」
> という差が一応あるんだけど、工夫すれば相互に記述出来るので等価といってもいいかな。
こういう間違いをしないように、きちんと勉強しましょうね。
strictnessは別のトピックだし、
negation as failureを導入した時点で完全性もチューリング等価性も怪しくなった。
Re: (スコア:0)
共通する特徴は、単一代入、
関数型のみは、関数閉包
論理型のみは、ユニフィケーションとバックトラック
どれも宣言的プログラミングに有効です。
> 関数型は、「入力に対して一つの出力」「関数の適用の順に実行」
後者は、strictnessの事を言っていると思うんだが、
これは関数型言語の型付き・型なしと同じように、どちらの実装もある。
strictだとML、non-strictはhaskellが一番有名か。
> 論理型は、「複数の変数の関係を記述する」「ルールの適用の順に実行」
前者はユニフィケーションの
Re: (スコア:0)
このトピで君が一番まともな書き込み(しかし間違っている)をしてプラスモデもらっているんだし。
Re: (スコア:0)