石野光仁 Blog

開発、C#、ASP.NET、アイライトの活動について、いろいろ

AILight Banner
AILight Blog

プロフィール

石野光仁 Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

varは、2007年のクリスマスプレゼント?

いろんな所で、いろんな議論がされているので
リンクをまとめてみました。 よかったら年越しでいろんなブログに
突撃してみてくださいな

■■R.Tanaka.Ichiro's Blog
■暗黙的型付け
http://blogs.wankuma.com/rti/archive/2007/12/25/114456.aspx
http://blogs.wankuma.com/rti/archive/2007/12/26/114624.aspx
http://blogs.wankuma.com/rti/archive/0001/01/01/114850.aspx

■■菊池 Blog
■仕様は変わっても真理は変わらない
http://www.ailight.jp/blog/kazuk/archive/2007/12/26/14345.aspx

■■凪瀬 Blog
■型推論を使う理由は抽象型を使うようなもの?
http://blogs.wankuma.com/nagise/archive/2007/12/26/114706.aspx

■■GSP.NET GJAX!
■VS2008が広まると理髪店が儲かる  そのわけはにっけ…(内容:varキーワードについて)
http://blogs.wankuma.com/gshell/archive/2007/12/26/about_var.aspx
■型議論
http://blogs.wankuma.com/gshell/archive/0001/01/01/about_var2.aspx

■■えムナウ Blog
■暗黙的型付け じじいの心配
http://blogs.wankuma.com/mnow/archive/2007/12/27/114921.aspx

■■ひよっこプログラミング
■ソースの可読性
http://blogs.wankuma.com/koka/archive/2007/12/27/115031.aspx


2003年のDisposeを思い起こさせるような盛り上がり方ですね。
と、アイライトも参加したいところなのですが、varを使っての
コーディングをしたことがないことと、”型”にはあまり興味がないので
熱く語れないんですよね。

だいたい、菊池さんのコメント数(15)って見た時には やばい。スパムにやられたのかな?
って思ったぐらいですからね
と、そうは言っても少しぐらい意見がありますので 書き残しておきますか
あまり役には立ちませんが。

先ほど、型に興味がないと書いたのですが、頭の悪い私としては、プログラムの
コーディング中に型を意識しなくてはいけないのは苦痛でしかありません。
たとえば、菊池さんのブログで書かれてある

var amount = this.Amount;
var unitPrice = this.UnitPrice;
var price = amount*unitPrice;

これなんかは、非常に好きなコードの一つになります。
もしこの処理を型を理解できない人がかいたら

string amount = this.Amount;
string unitPrice = this.UnitPrice;
string price = amount*unitPrice;

こんな風な、おかしなコードを書く可能性があります。
もちろんコンパイルエラーもかかりますが、上と何が違うのでしょうか?
このコードの中からは、AmountとUnitPriceを掛けた値が欲しい事が読み取れます。
で、コンパイラーがエラーを表示させたときに思う事はただ一点。
コンパイラーよ、エラーを出すぐらいならコードを自動で直してくれよって
そう思う貴方なら、varを使ってもいいんじゃないですか?
まぁ そんなコードなんて書かないよって言われたらそれまでですが(笑)

な感じで、処理中を書いているのに、型の事まで意識するほど頭もよくないし
(あぁ 言っちゃった。 だめプログラマ決定だ、var使ったって意識しなくちゃ
 いけないだろう > 自分!!)
以前から冗長な書き方が嫌いで・・・ というか面倒くさくて

Form form = new Form();
なんて コードは嫌いで

Form form = new();
でいいんじゃね? って思っていたけど

varの型推論で書いたほうがいろいろと便利そうというのが見えてきたので

var form = new Form();

ってのは ある意味、自分の望んだ形なのかもしれまませんね。
ということで、アイライトは varを使ってみようかと思っています。

型を意識する事は、処理を記述する上での思考の邪魔でしかない
頭の悪い私はそう思っています。
型を意識しないで記述できるプログラム言語にめぐり逢いたいですね。varなんかは、非常にいい線なのかもしれません

#varよりも、こっちの方が気になる
#Color.FromArgb(0, 0, 255);
#なんて順番より
#Color.FromArgb(R 0, G 0, B 255);
#Refのように書けるようにしてほしい。

投稿日時 : 2007年12月28日 9:43


コメントを追加

#  re: varは、2007年のクリスマスプレゼント? 2007年12月28日 9:54 R・田中一郎

>#Color.FromArgb(0, 0, 255);

僕としては、FromArgb というメソッド名が暗に、各値が示す意味を語っているのかな、と思いました。

#  re: varは、2007年のクリスマスプレゼント? 2007年12月28日 10:30 石野 光仁

>>#Color.FromArgb(0, 0, 255);
>僕としては、FromArgb というメソッド名が暗に、各値が示す意味を語っているのかな、と思いました。

Argbの場合は、引数は4つじゃないの?って 
思ってしまいます。
あと、並び順に意味を持たせる事は、あまり
好きじゃないんですよね。
並びを間違えてもコンパイルエラーにならない
場合もありますし。

#  re: varは、2007年のクリスマスプレゼント? 2007年12月28日 11:53 nsharp

はじめまして。( ゚д゚)ノ

> プログラムのコーディング中に型を意識しなくてはいけないのは苦痛でしかありません。

禿同です。

コーディングでは型は「ほどほどに」意識しつつ、本当に整合性が取れてるか一貫してるかは
コンパイラにすべて判断をおまかせする。
自分はあくまでやりたいこと(What)だけを「宣言的に」記述する。

そういう方向に向かってるのだと思います。

とはいえ、C#が型推論してくれる範囲はまだまだ断片的でしかありません。
なので、C#で型推論を知った人(煽り的に言い換えれば、C#の型推論しか知らない人)と
もっと過激な型推論(F#とかHaskell)を体験した人とでは、話の前提がかなり違うように見受けられます。

C#の断片的なものだけを見て「型推論ってあまり役に立たない」って結論づけるのは短絡的ですし、
かといってC#の例では「型推論ってこんなに便利だよ」となかなか示せないジレンマもあるわけでして・・・。

議論が炎上してる原因はそこにあるのかな?と思ったり。

#  re: varは、2007年のクリスマスプレゼント? 2007年12月28日 14:02 シャノン

アンチvarでは、「コンパイラと同じ推論を人間がしないといけないのが辛い」という意見があると思います。
C#ならまだマシですが、本当の動的型言語ではすごく辛かったです。

ところで、「型を意識しないプログラミング」って、本当に可能なんですか?

ちなみに、名前付き引数は大賛成です。

#  re: varは、2007年のクリスマスプレゼント? 2007年12月28日 14:07 石野 光仁

はじめまして!!

>自分はあくまでやりたいこと(What)だけを「宣言的に」記述する。
>そういう方向に向かってるのだと思います。

ふむふむ
確かに、そういう方向に向かっていってほしいとは思いますね。

varだと可読性がわるくなるってどこから来ているのですかねぇ
昔の習慣? プリフィックスは? 慣れの問題のような気も
するんですけどね。

コーディング中に、この型は何型だから、何をさせなくちゃいけない
なんて思ってコード書いているのかな? 実際には変数につけた
名前を見ながら勝手に頭の中で判断していて
それが、数値型か、文字列型か、日付型がぐらいを判断しているだけだと
思うんですよ。

プログラムの内容をを理解する上で型が本当に重要なら、ソースを開いたときに
一番に型を確認しますか?人間の脳は優秀だから前後をみれば型なんて
ある程度想像できますし、


って 今日はボーリング大会なので ここで抜けです。
途中ですいませんが まぁ そんな感じで
タイトル
名前
URL
コメント