Pharo is developed by an international community of open-source developers, coordinated and maintained by the pharo consortium and receives essential support from Inria, RMOD, CNRS, UDL, Cristal and many others.
Route 477 - GNU Smalltalkのクラス階層をグラフ化した が面白かったので、参考にして Squeak Smalltalk (Squeak3.10J) と Ruby1.9 (Ruby1.9.1p0) のを作ってみました。 Squeak Smalltalk Ruby Squeak Smalltalk には Traits(ミックスインみたいで、もう少し柔軟な機構)があるのでこれを青で、抽象クラスは #subclassResponsibility を含むメソッドを持つクラス OR 自分が抽象クラスだとコメントで主張しているクラス OR 名前が Abstract で始まるクラス で判断し、赤で塗りつぶしています。Ruby は抽象クラスの判断ができなかったので、モジュールだけ青にしてみました。 Squeak Smalltalk の一部のクラスが孤立しているように見えますが、これはお
■ [smalltalk] GNU Smalltalkのクラス階層をグラフ化した 世間の流行りを無視してSmalltalkネタ。 今日はGNU Smalltalkの組み込みクラスの 継承関係をGraphvizでプロットしてみました。(拡大: 560KB) ソースは http://gist.github.com/233727 感想 Rubyと比べると、モジュールがないのでシンプル。 しかし多重継承もないのか。だからArrayやStringはComparable(もとい、Magnitude)じゃないんだ。 小クラス主義(と思って良いですか?)なので階層が深い。 例えば Array > ArrayedCollection > SequencableCollection > Collection > iterable > Object とかなってて凄い 仮想クラスは色を変えてみました が、判定方法
未来の言語は「APL」? Rubyのまつもと氏が講演 − @IT で登場した APL で書かれたライフゲームが何をやっているのかさっぱりだったのが悔しかったので、とりあえずちょっと勉強してだいたいの内容が分かるくらいには読めるようにしてから Squeak Smalltalk でほぼ同じことをするコードに書き直してみました。 life ← {↑1 ω∨.^3 4=+/,¯1 0 1∘.Θ¯1 0 1∘.Φ⊂ω}細かいことですが、くだんのスライドでは二番目の ¯ のあとの 1 が抜けていますね。^^; life := ... のところのブロック定義が上の APL のコード(life ← ...)に相当します。もちろん APL には短さはもちろん流れの美しさの面でもとうていかなわないわけですが、標準ライブラリ・組み込みメソッドのみで似たような処理をこの程度で書ける言語もそう多くはないと思います。
インスタンスが属するクラスをあとから変更する操作をいろいろな言語で - Smalltalkのtは小文字です Object subclass: #Cartesian instanceVariableNames: 'x y' Cartesian >> x ^x Cartesian >> y ^y Cartesian >> setX: newX y: newY x := newX. y := newY Cartesian class >> newFrom: aPolar ^self new setX: aPolar r * aPolar theta cos y: aPolar r * aPolar theta sin; yourself Cartesian class >> x: x y: y ^self new setX: x y: y; yourself Object subclass: #
折角 Mac を買ったことだし,Objective-C でも覚えようと思って Apple の開発者向けサイトから簡単なリファレンスをダウンロードして斜め読みしてみたのだけど,これ全然 C じゃなくね?…え? Objective-C は C + Smalltalk ? そういえば Ruby 界隈でも Smalltalk の話はよく出るよなぁ.とりあえず一般教養として覚えておいた方がいいのかしら… というわけで早速 GNU Smalltalk を MacPorts で突っ込んで遊んでみた HelloWorld Object subclass: #HelloWorld! !HelloWorld methodsFor: 'hello world'! say ^'Hello World'! say: string ^'Hello ', string, ' World'!! hello := Hell
http://idm.s9.xrea.com/ratio/2008/12/14/000803.html ぜんぜん関係ない話ですが、この記事で Yugui さんが、ごくふつうのことのように Smalltalk を使って確かめた結果を例として挙げてくださっているのが個人的にはとっても嬉しかったです。 とかく世間では敬遠されがちですが、じつのところ Smalltalk はとってもシンプルな代物なので(文法は「object message」のみで、処理系は「do it」と「print it」相当の操作を組み合わせるだけでたいていのことは可能)、他の多くの人にもこんなふうに気軽に動かして中身を探索し、面白いネタを掘り起こしてもらえればなと願っています。 さて。いくつか気になった点を以下に書き出してみました。 クラス、メタクラス、メタメタクラスと辿る上でSmalltalkのMetaclass clas
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く