Smalltalk

各要素が「0または1をとる乱数」から成る長さnのリスト

勝手にどう書く0.0 より。 (1 to: 10) collect: [:i | 2 atRandom - 1](1 to: 10) collect: [:i | #(0 1) atRandom](1 to: 10) collect: [:i | 'ACGT' atRandom] use や import がいらないのが Scheme や Python に対して、Smalltalk のよいところでもあり、…

「Collatz予想」(角谷予想,3x+1問題)のお題を AspectS で

前回、いろんな変な処理系で書き散らかしてしまったのを反省したばかりだったのですが…。つい、また。w f の定義を記述してから、同じような g を、しかし、今度はステップ数を出力するように再び記述しなおすのは何か違うよな…と感じたとき、ふと思い出し…

「Collatz予想」(角谷予想,3x+1問題)のお題を Squeak の Smalltalk で

キミならどう書く 2.0 - ROUND 2 - ― Lightweight Language Ring を受けて。前回、いろいろな(変なw)処理系でさんざん書き散らかしてしまったのを反省して、今回は、知らない人でも Smalltalk がどんな言語だかが分かるように、オーソドックスなのをひと…

ライブラリが使いやすくリッチだったら言語能力が貧弱でもなんとかなる

檜山正幸のキマイラ飼育記 - あなたの「極小なプログラミング言語」は? より。 プログラミング言語をうんと小さくするのは、ライブラリのほうにフォーカスしたいからなんです(僕の動機は)。ライブラリが使いやすくリッチだったら言語能力が貧弱でもなんと…

「再起動」すら死語になるかも知れないのだ

404 Blog Not Found:21世紀のコアメモリーより。 そんな時代のソフトウェアがどんな風になるのか。夢がひろがりんぐというものだ。 ちょ、それ、Smalltalk システム…(aka、ALTO で動いていた暫定的ダイナブック環境)。www って、立て続けにこんなのばっ…

Smalltalk は全然好きじゃないが、この人の言ってることはまったくもって正しい

「アラン・ケイが描くパソコンの未来像」を読んでの Kuwata Chikara さんの感想より。> だから今後必要になってくるのは分解できるソフトウェア (ということはフリーソフトウェアであることは前提条件だ) ってことになり、最大多数の人が分解可能であるため…

100までの整数から素数を列挙せよ…を bitblt で

bitblt というのは、bit-boundary block transfer(bit-field とも)の略で、その名の通り、画像表示処理などの際に行なうビットブロック転送操作、あるいはその実装を指します。BitBlt、あるいは、BitBLT とも(Smalltalk のクラス名としては BitBlt)。も…

クロージャでカリー化

おそらくは 404 Blog Not Found:Haskellは難しくない--こともある。 がらみで、クロージャとカリー化で検索訪問(?)をいただいたようなので…。 Smalltalk でも Ruby と(メソッド [] を使えないことを除いて)原則として同じく、“直感的”でない方法(^_^;)で行…

エラトステネスのふるいをコンパクトにする方法

関連エントリー: 100までの整数から素数を列挙せよ…を Squeak の Smalltalk でSmalltalk のオーソドックスな方法で。 100までの整数から素数を列挙せよ…を Smalltalk-76 でSmalltalk の祖先で。 100までの整数から素数を列挙せよ…を Smalltalk-72 でSmallta…

100までの整数から素数を列挙せよ…を Smalltalk-72 で

悪ノリして、今度は 1974 年からのエントリー。当時の ALTO のフォントとウインドウで。このころの暫定ダイナブック、すなわち“ Smalltalk を OS として動作する ALTO ”のウインドウは、オーバーラップ表示こそ可能でしたが、まだ、簡素な矩形を描いただけの…

100までの整数から素数を列挙せよ…を Smalltalk-76 で

1977 年から、時空を越えてのエントリー。w "Smalltalk-76" limit ← 100. primes ← #() asStream. primes next ← 2. for% i from: (3 to: limit by: 2) do% [ isprime ← true. for% prime from: primes contents do% [ i \ prime = 0 ? [isprime ← false]].…

100までの整数から素数を列挙せよ…を Squeak の Smalltalk で

「100までの整数から素数を列挙せよ」:キミならどう書く 2.0 - ROUND 1 - ― Lightweight Language Ring まずはお約束から。 Integer primesUpTo: 100=> #(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97) 愚直に。 (2 to: 100) s…

Ruby は Smalltalk-76 に似ている。by アラン・ケイ 番外編

id:sumim:20060615#p1 の続き。いろいろと調べているうちに Smalltalk-76 で見かけた、Ruby にも Smalltalk-80 にもない、ちょっとおもしろい機能、編。 ▼心持ちインテリジェントな配列要素アクセス #• は、通常はパラメータである整数の位置にある要素を取…

Ruby は Smalltalk-76 に似ている。by アラン・ケイ 2

id:sumim:20060613#p1 の続き。Smalltalk-76 の勉強を兼ねて、Smalltalk-76 が Ruby に似ているっぽいところを列挙しています。 ▼制御構造の書き方 Smalltalk-80 以降では、条件分岐や繰り返しなどの制御構造もすべて、しかるべきレシーバに対するメッセージ…

LISP 誕生から Smalltalk 誕生までは何年?

某所で見かけたのですが、ちょっと計算…というか、起点のとりかたが一貫していないように思えたので詷べてみました。 History of LISP [McCarthy78] の冒頭に、こんなふうな記述があります。 1. Introduction.This paper concentrates on the development of…

Ruby は Smalltalk-76 に似ている。by アラン・ケイ

Matzにっき - Alan Kayといっしょ によれば、前のエントリーで取り上げさせていただいた“死んだ言語”以外にも、タイトルのような示唆に富む言及があったとのことだったので、さっそく調べてみました。正直、これまで Smalltak-76 はあまり興味がなかったので…

Smalltalk は死んだ言語だ。by アラン・ケイ

Matzにっき - Alan Kayといっしょ や 日本 Ruby カンファレンス 2006(RubyKaigi)の まつもとさんの基調講演での言及から、一部の隠れ Smalltalk ファンの方々には衝撃をもって受け止められたり、あるいはおもしろおかしく取り上げる向きもある、くだんのセ…

Ruby で Smalltalk の #with:collect:

rubyco(るびこ)の日記 - zipWithの自作 と もち - 今日の自作関数 にて、Ruby で Haskell の zipWith を自作しよう…という話。 Haskell の zipWith と似たような動きをするメソッドを Smalltalk で探すと、#with:collect: が見つかります。Squeak システム…

re: re: 代入とメッセージング

id:sumim:20060602:p1 で、(少なくとも“ケイのオブジェクト指向”に立脚して Smalltalk を利用する際には)「すべてはオブジェクト」というよりは「すべてはメッセージング」であることを意識すべし…という話をうけての、結城さんの、 sumimさんの「すべてが…

Ruby のブロックってオブジェクトじゃないよね。これって“驚き最小の法則”に反しない?

プログラマ向けオンラインマガジンの bitwise magazine にて、どうしてかくも多くの人が Ruby に魅了されるのか…を編集者があれこれ語った記事が掲載されているのですが、ちょっと笑ってしまった一節。 Huw: Matz has said that, with Ruby, he has 'tried t…

#overlappingPairsCollect: を使ってパスカルの三角形

巷ではなにやら、風変わりな方法でパスカルの三角形を得るのが流行っているようなので、便乗して id:sumim:20060517#p1 で見つけた #overlappingPairsCollect: を使ってみました。 | results | results := OrderedCollection with: #(1). 10 timesRepeat: [ …

シェパード音階を Squeak の Smalltalk で

rubyco(るびこ)の日記 - Rubyで作る無限音階 経由で、PB memo - [Ruby][音楽]Shepard Tone に、触発されて。マルチメディアなら Squeak!ということでもないのですが(むしろ、マルチメディアはおろか、サウンド関係すらほとんど遊んだことがない…汗)、ま…

二次元配列の要素を縦方向に足す

技術メモ帳 - 二次元配列を列方向に処理 で、まず読み込みは素直にしておいて、得られた配列が、 ary = [[1,2,3],[4,5,6],[7,8,9]]だったとして、さあ、そこからどうするか…というのを考えてみました。Ruby には transpose というのがあるので、これを使うの…

…ect:(Smalltalk ではコロンも忘れないでねw)メソッドたち

なにやら、ここ一両日、コレクションブロックメソッドがらみでアクセスをいただくようになったのは、“るびま”こと、Rubyist Magazine 最新号の Rubyist Hotlinks 【第 14 回】 角谷信太郎さん のコーナーで、なかば恒例となっている map 派、collect 派の話…

メソッドが定義されているクラスを探す

404 Blog Not Found:perl - UNIVERSAL::which 経由で、どのクラスで定義されたメソッドなのか - にぽたん研究所 を読んでいて、Smalltalk でも、あるメソッドを起動できることは分かっているのだけれど、それがどのクラスに定義されているのか分からない…と…

起動すべきメソッドが見つからないメッセージに対処する

id:rubyco さん経由で。小飼さんの 404 Blog Not Found:Perl Monger の質問 - AUTOLOADって他でどうやるの? を受けて。shiro さんがコメント欄で示唆されているように、Smalltalk や、その影響を強く受けている Ruby などではおなじみの手法ですね。 定義(…

メソッド定義にリテラルを含む際の注意

結城浩のSICP日記 - クイズ とそれへの shiro さんのコメントを読んでいて、Squeak や VisualWorks の Smalltalk でも似たようなことがあるな…と思いました。 後述の VisualWorks の場合とは異なり、Squeak の Smalltalk では、リテラルの書き換えも自由に行…

Squeak の Smalltalk での Complex チェック

404 Blog Not Found:%w(Complex Number).reverse を受けて、お呼びでないとは理解しつつも、しかし、どんな振る舞いをするか確認のために。 Float pi " => 3.141592653589793 "Float e " => 2.718281828459045 "Float e raisedTo: (Float pi i) " => エラー …

ガイ・スティールJrが Sun で開発中の新言語は Traits ベース

Derive Your Dreams 経由で。 http://research.sun.com/projects/plrg/fortress0866.pdf Traits are named program constructs that declare sets of methods. They were introduced in the Self programming language, and their semantic properties (and …

インスタンス特異的メソッドを使ったフィボナッチ数列

id:rubyco:20060419:fib のコメント欄にある mobius さんによる、Ruby の特異メソッドを用いたコードが面白かったので、例によって意訳。 | fibonacci | fibonacci := #(1 1). fibonacci assureUniClass. " インスタンス特異的クラスの作成 " fibonacci clas…