« RD 潜脳調査室 #06: ラブ・レター | メイン | Blassreiter -ブラスレイター- #07: 憎悪の果てに »

プログラミング言語が与える影響

Kazzzz の日記の"言語が思考を規定する" というエントリが面白いので。確かに、プログラミング言語はそれが想定しているモデルがあるので問題解決に与える影響は少なくないと思います。

それをちょっと考えるのに一つの問題を設定して考えます。問題設定はnを1から初めてその2乗を足していき、和が2000を初めて超えたとき和はいくつになるかという問題を考えます。通常の、C++ 言語で考えれば以下のようになるでしょうか。

#include <iostream>
using namespace std;
int main() {
	int sum = 0;
	int n = 1;
	while(sum > 2000) {
		sum += n * n;
		n++;
	}

cout << sum;
return 0;
}


Code 1: C++ Version

これを、F# で記述すると以下のようになります。

open System
let square x = x * x;;
let rec squareAdd sum current maximum = 
	if (sum + square(current)) > maximum then
		(sum + square(current))
	else squareAdd (sum + square(current)) (current + 1) maximum;;
let main = System.Console.WriteLine(squareAdd 0 1 2000);;
Code 2: F# Version

コードを考えたときには、F# の方が考えやすかったです。というのも、F# の場合、ループではなく再帰で実現されているためです。再帰的な問題というのは再帰的な定義が書きやすい言語の方が解がイメージしやすいです。言語が変われば解を導く方法論も変わり、結果的にそれは成果物にも反映されます。異なる言語を学べばいろいろな解が得られるようになります。ポイントは異なる思想のもとに作られた言語を学んでいる方が得られるものが多いことでしょうか。

Technorati のタグ:
このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 このエントリーをYahoo!ブックマークに追加

トラックバック

このエントリーのトラックバックURL:
http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/417

この一覧は、次のエントリーを参照しています: プログラミング言語が与える影響:

» [.NET]Achiral に Scan とか Pairwise とか条件変化可能な TakeWhile を入れてみた 送信元 NyaRuRuの日記
以下の問題を解きながら Achiral を弄っているとあちこち breaking change を作っちゃったのでマイナーバージョンをひとつあげてみるテ... [詳しくはこちら]

» [C++][PStade.Oven] 送信元 梶本裕介の日記
http://www.cworld2000.com/blog/archives/2008/05/post_19.html http://d.hatena... [詳しくはこちら]

» boost Xpressive で数列に対する文法を作る 送信元 NyaRuRuの日記
果ては Xpressive みたいな、正規表現を文字列以外の方法で記述できる実装だと、「文字」の「列」ですらなくても「文字とおなじようにふるまうもの」の... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年05月19日 23:45に投稿されたエントリーのページです。

ひとつ前の投稿は「RD 潜脳調査室 #06: ラブ・レター」です。

次の投稿は「Blassreiter -ブラスレイター- #07: 憎悪の果てに」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

検索

この Weblog について

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.35