« 「語感」って大事ですよね。 | トップページ | Project Euler --- 素数を扱う問題 »

2008年12月11日 (木)

プログラム言語について語るなら……

 先日、あるブログで「Ruby には goto 文がないので、大域脱出ができずに使いづらい」といった主旨の記事を見ました。→iSAMrx72's思いつきblog
 結論から言うと、Ruby では大域脱出をする場合には "goto" ではなく "catch and throw" を使うので、記事を書いた人が Ruby のことを良く分かっていなかっただけのことでした。

 

 この記事を読んで、いくつか思ったことがありました。

 まず一つは、プログラム言語を批判することについて。
 対象となるプログラム言語を使い込んで、本当に深いところまで知っている人がその言語を批判をしているのは少ない気がします。
 どちらかというと、今回のように本来その言語に標準で備わっている機能を知らずに、「あの機能がない、この関数がない」といった内容の批判が目につくように思います。

 また、自分の得意な言語(使っている言語)の常識を、批判対象となる言語に押し付けて批判をしてしている人も多いように思います。
 それぞれの言語にはそれぞれのプログラムスタイルがあります。その言語に合わないスタイルでプログラムを書けば、プログラムを書きづらいだろうし、速度も上がらないのは当然です。

 「言語には優劣はない。あるのは得意な分野と不得意な分野である」といった内容のことを言っていた人がいます。名言だと思います。
 その言語の不得意とする分野での性能が悪いといって批判するのはある意味卑怯だと思います。

 各言語の理論的な「比較」は、これからプログラム言語を学ぼうとする人にはとても有益だと思います。でも、感情的な「批判」は何の役にも立たちません。

 どのプログラム言語にも長所と短所があります。長所の部分が大好きで、短所の部分に目がつぶれるのであれば、その言語を使えばいいし、短所の部分がどうしても許せなければ、その言語にしがみつかずに、他の言語を使えばいいのではないのでしょうか?
 上司の命令で、自分の嫌いな言語をいやいや使わされている人以外は、嫌いな言語の批判をする暇があったら、自分の大好きな言語で自分や他の人に役に立つプログラムをガンガン作ってもらいたいものです。

 

 もうひとつ気になったのが、「なんで今さら "goto" なのか?」ということです。
 "goto" の乱用の反省から構造化プログラミングは生まれたはず。"goto" を使わなければ困るほど深いネストが出来上がった場合、アルゴリズム自体に問題がある場合がほとんどだと思います。

 私は、N88-BASIC、アセンブラ、C、Ruby、Scheme と使ってきましたが、BASIC とアセンブラはともかく、C や Ruby で "goto" や "catch and throw" を使った記憶がありません。
 私のような趣味でプログラミングをしている者が知らないだけで、もしかしたら業務用のプログラムを作るようなシビアな場面では "goto" はまだまだ必要なのでしょうか?

 別に 「"goto" が諸悪の根源で絶対使ってはいけない」なんてことは思ってもいませんが、"goto" を使いたくなったら、アルゴリズムを見直すべきじゃないでしょうか?

 

 最後にもう一つ。
 この記事を書くきっかけになったブログのコメント蘭に

変数を宣言しないで使うのは、どんなもんなんでしょうね。Rubyは。昔Basicは宣言無で使ってました。ただし、綴り間違いが多いので、Dimとかで宣言したのですが、Rubyも綴り間違いに悩まされるのでないでしょうかね。
というコメントがありました。

 これも、「Ruby のことが分かってないなー」って感じですね。
 そもそも Ruby は「動的言語」ですから、変数と型が無関係なのが「売り」なのです。(それゆえ、「ダックタイピング」なんかもできるわけで……)
 Ruby の場合、クラスの中に小さいメソッドを埋め込んでいくスタイルが主流なので、思い切り離れた場所で初期化した変数を使う場合はほとんどありません。
 多くの場合、エディタの一画面に収まる範囲でしか変数を使用しないので、変数の綴り間違いはあまりないと思います。
 だいたい、変数の綴り間違いは言語のせいではなく、間違いやすい変数名を付けたプログラマーのせいではないでしょうか?

 Ruby は最近注目されているせいか、Ruby 批判も多い気がします。ただし、そのほとんどは勘違いか言いがかりですけど……。
 それに比べて Scheme の場合はあんまり批判をされてませんね。あるのは Common Lisp ファンとの間の Lisp-1, Lisp-2 論争くらいか?さすがに C や Perl と Scheme を直接比べるのは無理がありますよね。(単にマイナーなだけか?)

« 「語感」って大事ですよね。 | トップページ | Project Euler --- 素数を扱う問題 »

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/43384325

この記事へのトラックバック一覧です: プログラム言語について語るなら……:

« 「語感」って大事ですよね。 | トップページ | Project Euler --- 素数を扱う問題 »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ