2004-01-01から1年間の記事一覧

そんな、札幌に来て Java の無名インナークラスについて教えてくれたバスケさんですが…

5年問題 に取り組む代わりに、こんな問題をくれました。 1 → 1 1 → 1 2 → 1 1 2 1 → 1 2 2 1 1 1 → 1 1 2 2 1 3 → 1 2 2 2 1 1 3 1 → 1 1 2 3 1 2 3 1 1 1 のとき、次はどんな数列になるしょう。 Squeak の Smalltalk で書くと、こんな感じ(ネタバレ注意)…

最近のコメント モジュール

…ってないんですね。はてなって、いたれりつくせりなのに、ふと気が付くと意外なものがなかったりするクラスライブラリのようなところがありますね。

もやは OOP ではないけど、Haskell で Loto6

shuffled 版なんて lazy な Haskell にぴったり!とか思ったら、そもそも Random.hs には shuffle なんてなかった…。orz気を取り直して、こんなのを見つけてきました(自分で組めよ…。orz)が、結果が IO [Int] なので、(私の弱っちい Hasckell 力では)細…

Python な…(ry

たまたま手元(OS 9)にむか〜し入れたまま放置されていた処理系があったので、見よう見まねで。 import random source = range(1,48) choice = [] for i in range(1,6): r = random.choice(source) source.remove(r) choice.append(r) print choice

ついでに Cygwin に入っていた Guile で Scheme な Loto6 も

(define(loto6a) (define (rec n series) (if (= n 48) series (begin (if ( (define (loto6b) (define (rec series) (let *1 series) ((memv r series) (rec series)) (else (rec (cons r series)))))) (rec '())) ;; 無駄に call/cc してみた (define call…

せっかく処理系をインストールしたので、Groovy な Loto6

rand=new Random() a=[];6.times{while(a.contains(n=rand.nextInt(48)+1));a.add n};println a

そんな おおしまさんのリクエストにお応えして…

n(LotoN の N)と m(選ぶべき数字の最大)を振ってベンチマークをとってみました。 n = 6, m = ... manually #addIfNotPresent: a Set shuffled 96 => 141.1 148.3 165.5 1769.1 48 => 147.0 150.5 172.3 892.2 24 => 154.9 159.2 177.6 454.8 12 => 178.1…

続・Loto6のような1から48までの数を6個作るスクリプト

気が付かなかったのですが、コメント欄にもいくつかスクリプトが提示されていました。 "まつもとさん版もどき" collection collection := OrderedCollection new. 6 timesRepeat: [ | n | [collection includes: (n := 48 atRandom)] whileTrue. collection …

Loto6のような1から48までの数を6個作るスクリプト

しばりがなければどう書くか、#includes: をどう代替えするか、#includes: を必要としない方針だとどうなるか、とかと考えると単純な問題ながら楽しめそうです。ざっと思いついたところで。 "すなおな手続き的バージョン" collection collection := OrderedC…

MorphicR (PDF)

Matz にっき 経由。Ruby で OpenGL ベースの Morphic システムを実現する話。っても具体的なコード(or コード片)が提示されているわけではなく、既往研究(Squeak Morphic、Ion = Io の Morphic ライクな GUI フレームワーク、AppKit = Cocoa の前身)に…

VisualWorks VM で動く Python、pycore

Matzにっき 経由。なんか複雑…(笑)。 同プロジェクトを進める L. Peter Deutsch 氏は、Interlisp-D、Cedar Mesa、そしてもちろん Smalltalk-80 という知る人ぞ知る PARC システムたちの主要設計者・実装者のひとりで、近年はオープンソース界でもご活躍のよ…

クロージャは Java で言うところのメソッドをひとつしか定義していない無名内部クラス

…というたとえを Groovy の解説などで見かけるのですが、どうもピンときません。クロージャではなくて、プロトタイプベースのオブジェクトは、とかいうなら分かるのですが…。 class inner { public static void main(String[] args]) { System.out.println*1…

Groovy のクロージャは自身を代入した変数を介した再帰呼び出しができない、らしい

…ので、代わりに this を使うのだとか。 factorial = {if (it == 0) {return 1} else {return it * this(it - 1)}} でも、無限倍精度に対応していないらしく、12! 以上は計算できません。orz

ブロックの“ | ”(バーティカルバー)って何よ?

LL Weekend がらみで、Groovy のチュートリアルなどつらつらと眺めているとき、ブロック(クロージャ)の項でふと目にとまったのは、ブロック変数の宣言とコード本体を区別するための“パイプ”の文字。Ruby では Smalltalk のテンポラリ変数よろしく、くくっ…

「オブジェクト指向でなぜつくるのか」 第7章のクイズ

最近話題の同書ですが、あまりに絶賛の嵐なので購入してみました。内容は端的には Java ユーザー向け「憂鬱なプログラマのためのオブジェクト指向開発講座」(の入門編)といった感じでしょうか。たいへん平易に氏の考えるオブジェクト指向が説明されていて…

CLU をデザインするときに、あなたは SIMULA を知っていましたか? プログラムは組みましたか?

OOP

抽象データ型と言えば、バーバラ・リスコフの CLU、ということで、mizu さんのコメントにからめて「History of Programming Languages - II」の「A History of CLU (PDF)」を含む CLU のセッションの章などをつらつらと 読んで 眺めて(^_^;) おりました。残…

LL Weekend 梅澤さんのデモの感想

…が、ぼちぼち Google キャッシュされてきているみたいですね。本家のトラバと重複しますが… とても上手なセッションで感服いたしました。 いろいろ「すげーーー」と思わされる物が多かったです。 プレゼンは梅澤さんのSqueakに度肝を抜かれた。 動きのある…

Smalltalk のクラス

Smalltalk のオブジェクト指向が、「抽象データ型のスーパーセット」としてのオブジェクト指向ではなかったことは、Smalltalk-72 で当初からクラスがメソッドホルダとしてしか位置づけられていなかったことからも明らかです。まあ、いっかんして変数に型がな…

クラス指向

OOP

気付けば再三、ビアルネ・ストラウストラップの「抽象データ型のスーパーセット」としてのオブジェクト指向を簡単にするために「クラス指向」などと言ってしまっていますが、この言い換えには語弊がありそうです。ストラウストラップ本人は、オブジェクト指…

Matz にっきの LL Weekend メモ

…によると、林さんの Squeak/Smalltalk を駆っての nQueen 対戦は、Gauche/Scheme、Ruby、Python というそうそうたるメンバー相手に負けなし? っていうか全戦全勝? でありますか。これで頭の固いペコポン人どもも、その認識を改め、「Smalltalk? 使ってい…

本日のトリビア

OOP

構造化プログラミングについて著作としてまとめられたのは、 1960年代も終わりになってから。 へぇ。すくなくとも ALGOL-58 より前の 1950 年代かと思っていたよ…。構造化定理の論文はいつなんだろう。

構造化定理と構造化プログラミング

OOP

すべてのアルゴリズムは、連続、選択、反復の3つの構造で記述可能である、という話と構造化プログラミングにおける“構造化”は同じだと思いこんでいたんですが、遅まきながらダイクストラの「Notes on Structured Programming (PDF)」を読んでみると、構造化…

ピンソン本

こと「Smalltalk:オブジェクト指向プログラミング」ですが、絶版だったんですね。某所で薦めようとして調べているうちに気づきました。手続き的プログラミングと構造化プログラミングを取り違えているオブジェクト指向の導入部を除けば、無駄が少…

本日のトリビア

OOP

"Object-oriented programming versus abstract data types."(PDF)の著者、 ウィリアム・クック(William Randall Cook)は、 AppleScript の作者 へぇ、へぇ、へぇ、へぇ、へぇ、へぇ。トリビアというよりは、意外なところつながり、かな。 それにしては、A…

Inventing the Lisa user interface

GUI

講演の中で suggested reading されていた論文。読まねば。…で、早速購入し、手にとってみて分かったことなんですが、ここに列挙されている絵のうち Lisa プロトタイプのものは、この論文のための挿絵からの転載だったんですね。 追記:よく見ると 1997 年と…

What were MOST computers like before the Lisa and Macintosh?

GUI

もう一ヶ月も前になりますが、ドイツへ向かう前に経由のため立ち寄った東京で、nobi 林さんから、例のビル・アトキンソンの講演内容を台詞とスライド資料を通じて比較的詳細に伺うことができました。それまで参加者によるいくつかのレポートで、Smalltalk シ…

ちなみに…

OOP

ケイの“メッセージ指向”とストラウストラップの“クラス指向”と呼ぶべきオブジェクト指向のほかに、もうひとつお気に入り(?)なのはクックの“手続きによる抽象化手法”としてのオブジェクト指向です。ストラウストラップが抽象データ型の延長線上にオブジェクト…

eToys はオブジェクト指向か

オブジェクト指向の定義というといつも思い出すのは、eToys に悪態をついて「こんなのオブジェクト指向じゃない」とか言ったところ、おおしまさんから思わぬつっこみが入って、びびってそのまま引っ込めてしまったこれのこと。 当時はメッセージ送信メタファ…

論外というのはうかつだったかもしれませんね

OOP

真意は、そのようになんの但し書きもなく教える人に対しての皮肉だったのですが、そう教える人がいる以上、それを信じる人もいるわけで、そうした向きには“論外”と言われると違和感を感じるかも(^_^;)。ただ、単にクラスとオブジェクト(インスタンス)を使…

わけあって SqueakNihongo6.1 で eToys な毎日

毛はない。ん。ああ、わけあって…か。 で、それも終わってほっとしたので、ちょっと気付いたことをざっくばらんにメモ。 ペイントボックスの基本図形ツールは、no color にすると刷毛の太さの黒い枠で描ける。 が、直線ツールはこの限りでない。 Polygon 系…