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

| コメント(0) | トラックバック(0)

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 のタグ:

トラックバック(0)

トラックバックURL: http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/417

コメントする

Recent Tracks

gorn708's Profile Page

このブログ記事について

このページは、gornが2008年5月19日 23:45に書いたブログ記事です。

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

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

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Adwords