いつもadvancedなコメントをくれます、cametan_42さん(ブログ)、有難うございます。最大公約数を求めるC言語のコードを示してくれました。これならVBでも出来そうと、recを宣言しない、VBでやってみました。関数型とは書く人の思想なのかもしれませんね。勿論、適している言語とそうでない言語はあるでしょう。関数型は変数という言葉を使わない。適した言語は、”束縛”という言葉を使う。再帰も使うのかもしれません。手続き型とは結構深い溝がありそうです。
最新の画像[もっと見る]
- 2月も今日で2日目です! 3日前
- 2月も今日で2日目です! 3日前
- 久しぶの訪問リハビリでした! 1週間前
- 久しぶの訪問リハビリでした! 1週間前
- 久しぶの訪問リハビリでした! 1週間前
- 久しぶの訪問リハビリでした! 1週間前
- 久しぶの訪問リハビリでした! 1週間前
- 昨日は良い天気でした! 2週間前
- 昨日は良い天気でした! 2週間前
- 暫く鬱で、書き込みしてませんでした? 3週間前
「C#、VBなど」カテゴリの最新記事
- 前回のローマ数字に変換のプログラムを少し直しました。
- Dive into Python3の例題、数値をローマ数字に変換する。VBで書いたら、汚いコード...
- Visual BasicでLINQを、その3。
- Visual BasicでLINQを、その2。
- Visual BasicでLINQを、その1。
- Visual BasicでFunctionのリターンにはReturnも使える。
- これって関数型でプログラミングしたと言えます?
- VB2010から自動実装Propertyが使えるそうです?
- 前回の続きです。前回は解析まで、今回は値を入れてみます。
- 前回の例題の次ですが…。四苦八苦してました。クラスのインスタンスの配列の初期化...
言い換えると、「再帰」の方がグローバルなんです。
例えば繰り返し構文、forは、どんな言語でもサポートされてるわけじゃあない。forがグローバルに見えるのは、単に言語設計者が「☓☓と言う言語は○○と言う言語の構文を真似して・・・」と、人為的に「作ってる」に過ぎないんです。
isamさんがここで実験した通り、VBでも再帰をサポートしてる以上、仮にVBを全く知らない人でも繰り返しは再帰さえ使えば実現出来る(取り敢えず効率性は置いておきますが)。
再帰は繰り返しの基本です。と言うより、プログラムは
1. 逐次処理
2. 条件分岐
の2つの機能さえあれば、「取り敢えずは書ける」と言うのは大きな基本なんです。
Schemeとかは、全て関数型と言えるんでしょうか?
遅くなりましたが、コメント有難うございます
SchemeもOCamlも「不純な」関数型です。
不純な、と言うのは、副作用を簡単に扱える、と言う事です。
副作用には
・代入
・入出力
なんかがあります。何気に使ってる、例えばprintとかそれに類する機能は実は「計算じゃない」ってぇんで、こういうのを副作用と言います。
純粋な関数型言語、例えばHaskellなんかは入出力を扱うのが「出来ない」とは言わないけど、メンド臭いです。
逆に言うと、SchemeもOCamlも、望ましくはないけど、手続き型言語のようにプログラムを書く事は可能です。
ただ、せっかく勉強するならその路線からは離れた方がいいですよね。
> すべての手続を関数型に置き換える、書くことは、絶対不可能ではないのでしょう。
不可能じゃあないですね。ただ、高階関数をサポートしてるか否か、ってのはかなりスタイルに影響はします。
そういう事です。
でもそれでいいんですよ。
純粋関数型言語だと「フツーの言語が出来る事」が今度はやりづらくなるんで、まぁ、Haskellとか触ってみたい、って言うのなら止めませんが(笑)、計算は書きやすくても入出力が厄介だ、ってのはこれがまた別に問題が生じますよね。
余談ですが、関数型言語に対するアイロニー(皮肉)で、
「関数型言語に出来る事と言ったら、パソコンの電源点けて温度が上がるのを待つだけだ」
とか言うのがあって(笑)、まぁ、そこまで縛りを入れなくても良いとは思ってます。
> 流石にVBは関数型とは言わないでしょうし、C言語も言わないでしょう。代入命みたいですからね。
そうですね。それらは手続き型言語です。
ただ、先にも見たように関数型っぽく「書こう」と思えばある程度は出来ます。それによりコードを圧縮可能な事はしばしば生じますね。
どっちにせよ、VBだろうとCだろうと、関数型で得た「テクニック」はそのまま活かせないにせよ、プログラムを書く際の「視点」とか「切り口」がだいぶ変わっていく(良い意味で)と思います。
また、Rustなんか見ても分かりますが、「次世代の低レベル操作用言語」もかなり関数型的なアプローチを導入してるんで(例えば条件文は条件「式」になってて値を返す)、その辺攻略するにも良い基盤を与えてくれるでしょう。