このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

「常識」というよりは「理解の基盤」と「説明の方法」

昨日のエントリーはそこそこのブックマークを集めました。それは、hiromark、jazzanova両氏の1,2-getの効果が大きいでしょう(この現象に関してはコチラを参照)。それにしても、わざわざ「自演」ってタグで3-getってもナンダヨナ>自分。

で、ブックマークコメントをながめると、うっすら「そんなのを常識っていうのかよ、エッ?」という雰囲気もただよってます。はい、一般的文脈における一般的常識ではないです、明らかに。見出しに「プログラマの常識」と入れたのが誤解のもとでしょうが:

客観的な基準なんて求めないのだけど、「プログラマのための***」で暗黙に仮定している常識、それを少し明白にしたいのです、個人的にね。

という話だから。

別な事情もあって、「プログラマの常識」をハッキリさせたほうがいいな、と感じたりしてます。

の「別な事情」ってのは、非常に基礎的なプログラマ教育みたいな事情だと思ってください。


でね、ここから先の話は、もしご意見/ご助言があったら(コメント/トラックバックで)聞かせて欲しいことなのです([追記]一言ならブックマークコメントでもいいです。[/追記]

  1. str1, str2が文字列だとして、if (str1 == str2)と書いてしまうのはよく見かけますよね(ある意味、自然だと言える)。Cならstrcmp、Javaならequalsを使え、って教えるでしょうが、その理由とか事情とかを心底納得できるように説明するにはどうしますか。文字列がインターンされていれば、==でもよかったりするし。
  2. ローカル変数としてchar buffer[BUFF_SIZE];って宣言して、そのままreturn buffer;として何故いけない? これ、割と問題なしにいったりしますよ(いや、問題ありだけど)。
  3. 代入文の右と左で使える式の形を構文ルールとして理解すべきでしょうか。けっこうバラエティありますよ。n = 3*x; a[1] = n + 2; *(p + 1) = a[i - n];とか。
  4. メソッド内で使える「this って何?」と聞かれたら…。

僕は、実装を一切引き合いに出さない能書き(表示的意味論とか形式仕様とか)は割と得意なんですが、上の状況でそれしたら、アンタ、ソリャチガウでしょ。チガッテナイのは、どんな説明かなぁ。そして、その説明(と理解)の基盤はなんだろうなぁ。