タグ

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

  • Mini Squeak 2.2 (Webブラウザで動作する、古く、最小構成に近いSmalltalk)の古典的 MVC でタイマーを実装する - Smalltalkのtは小文字です

    前回のエントリー『「使わないと損をする Model-View-Controller」のサンプルコードを SqueakJS のデモ画面(Mini Squeak 2.2)で動かす 』では個人的にも実に久しぶりに古典的MVC に触れて楽しかったので、今回は引き続き Mini Sqeauk 2.2 環境を使って @miwa719 さんにご提案いただいたお題にチャレンジしてみました。 Smalltalk知らなすぎるのでSqueakでタイマー作ってみようかな 欲しい機能はこの画像みたいなやつなんだけど、まずは空っぽのウィンドウを開くところからかな(超初心者!) pic.twitter.com/HDkntO1Tfh— miwa (@miwa719) 2019年4月16日 容量を小さくすることを優先して、必要最低限を超えてクラスやメソッドがそぎ落とされてしまった Mini Squeak 2.2.の環境では

    Mini Squeak 2.2 (Webブラウザで動作する、古く、最小構成に近いSmalltalk)の古典的 MVC でタイマーを実装する - Smalltalkのtは小文字です
    yojik
    yojik 2019/05/02
  • 共立出版刊「Common Lisp オブジェクトシステム」の共通例題 Grapher の Smalltalk-80 版を Squeak 1.3 で - Smalltalkのtは小文字です

    Ruby の「特異メソッド」命名の元ネタとも言われる、共立出版刊「Common Lisp オブジェクトシステム」にあった各種 OOPL での共通例題の Smalltalk-80 版を Squeak Smalltalk のごく初期のバージョン(1.31)で動かしてみました。 CLOS-Grapher.st だいぶ改変しないといけないのかな…とおそるおそる試しててみたところ、GrapherView >> #display を #displayView に変更するなどちょこっと変えるだけで案外あっさり動きました。あと、GrapherController >> #isControlActive は必要ないようだったので削ったり、通常のクリックでもメニューが出るように GrapherController >> #redButtonActivity を追加したりしてあります。 Squeak1.3 は

    共立出版刊「Common Lisp オブジェクトシステム」の共通例題 Grapher の Smalltalk-80 版を Squeak 1.3 で - Smalltalkのtは小文字です
    yojik
    yojik 2015/07/31
  • オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です

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

    オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です
    yojik
    yojik 2015/04/17
    “よる抽象化」(Object-Oriented Programming Versus Abstract Data Types (PDF))を挙げていましたが、その後の学習で、これは新たなオブジェクト指向の提唱ではなくリスコフの抽象データ型の再定義(整理・分割)であるとの解釈が可能
  • MVC、自分用メモ - Smalltalkのtは小文字です

    ▼Reenskaug (XEROX PARC) 「MVC」/ Things - Model - View - Editor MVC / XEROX PARC 1978-79 変化しにくいインフォメーションと変化しがちなプレゼンテーションとの分離。メンタルモデルの記述としてのMVCは失敗(続きは DCI, Data - Context - Interaction で)。Smalltalk-76, 1978。 ▼Reenskaug (XEROX PARC) 「MVC」/ Model - View - Controller(Editor) MODELS - VIEWS - CONTROLLERS Controller を追加。Editor は特殊な Controller として位置付け。Smalltalk-80, 1979-。 ▼VisualWorks (ParcPlace Systems) 「

    MVC、自分用メモ - Smalltalkのtは小文字です
    yojik
    yojik 2013/04/22
  • トレイトを使った FizzBuzz を Squeak Smalltalk で - Smalltalkのtは小文字です

    2011-10-08 に触発されて、いつもどおり何周目かの FizzBuzz に今回は Traits というのを使って乗っかってみます。 追記:前置きがやたら長くなってしまったのでまずコードをここで示します。下のほうに載せてあるワークスペース(Squeak4.2などの―)で直接実行できるコードと実質同じ内容ですが、いくらか読み下しやすくする目的で簡略書式に整形してあります。何となく内容を把握するにはこちらが断然読みやすいですが、実際に動かすとなると逆で、省略情報を適宜補ったり、メソッドごとにクラスブラウザにコピペ&コンパイルするといった Smalltalk環境の知識がある程度必要になりますのでご注意ください。 Trait named: #TFizzBuzz TFizzBuzz >> fizz (self asInteger isDivisibleBy: 3) ifTrue: [^self

    トレイトを使った FizzBuzz を Squeak Smalltalk で - Smalltalkのtは小文字です
    yojik
    yojik 2013/03/06
  • Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です

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

    Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です
    yojik
    yojik 2013/03/06
    複数トレイトを組み込む場合、一直線の継承階層にするScala(リニア化)と、一旦メソッドをバラして合体した上で差し込むSmalltalk(フラット化)。オリジナルのトレイトはSmalltalk。Rubyもそんな感じだった
  • DCI パラダイムの提唱者、レインスカウ氏の BabyIDE で遊ぶ 改訂版 - Smalltalkのtは小文字です

    BabyIDE については元エントリーのこちらの長い前振りを参照してください。 DCI パラダイムの提唱者、レインスカウ氏の BabyIDE で遊ぶ - Smalltalkのtは小文字です さらに比較的新しいバージョンの BabyIDE を念頭に、インストールの仕方からコードや操作の記述などを修正した改訂版がありますので こちら もご参照ください。 BabyIDE のバージョンがいまひとつはっきりしていなくて、まじめにチェックしていなかったのですが、久しぶりに遊んでみたら、どうやら現在配布されている BabyIDE ではくだんのエントリーの通りにしてもうまく組めないことも判明したので、現在配布されているバージョン向けに操作を(ほとんどは同じで、ほんの一部ですが)書き直してみました。 [追記 2013-01-23] この改訂版を書いたすぐあとに BabyIDE を含む DCI の新しいポータ

    DCI パラダイムの提唱者、レインスカウ氏の BabyIDE で遊ぶ 改訂版 - Smalltalkのtは小文字です
    yojik
    yojik 2012/10/17
  • Smalltalk基礎文法最速マスター(Squeak版) - Smalltalkのtは小文字です

    はてな的プログラミング言語人気ランキング - Life like a clown 流行りには乗っておくのが吉…と思いつつ、なかなか書き進められないので、とりあえず、クラスやメソッド定義より前のごく基礎的な部分について。思いついたときに断わりなく追記・修正することがありますので、どうぞあしからず。(さっそくですが、タイトルを他の言語のものにあわせて変更しました) ■基的な考え方 Smalltalk では「オブジェクトに対してメッセージを送る」という考え方のみでコードを書きます。「メッセージ式」と呼ばれる式のみを用います。 ▼メッセージ式 メッセージ式の基文法です。 receiver message ▼カスケード 式の終わりにセミコロン「;」を置くと、直前のメッセージのレシーバーに対して、続くメッセージを畳みかけるようにして送ることができます。これを「カスケード」と呼びます。 receiv

    Smalltalk基礎文法最速マスター(Squeak版) - Smalltalkのtは小文字です
    yojik
    yojik 2010/02/08
  • Ruby と Smalltalk のリフレクション機能対応表 - Smalltalkのtは小文字です

    引き続き、日経 Linux 10 月号、「プログラミングのオキテ」にある Ruby のリフレクション機能の表を参考に、Squeak システムの Smalltalk との対応表を作ってみました。 リフレクション機能 Ruby Squeak の Smalltalk メソッド名の一覧 Foo.instance_methods Foo allSelectors メソッド名の一覧 (継承分を除く) Foo.instance_methods(false) Foo selectors オブジェクトのメソッド名の一覧 obj.methods obj class allSelectors 特異メソッド名の一覧 obj.singleton_methods " n/a " 特異メソッド名の一覧 (継承分を除く) obj.singleton_methods(false) " n/a " インスタンス変数名の一覧

    Ruby と Smalltalk のリフレクション機能対応表 - Smalltalkのtは小文字です
    yojik
    yojik 2009/07/21
  • Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です

    [ruby-core:18437] Class as second-generation singleton class を読んだ当初は、特異クラスのクラスが Class ってことでええやん!と思ったのですが、改めて調べてみるとどうやら必ずしもすべての特異クラスが Class に属するわけではないようで(かつ、確認する過程で、id:sumim:20080111:p1 の間違いを見つけてしまったり、id:sumim:20061019:p1 の謎が解けたりもしたので)、この機会に表題の件についていったん図にして自分なりに理解を整理しておくことに。 関連: Ruby1.9 のクラスのメタ階層を整理する 2 - Smalltalkのtは小文字です Ruby1.9 のクラスのメタ階層を整理する 3 - Smalltalkのtは小文字です Ruby で、クラスのメタ階層の情報を得る際の注意として、Ru

    Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です
    yojik
    yojik 2009/02/03
  • 二つのオブジェクト指向とそれぞれのメリット - Smalltalkのtは小文字です

    似たような話の繰り返しで恐縮ですが、現時点での自分の理解の整理のためのメモ。 前後しますが、こうして改めてまとめてみると、純粋な抽象データ型のオブジェクト指向プログラミングは、メッセージングのオブジェクト指向の影響も多分に受けている OOAD(分析・設計)のテコ入れ無しには、ちょっと弱っちく&古くさい感じが否めませんね(何をいまさら…ですが)。^^; とはいえ、OOAD は OOP とはまた別のものなので、同じ「抽象データ型の〜」あるいは「メッセージングの〜」だからといって対応する OOP とひとくくりにしてよいかというとそういうわけでもないので(整理・分類上は)難しいところです。 ▼ 抽象データ型のオブジェクト指向プログラミング 端的には、「ユーザー定義型(抽象データ型)」を、当初は「クラス」、今はそれに加えて「インタフェース」に準ずる言語機能によるサポートを前提として実践するプログラミ

    二つのオブジェクト指向とそれぞれのメリット - Smalltalkのtは小文字です
    yojik
    yojik 2008/10/29
  • 爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい - Smalltalkのtは小文字です

    Animorphic Smalltalk というのは、1990年代半ばに作られ、2006年にオープンソース化されて話題になった“Strongtalk”のこと。 Another interesting aspect of the V8 virtual machine is that it's open source. It is mainly written in C++, based on the Strongtalk Smalltalk code and released with a BSD/MIT license. The Hitchhiker's Guide to ...: Google Chrome, JavaScript and Smalltalk Strongtalk は、Objective-C ばりのオプショナルな静的型チェック機能と Ruby と同様にミックスインを用いた

    爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい - Smalltalkのtは小文字です
    yojik
    yojik 2008/09/04
    なるほどStrongTalkかー
  • 世界のナベアツに Squeak Smalltalk で挑戦する(改訂) - Smalltalkのtは小文字です

    流行っているみたいなので。 力試しにナベアツのような判定をするプログラムを作ろうとしたと… - 人力検索はてな ただし、ふつうに書いてもつまらないので、例によって Smalltalk ならではの“はるか斜め上”に向かってかっ飛ばしてみました。w (#改訂:最初のバージョンはアホになるはずがなぜか気持ちよくなっていたので差し替え。ついでに、複数の条件にも対応できるようにしました。) ▼コード 1から:40まで数えて:[(3の倍数 と:[3がつく数字])の時だけ:#アホに]なります ▼出力 1 2 さ〜ん 4 5 ろ〜く 7 8 き〜ゅう 10 11 じ〜ゅうに じ〜ゅうさん 14 じ〜ゅうご 16 17 じ〜ゅうはち 19 20 に〜じゅういち 22 に〜じゅうさん に〜じゅうよん 25 26 に〜じゅうなな 28 29 さ〜んじゅう さ〜んじゅういち さ〜んじゅうに さ〜んじゅうさん さ〜

    世界のナベアツに Squeak Smalltalk で挑戦する(改訂) - Smalltalkのtは小文字です
    yojik
    yojik 2008/04/18
    笑ったし、すごい。DSLの例にもなっている。
  • 本当に Mac は“the first computer with beautiful typography”なのか? - Smalltalkのtは小文字です

    追記: Alto と言えば Star …と短絡する向きは特に Mac 関係者に意外と多く、そうした方々がここを Star の話であるとの思いこみで読まれるといけないので最初にお断りしておくと、Star と、ここで紹介している Interim Dynabook(すなわち、ハードとしての Alto と、OS としての Smalltalk を組み合わせた製品)とは別物です。両者ともに同じ XEROX の成果物ですが、しかしそれぞれ、開発部門(SDD vs PARC)も、仕組み(Mesa vs Smalltalk)も、GUI の操作スタイル(対象選択はマウスだが命令には専用キーを使用 vs 命令もメニューで指示)も、目的(ビジネス vs パーソナル)も異なる、まったく別のコンピュータ環境なのです。Lisa や Mac は、広く信じられているような Star からの影響も皆無ではない(たとえばアイコ

    本当に Mac は“the first computer with beautiful typography”なのか? - Smalltalkのtは小文字です
    yojik
    yojik 2008/01/13
    まさにソフトウェア界のオーパーツ
  • サンタクロース問題を Squeak Smalltalk で - Smalltalkのtは小文字です

    今日の一行 - [お題] サンタクロース問題 Squeak Smalltalk のスレッドは、処理を記述したブロック [...] に fork を送信することで、手軽に作ってフォークさせられます。ただ、よほどのことがない限り、他へは制御を渡さないので(^_^;)、今回の求められているように、複数のスレッドを同時並行的に走らせたいときは適当なタイミングで Processor yield し、明示的に切り替える必要があります。なお、Samlltalk ではスレッドのことをプロセス(a Process)と呼称し、クラス名も同じです。きっと、暫定ダイナブックの OS であったころの名残りでしょう。 セマフォ(a Semaphore)は wait すると別のスレッドで signal されるまでアクティブスレッドを待ち合わせします。new ではなく、forMutualExclusion で作ったセマフ

    サンタクロース問題を Squeak Smalltalk で - Smalltalkのtは小文字です
  • ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました 2 - Smalltalkのtは小文字です

    id:sumim:20070306:p1 の続き。たらいを回しているだけでは、なんだか申し訳ないような気もしてきたので、Coke Python の壊れているところでも直してみようかな…と思ったのですがまだ理解とスキルが足りていないので、それはやめにして、Coke JavaScript の出力を SpiderMonkey (JavaScript-C) でも動かせるようにできないかチャレンジしてみました。具体的には document.write の代わりに、print を実装して出力にはそれを使えるようにする…ということです。Coke ならでは(?)の、アクロバティックなこともちょっとだけ試しています。 その前に、Coke の JavaScript ではなぜか使えない Date.getTime() をやっつけておきます。getSeconds() とかがどうなっているのか調べてみると、examp

    ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました 2 - Smalltalkのtは小文字です
    yojik
    yojik 2007/03/08
    凄そうなんだけど、まだ吸収できてない。。
  • sumim's smalltalking-tos - ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました

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

    sumim's smalltalking-tos - ちまた(っても Squeak 界隈限定)で流行りの Coke で遊んでみました
  • 1