タグ

ブックマーク / sumim.hatenablog.com (14)

  • Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です

    タイトルは釣りです。 まずおおざっぱに用語の整理をさせていただくと、ここで「トレイト」は、シェルリ(Nathanael Schärli)らが2002年頃に発表したTraitsやそれ用のエンティティ(trait)を指し、「ミクスイン(Mixin, mixin)」は従来からある実装の多重継承方法のひとつ、具体的には継承機構を使ってメソッドを定義したクラス様エンティティ(クラスでも構わない)を継承パスに差し込むことで対象となるクラスにメソッドを追加する機構(特別な機構を要しないときは単なるクラスの運用方法)、そのときに用いるクラスあるいはクラス様エンティティ(例えばRubyならモジュールとか)を指すことにします。 トレイトやその機構について説明すべきことはいろいろありそうですが、詳しくはシェルリらの論文(Traits: Composable Units of Behaviour など)を読んでい

    Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です
  • Smalltalk好きから見た『パターン、Wiki、XP 〜時を超えた創造の原則』 - Smalltalkのtは小文字です

    パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ) 作者: 江渡浩一郎出版社/メーカー: 技術評論社発売日: 2009/07/10メディア: 単行(ソフトカバー)購入: 75人 クリック: 1,306回この商品を含むブログ (159件) を見る とても面白かったのであっという間に読み終えてしまいました。タイトルにある「パターン」「Wiki」「XP」については、以前、それぞれの成立経緯を調べてみたこともあったので、べつに買って読むほどのことはないかなーと当初は思っていたのですが、著者による、 RubyKaigi2009初日のライトニングトークの一番最初に発表します。タイトルは『パターン、Wiki、XP、そしてRuby』。テーマは、このRubyの関わりです。 このには、オブジェクト指向の生みの親であるアラン・ケイやSmalltalkとの関わ

    Smalltalk好きから見た『パターン、Wiki、XP 〜時を超えた創造の原則』 - Smalltalkのtは小文字です
  • いや。それはない。(キッパリ)w - Smalltalkのtは小文字です

    ケントベック「SmallTalkが世の中に広まればいいとおもっていたら、広まった時の名前はRubyだった」 幸せなエンジニアになるための仕事術/まつもとゆきひろ&平鍋健児 - @tmtms のメモ ケント・ベックともあろう人が「SmallTalkが世の中に広まればいい」などと間違っても願うわけがない。^^; まあ、そんなことはともかく、この発言は Ruby が Smalltalk の後継や代替としてあるかのような誤った印象を聞き手に与える可能性があるので(VisualWorks の存在を知らない人がよくやりがちな “Smalltalk は今は Squeak と呼ばれている…” みたいな紹介と同じ程度には)適切ではないと思う。 Matzにっき(2007-06-25) - Where I Come From

    いや。それはない。(キッパリ)w - Smalltalkのtは小文字です
  • インスタンスが属するクラスをあとから変更する操作をいろいろな言語で - Smalltalkのtは小文字です

    id:sumim:20090121:p2 の続き。はたしてどんな言語にこの種の機能が備わっているのか興味を持ったので調べて書いてみることにしました。ただ、会社員と学生の例のままではワンニャン同様、そういうことが出来て何が嬉しいのかイメージしにくいと思うので、Common Lisp HyperSpec の CHANGE-CLASS にある座標系変換の例に変えましょう。こちらのほうが、シンプルなまま要点を押さえていてよさそうかなと。 念のため概要と条件を書いておきますと、手順としては、 直交座標系(cartesian)と極座標系(polar)という二つのクラスを定義 極座標系のインスタンスを生成後、それが属するクラスを直交座標系に変更 (おまけで)ふたたび極座標系に という操作を行ない、その後、 直交座標系クラスに属するようになったときに x や y の値も(変換されて)引き継がれているか?

    インスタンスが属するクラスをあとから変更する操作をいろいろな言語で - Smalltalkのtは小文字です
    joan9
    joan9 2009/03/29
  •  ある人が会社員になったり、学生になったりすることを Smalltalk で - Smalltalkのtは小文字です

    つまり会社員、学生をクラスとして定義した場合には、ある人が会社員になったり、学生になったりすることをオブジェクト指向プログラミング言語では直接表現できないのです。 オブジェクト指向は当に「オブジェクト」指向か? OOとはなにか - みねこあ で引用されているこの文を見て、「できないのです」と言い切られてしまうとついね。つい。^^; ということで文脈も空気も読まないで悪ふざけ。 Object subclass: #会社員 会社員 >> 就学する ^self become: (self as: 学生) 会社員 >> 就職する self error: 'すでに会社員です' Object subclass: #学生 学生 >> 就学する self error: 'すでに学生です' 学生 >> 就職する ^self become: (self as: 会社員) | Aさん | Aさん := 学生

     ある人が会社員になったり、学生になったりすることを Smalltalk で - Smalltalkのtは小文字です
    joan9
    joan9 2009/03/29
  • 三系統の“オブジェクト指向”を「北斗の拳」に例えてみる - Smalltalkのtは小文字です

    id:sumim:20080415:p1 の続き? ▼データ型にこだわるOO → 南斗聖拳 広く伝承され、主立ったもので総勢一〇八派に分派している。また、有力流派から派生する流派(派生流派)も存在するため、流派の数はさらに増える(南斗聖拳 - Wikipedia より)。切り裂く技が共通(つまり「ユーザー定義型(抽象データ型)」のことか。これに軸足を置くことに関しては各派共通しているから)。主流派の理念は「カプセル化、継承、ポリモーフィズム」。 ▼メッセージングにこだわるOO → 北斗神拳 一子相伝の暗殺拳である。1800年間他門に敗れたことはないとされ、戦いの中で奥義を見出し、常に進化を続ける点から「地上最強の拳」と呼ばれている。(北斗神拳 - Wikipedia より)。敗れたことはない…とか、最強…とかはファンじゃない人たちからは反感を買いそうだけど、「戦いの中で奥義を見出し、常に進

    三系統の“オブジェクト指向”を「北斗の拳」に例えてみる - Smalltalkのtは小文字です
  • “オブジェクト指向”の本質 - Smalltalkのtは小文字です

    「OO(OOP)とは何か?」については、ネタが割れてしまえばそんなに複雑なものではない…と個人的には最近、考えるようになってきています。 リスコフのユーザー定義型(aka、抽象データ型。データと手続きのセット)そのもの、あるいはその「ユーザー定義型」をクラスやそれに準ずる機能で実現しようとするOO(ストラウストラップ。aka、クラス指向。継承を使ったプログラミング)。もしくはそれらを一般化したOO(クック。aka、手続きによる抽象化)。 メッセージングにより動的性を実現しようとするOO(ケイ。aka メッセージ指向) 今回登場した、後者のメッセージングのOOのミニマリズムをおしすすめることによって派生的に生じたOO(アンガーとスミスからの 派生 変形。aka、プロトタイプベースOO。フレームとスロット、あとは委譲機構があれば十分…というミニマル化の結果、アンガーとスミスの頃には重要だった“

    “オブジェクト指向”の本質 - Smalltalkのtは小文字です
    joan9
    joan9 2009/02/22
  • 「憂鬱な勇者」を Squeak Smalltalk で - Smalltalkのtは小文字です

    http://d.hatena.ne.jp/scinfaxi/20080527/1211919944 に触発されて、http://d.hatena.ne.jp/hrkt0115311/20080527/1211891558 を Squeak Smalltalk で書いてみました。 | モンスターたち スキル群 最高レベル 経験値を得た旨 最終レベル到達の旨 割愛の旨 レベルが上がった旨 | モンスターたち := #('焼きたてパン' '強いシャチホコ' 'もんじゃ焼き一年生' '怪人ホタテ男' 'ニセ勇者' '逃げ足の早いアレ' '睡魔' '煩悩' '愛らしい子犬の中の人' '恋するスズメバチ' '勇敢なクマンバチ' '信じられない物' '勇者の師匠' '浮遊する鎧' '怪盗ドボン' '闇の招き' '誘惑のカスタードクリーム' 'しょっぱすぎる籠手' 'カレー味の兜' '光沢だけは一流の

    「憂鬱な勇者」を Squeak Smalltalk で - Smalltalkのtは小文字です
  • プロトタイプベースの誤解 - Smalltalkのtは小文字です

    クラスベースのOOとプロトタイプベースのOOで決定的に違うのは、プログラムを動かしている最中にオブジェクトが出来ること、すなわちメソッド(method)を追加したり再定義したりできるかだ。 404 Blog Not Found:タイプ・クラス・プロトタイプ - OOの語彙 これはひどい。w オブジェクトに対して動的(実行時)にメソッドやインスタンス変数を追加できることと、“プロトタイプベース”においてオブジェクトがそれが属するクラスによらず独自のメソッドやインスタンス変数を持てることとは別の話です。 あらためて、「プロトタイプベース」という用語自体に問題が多いことを実感させられる記事でもありますね。個人的には、クラスを用いないオブジェクト生成手法の話でないのならば(つまり、「プロトタイプの複製でオブジェクトを生成する」ことが話の筋でないならば)「プロトタイプベース」ではなく、「インスタン

    プロトタイプベースの誤解 - Smalltalkのtは小文字です
  • Java の「インターフェイス」という機能の元ネタ - Smalltalkのtは小文字です

    具体的な言語処理系というわけではありませんが、おそらくこれが元ネタだろうというアイデアが記された論文は見つかりました。もっともゴスリングが Java や Oak(Java の前身…というか初期バージョンそのもの。変わったのは名前だけなので)について書いたものに Java のインターフェイスは○○を参考にして考えた…という記述を見つけられずにいるので、これをFAとするには、もう少し調査が必要そうですが、とりあえずということで。 Interfaces for strongly-typed object-oriented programming (1989) - ダウンロードは有料 この論文中では、たとえば Point というインターフェイスを定義して、それを実装した polar_point というクラスを定義する例として、仮想言語を用いてこんなコードが示されています。 interface Po

    Java の「インターフェイス」という機能の元ネタ - Smalltalkのtは小文字です
  • なぜかくも人は Smalltalk を殺したがるのか? - Smalltalkのtは小文字です

    アラン・ケイが Smalltalk を死んだことにしたがるのは、まあ分かります。かつての自分のアイデアの実証や検証のために一定の成果を挙げられたのでもう用済み。あるいは、その後、変化をやめてしまい and/or 望んだように育ってくれなかったのでもはや興味を失った、から。 では、エンタープライズな人達は、どうして Smalltalk に一目をおいているふうを装いつつも、そのじつは悪意をむき出しにして(まだこれから…と Smalltalk を愛してやまない人たちの奮闘を尻目に)あからさまに足をひっぱろうとするのでしょうかね。かつての Smalltalker たちは彼らに想像を絶する仕打ちでもしたのでしょうか?(^_^;) 「我々はか弱い。もはや専用のハードも失われて久しく、それのみでは生きていけないただの寄生環境だ。だからあまりいじめるな…」 実験により創りあげられた無敵の環境ではあるけど…

    なぜかくも人は Smalltalk を殺したがるのか? - Smalltalkのtは小文字です
  • sumim's smalltalking-tos - ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました

    アラン・ケイが Smalltalk(Squeak)を卒業して次を目指すための秘密兵器と目される“黄金の箱”あるいは「イアンのやつ」 と呼ばれている Pepsi & Coke 。地球の重力(暫定ダイナブック= Smalltalk )に魂を縛られた「オールドタイプ」な私には明らかに新たな「脅威」(^_^;)なわけですが、こいつがどの程度動くものなのか、はたして当に Smalltalk(や LISP)を凌駕する「ニュータイプ」なのかも興味があるところなので、ちょっとだけいじってみました。 とは申しましても、「オールドタイプ」である以前に、私は言語処理系内部や仕組みことがよくわからないので(ぉぃぉぃ…)、サンプルに見つけて面白そうだなーと感じた PythonJavaScript もどきのコードを比較的高速に走らせるってのをチョしてみただけです(実質はたらいまわし大会?w)。けっきょく“コイ

    sumim's smalltalking-tos - ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました
  • オブジェクト指向言語として必須な要素とは何か? - Smalltalkのtは小文字です

    ときどきの雑記帖 リターンズ -おしえて(OOPLの)えらいひと より。お呼びでない…とは思いましたが、私のこれまで調べたことを頭の中で整理するのに役立ちそうなので、できるだけ簡潔にまとめてみます。 ケイのオブジェクト指向(メッセージングのオブジェクト指向)に立脚する場合 このオブジェクト指向のコンセプト パーソナルコンピューティングに係わるものをメッセージングで表現。 それをサポートする言語に必須のもの メッセージング(あるいは、それに準ずる)機構と、メッセージのレシーバ(たいていは、オブジェクト。状態や処理の保持・保護・隠蔽を行なえることが期待される)。 原則として欠いてはいけない機能 可能な限りの動的性。 ストラウストラップのオブジェクト指向(ユーザー定義型のオブジェクト指向)に立脚する場合 このオブジェクト指向のコンセプト 抽象データ型(この文脈ではユーザー定義型を指す)を「クラス

    オブジェクト指向言語として必須な要素とは何か? - Smalltalkのtは小文字です
    joan9
    joan9 2007/01/26
  • オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です

    忙しい人のためのまとめ 一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二系統がある。(ただし簡単のため、次のうち前者から批判的に派生して生じたプロトタイプベースのオブジェクト指向はここには含めていない) アラン・ケイによる、変化に強い長期運用可能な遅延結合システムを SIMULA67 にあった「オブジェクト」をメッセージの受け手とすることで実現(オブジェクトにメッセージ送信)するアイデアに基づく「メッセージングのオブジェクト指向」と、 ビアルネ・ストラウストラップ(前後して抽象データ型を発案したリスコフ人、オブジェクトクラスを考えたニガードらSIMULA陣営、Eiffelのメイヤーらも同様の着想を得ている)による、ユーザー定義型(抽象データ型)を SIMULA67 にあった「クラス」という言語機能を使って実現(カプセル化、継承、多態性)するアイデアに基づく「抽

    オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です
  • 1