Oh 脳《122》変数には値を代入できない:代入vs.束縛

記事一覧|Oh 脳: after ZERO《其之佰弐拾弐》
変数には値を代入できない:代入vs.束縛

《著》真樹育未《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12

■ 関連記事
「代入」と「束縛」との違いは?
  • C++JavaRuby と約10年周期で繰り返される「永遠のテーマ」なのかもしれません。(^.^)

Smalltalk-80 セミナーの講師を勤めていた 1988 年頃にも、C/C++ プログラマーを相手に「代入と束縛との違い」を説いたものです。その状況は、20年後の今も変わらないようです。すると、思い出されるのは…

Python公式 文書にも、

Assignment statements are used to (re)bind names to values and to modify attributes or items of mutable objects:

とあるにもかかわらず「変数に値を代入する」という(C言語から伝承される)伝統的なモデルへの未練を断ち切れないのは何故でしょうか。「アナログ Java/C# 思考」から「ディジタル Ruby/Python 思考」への扉を開く鍵は、こんなところにも落ちています。それを拾って、自分も新たな世界の住人になれるかは、受講者のみなさん次第です。

違い が分かる」プログラマー を目指して、受講者のみなさんが「はじめに」何を知っておくべきか。それが「はじめの一歩」から「末の千里」へと繋がります。

  • 情報隠蔽」と「カプセル化」との違いは?
  • 「矩形」と「長方形」との違いは?
  • 「整理」と「整頓」との違いは?
  • 「もりそば」と「ざるそば」との違いは?
  • 「そうめん」と「ひやむぎ」との違いは?

《余録》その違いはさておき…

「これらの違いは…」と、ここで雑学を披露することはしません。むしろ、受講者のみなさんに考えて欲しいのは、次のようなことです。どうしても知りたい…という方は、セミナー会場で…(^.^)

■「もりそば」と「ざるそば」との違い

よくある誤解が「海苔の有無」というものです。すると「海苔だけでこうも値段が違うのか」ということになりかねません。空腹を満たすだけの客にとって、その違いは取るに足らないことでしょう。しかし、蕎麦職人(プロ)を目指す修行の身ともなると、話は違います。行列ができる評判の店で「海苔があるかないかの違いだよ」と言われたら、その店で修行を積みたいとは思わないでしょう。

■「そうめん」と「ひやむぎ」との違い

日本農林規格JAS規格)では、その違いを麺の太さ(直径)で区分しています。いかにもお役所仕事というか、役人の浅知恵と言われかねません。食の安全や小麦粉の確保に尽力する様を強調しても、食文化の伝承には無頓着ということなのでしょう。手打ちうどんが醸し出す風情など、霞ヶ関のビル街からは望めない風景なので、それは無理からぬことかもしれません。

■「整理」と「整頓」との違いは?

クラスやメソッドを使うだけで、OOP を実践しているかのように錯覚に陥ります。確かにそれだけで、コードは「整頓」されて見栄えも良くなるので、それを自慢したくもなることでしょう。しかし、メソッドの中身を見ると、伝統的な if 文/for 文/配列への未練を「整理」できていないコードが散在しています。見かけ倒しの OOP という事例には、枚挙に暇がありません。

■「情報隠蔽」と「カプセル化」との違いは?

システムの利用者にとって、その違いは取るに足らないことでしょう。しかし、システムの開発者にとって、これらの違いは意味深長です。自分はSEなのでプログラムには疎くて…とか、何か違いがあるの…と言われたら、どうしますか。スキルアップを目指して転職を考えているなら、その「違いが分かる」プログラマーがいるかいないかで、どちらの会社を選びますか。

■「代入」と「束縛」との違いは?

Java/C# などの「ハイブリッド型の OOP 言語」から、Ruby/Python などの「純粋な OOP 言語」へのパラダイムシフトには、「未練を残したまま」でいると意外と苦戦するかもしれません。「アナログ Java/C# 思考」から「ディジタル Ruby/Python 思考」への扉を開く鍵は、こんなところにも落ちてします。OOP の本質を理解することが、これらの違いを知る早道にもなります。


》作業中です《

Last updated♪2009/07/20