作者: 機械伯爵
日時: 2007/10/18(22:42)
 機械す。

> >  まぁ、スクリプティング言語の好き嫌いはともかく、オブジェクト指向言語を
> > 話すのに、Smalltalkの知識を上っ面だけでも知らないのは問題だと思います。
> 
>   わかんないっす/

 いや、Rubyは充分似てると思うんですが(汗)

# ご本人曰く「PerlっぽいSmalltalk」というのは、確かにそーかもな、
 と、最近思いまする。
 
>   まぁ、オブジェクト指向そのものを議論する気はさらさらないので、知らな
> くてもいいかなーとは思ってますが。ポリモーフィズムってなんだっけ?とけっ
> こう本気で思いました(--;

 ただ単に、「どう扱うかを決めておいて、あとでそれに合わせてオブジェクト
を作る」ってダケの話なんですけどね。

 型がきっちりしてると、仮想クラスだのインターフェイスだのが必要になっちゃ
って、いきなり難しくなるんですな、コレが。

 タイプルーズなSmalltalkもPythonもRubyもJavaScriptも、放り込むだけなので、
とっても簡単。

 たとえば設計するときに、

def sortReverse(list):
  list.sort()
  list.reverse()
  return list

 とかやっとけば、sortが整頓、reverseがひっくり返す、とか決めておけば、
どんなリストでも、この手続きで整頓されてひっくり返される、という案配
です。

 ……つか、簡単な例で説明するとマヌケだなぁ……

 この例の前にRPGっぽくSwordとかArmorとかで説明しようとしたら、
とあるページ(http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/polymorphism.html)
でも同じような説明をしてました。やっぱ考えることは同じか……

 でも、Pythonとかなら、別にItem classとかをベースクラスにしなくても

 SwordPlusOne  = Sword + 1
  AromorPlusOne = Armor + 1

 としておけば、

 def AddPlusOne(item):
    return item + 1

 とか出来ます。

 ……ああ、なんでこうマヌケな例しか思い浮かばないのか……

>   困ったことに Squeak を触っても使い方がさっぱり想像できず、いつも数分
> で挫折しているので、Smalltalk の入り口に立つことすらできなかったりしま
> す。

 Squeakだと、とりあえずTranscriptとWorkSpaceを開けば、簡単なSmalltalkの
式が試せますし、ボタンのスクリプトを覗いて改造すると、わかりやすいです。

 /機械伯爵/