アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
パラダイム (スコア:0)
学ぶべきは言語ではなくパラダイムなんだが、他に学ぶべきというと宣言的プログラミングくらいしか思いつかんな。
それはともかく、宣言的だと関数型と論理型とあるが、論理型だとある種のループ構造が使えて便利なんだが…
Re: (スコア:0)
関数型と論理型はパラダイム的には等価じゃん?
Re: (スコア:2, 興味深い)
論理型は、「複数の変数の関係を記述する」「ルールの適用の順に実行」
という差が一応あるんだけど、工夫すれば相互に記述出来るので等価といってもいいかな。
一見、関数型は手続き型に見えるし、副作用を持つ関数型言語は、実際、手続き型言語と
ほぼ同じ。論理型でも、Prolog なんかは、backtrack以外は、ほとんど手続き型と言っても
良い。
一方で、OPS5系とかCommitted Choice言語、あるいは関数型言語でも、
実行の順序も外側の関数で実行出来るものから実行するなんてのがあって、
どんな順序で動くのか予測が難しいものは、手続き型からは遠い。
人が知らない言語、あるいは学ぶのが難しい言語を使いこなすというのは、快感ではあるんだが、
虚しくもある。(淋しいという感じ?)
Re:パラダイム (スコア:0)
上記にも形を変えて書かれていますが、
それが「関数型の」特徴か?というとダウトですよね。
むしろ「純粋」関数型かそれ以外か?によって、
順序縛りが来るかどうかが(がらっと)変わる。
…ということは、
字面が関数型言語っぽいかどうかはどうでもよくて、
字面からは一見読み取れない「副作用があるか否か」のほうが
よほど強く効いて来るってことになります。
元々、普通の言語でも、
副作用があるかどうかが字面から読み切りにくい!という点が
バグの温床だと言われてます。
それを文法レベルで排除したのが純粋(関数型)だと。
(読み切りでふと思ったんだが、将棋などのゲームも副作用ありまくりな言語の一種なのですね)
そして、排除したかどうかは、字面とはあまり関係ないんですよね。
同じ変数に二度代入しようとしたら
コンパイル(あるいはランタイム)エラー
になるかどうかっていう問題なのだから、
特徴は、ソースよりエラーのほうに如実に表れる。