2004-01-01から1年間の記事一覧
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 で書くと、こんな感じ(ネタバレ注意)…
…ってないんですね。はてなって、いたれりつくせりなのに、ふと気が付くと意外なものがなかったりするクラスライブラリのようなところがありますね。
shuffled 版なんて lazy な Haskell にぴったり!とか思ったら、そもそも Random.hs には shuffle なんてなかった…。orz気を取り直して、こんなのを見つけてきました(自分で組めよ…。orz)が、結果が IO [Int] なので、(私の弱っちい Hasckell 力では)細…
たまたま手元(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
(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…
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…
気が付かなかったのですが、コメント欄にもいくつかスクリプトが提示されていました。 "まつもとさん版もどき" collection collection := OrderedCollection new. 6 timesRepeat: [ | n | [collection includes: (n := 48 atRandom)] whileTrue. collection …
しばりがなければどう書くか、#includes: をどう代替えするか、#includes: を必要としない方針だとどうなるか、とかと考えると単純な問題ながら楽しめそうです。ざっと思いついたところで。 "すなおな手続き的バージョン" collection collection := OrderedC…
Matz にっき 経由。Ruby で OpenGL ベースの Morphic システムを実現する話。っても具体的なコード(or コード片)が提示されているわけではなく、既往研究(Squeak Morphic、Ion = Io の Morphic ライクな GUI フレームワーク、AppKit = Cocoa の前身)に…
Matzにっき 経由。なんか複雑…(笑)。 同プロジェクトを進める L. Peter Deutsch 氏は、Interlisp-D、Cedar Mesa、そしてもちろん Smalltalk-80 という知る人ぞ知る PARC システムたちの主要設計者・実装者のひとりで、近年はオープンソース界でもご活躍のよ…
…というたとえを Groovy の解説などで見かけるのですが、どうもピンときません。クロージャではなくて、プロトタイプベースのオブジェクトは、とかいうなら分かるのですが…。 class inner { public static void main(String[] args]) { System.out.println*1…
…ので、代わりに this を使うのだとか。 factorial = {if (it == 0) {return 1} else {return it * this(it - 1)}} でも、無限倍精度に対応していないらしく、12! 以上は計算できません。orz
LL Weekend がらみで、Groovy のチュートリアルなどつらつらと眺めているとき、ブロック(クロージャ)の項でふと目にとまったのは、ブロック変数の宣言とコード本体を区別するための“パイプ”の文字。Ruby では Smalltalk のテンポラリ変数よろしく、くくっ…
最近話題の同書ですが、あまりに絶賛の嵐なので購入してみました。内容は端的には Java ユーザー向け「憂鬱なプログラマのためのオブジェクト指向開発講座」(の入門編)といった感じでしょうか。たいへん平易に氏の考えるオブジェクト指向が説明されていて…
抽象データ型と言えば、バーバラ・リスコフの CLU、ということで、mizu さんのコメントにからめて「History of Programming Languages - II」の「A History of CLU (PDF)」を含む CLU のセッションの章などをつらつらと 読んで 眺めて(^_^;) おりました。残…
…が、ぼちぼち Google キャッシュされてきているみたいですね。本家のトラバと重複しますが… とても上手なセッションで感服いたしました。 いろいろ「すげーーー」と思わされる物が多かったです。 プレゼンは梅澤さんのSqueakに度肝を抜かれた。 動きのある…
Smalltalk のオブジェクト指向が、「抽象データ型のスーパーセット」としてのオブジェクト指向ではなかったことは、Smalltalk-72 で当初からクラスがメソッドホルダとしてしか位置づけられていなかったことからも明らかです。まあ、いっかんして変数に型がな…
気付けば再三、ビアルネ・ストラウストラップの「抽象データ型のスーパーセット」としてのオブジェクト指向を簡単にするために「クラス指向」などと言ってしまっていますが、この言い換えには語弊がありそうです。ストラウストラップ本人は、オブジェクト指…
…によると、林さんの Squeak/Smalltalk を駆っての nQueen 対戦は、Gauche/Scheme、Ruby、Python というそうそうたるメンバー相手に負けなし? っていうか全戦全勝? でありますか。これで頭の固いペコポン人どもも、その認識を改め、「Smalltalk? 使ってい…
構造化プログラミングについて著作としてまとめられたのは、 1960年代も終わりになってから。 へぇ。すくなくとも ALGOL-58 より前の 1950 年代かと思っていたよ…。構造化定理の論文はいつなんだろう。
すべてのアルゴリズムは、連続、選択、反復の3つの構造で記述可能である、という話と構造化プログラミングにおける“構造化”は同じだと思いこんでいたんですが、遅まきながらダイクストラの「Notes on Structured Programming (PDF)」を読んでみると、構造化…
こと「Smalltalk:オブジェクト指向プログラミング」ですが、絶版だったんですね。某所で薦めようとして調べているうちに気づきました。手続き的プログラミングと構造化プログラミングを取り違えているオブジェクト指向の導入部を除けば、無駄が少…
"Object-oriented programming versus abstract data types."(PDF)の著者、 ウィリアム・クック(William Randall Cook)は、 AppleScript の作者 へぇ、へぇ、へぇ、へぇ、へぇ、へぇ。トリビアというよりは、意外なところつながり、かな。 それにしては、A…
講演の中で suggested reading されていた論文。読まねば。…で、早速購入し、手にとってみて分かったことなんですが、ここに列挙されている絵のうち Lisa プロトタイプのものは、この論文のための挿絵からの転載だったんですね。 追記:よく見ると 1997 年と…
もう一ヶ月も前になりますが、ドイツへ向かう前に経由のため立ち寄った東京で、nobi 林さんから、例のビル・アトキンソンの講演内容を台詞とスライド資料を通じて比較的詳細に伺うことができました。それまで参加者によるいくつかのレポートで、Smalltalk シ…
ケイの“メッセージ指向”とストラウストラップの“クラス指向”と呼ぶべきオブジェクト指向のほかに、もうひとつお気に入り(?)なのはクックの“手続きによる抽象化手法”としてのオブジェクト指向です。ストラウストラップが抽象データ型の延長線上にオブジェクト…
オブジェクト指向の定義というといつも思い出すのは、eToys に悪態をついて「こんなのオブジェクト指向じゃない」とか言ったところ、おおしまさんから思わぬつっこみが入って、びびってそのまま引っ込めてしまったこれのこと。 当時はメッセージ送信メタファ…
真意は、そのようになんの但し書きもなく教える人に対しての皮肉だったのですが、そう教える人がいる以上、それを信じる人もいるわけで、そうした向きには“論外”と言われると違和感を感じるかも(^_^;)。ただ、単にクラスとオブジェクト(インスタンス)を使…
毛はない。ん。ああ、わけあって…か。 で、それも終わってほっとしたので、ちょっと気付いたことをざっくばらんにメモ。 ペイントボックスの基本図形ツールは、no color にすると刷毛の太さの黒い枠で描ける。 が、直線ツールはこの限りでない。 Polygon 系…