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

ゆの in 各種言語を Squeak Smalltalk で意訳

とりあえず、Ruby 版、C# 版、Perl 版の三つを翻訳してみました。 ▼ゆの in Ruby Smalltalk には #attr_* はないので、ハンドコードしないといけません。あるいは IDE の仕事として、クラスブラウザから「create inst var accessors」することで、ゲッター「…

ゆの in 各種言語を Squeak Smalltalk で意訳 2

id:sumim:20080711:p1 の続きで Python 版、C++ 版、Io-language 版をさくっと。 ▼ゆの in Python Smalltalk ではクラス名と同名の変数は使えないのでクラス名を YunoPy に。Smalltalk ではメソッドの返値はデフォで self なのでいちいち書くのは冗長ですが…

ゆの in Squeak Smalltalk

ゆの in Smalltalk - みねこあ での召還をまんまとうけてw、各種言語向けのを参考に要件を手探りしつつ、みねこあさんよりご要望のあったスキャナ(字句解析器)に手を加えてしまう Smalltalk ならでは…の方向で。なにしろ元ネタ「ひだまりスケッチ」をまっ…

Squeak は、Squeak Etoys なのか Squeak Smalltalk なのか区別しましょう

squeakの安い本買ってみたら、smalltalkのコードが一行も載ってなかったorz Twitter / KONISHI Takayuki こうした不幸な事故を防ぐためにも、情報を発信する側の Squeak Etoys と Squeak Smalltalk の区別徹底は重要だなぁと思います。Wikipadia は長いから…

Perl の tie() と Scala の implicit def は似ている?

…と、ふと。 404 Blog Not Found:perl - tie()って何をtieするの? http://209.85.175.104/search?q=cache:q5e2DM7yAnYJ:www.coins.tsukuba.ac.jp/~i021216/docs/Scala-implicit-conversion.pdf Ruby や Smalltalk から見ると、基本型がオブジェクトでない an…

Squeak Smalltalk はむしろ「裏側が気になる → YES」な人たち向きのような

某書店で見かけた翔泳社作のブログラミング言語選択チャート ときどきの雑記帖 i戦士篇 - 午後から本屋めぐり。 と申しますのも、世の中広しといえど、ふだん何気なく触れているコンピュータシステム(ウインドウやメニュー、お絵描きツールやワープロ、メモ…

クロージャでサブクラスを作る

なんならクロージャでサブクラス作ってみなよってことです。 http://d.hatena.ne.jp/t_yano/20080622/1214087678 List<String> list = new ArrayList<String>() {{add("a"); add("b"); add("c");}}; list.getClass().getSuperclass() == ArrayList.class; //=> true つ | lis</string></string>…

Ruby の“特異メソッド”と“モジュール”を Squeak Smalltalk で

スーパーマリオブラザーズの「次の面」を求める 〜Rangeとsuccメソッドの甘い(?)関係〜 - http://rubikitch.com/に移転しました と似たようなことを Squeak Smalltalk の UniClass と Trait でマネしてみる実験。 Ruby の「特異メソッド」こと“インスタン…

Smalltalk では #inject:into:

RubyのinjectとPythonのreduce - 偏った言語信者の垂れ流し Enumerable#reduceはEnumerable#injectの別名 - http://rubikitch.com/に移転しました 畳み込み - fold(l|r), reduce - (hatena (diary ’Nobuhisa)) 似たようなことは Smalltalk では #inject:into…

Squawk VM という名の Java VM

単なるスペルミスかと思ったら、違いました。w Squawk VMはもともと、Smalltalkで記述されたVM環境Squeakプロジェクトに触発されて生まれたVMで、そのほとんど全てがJavaテクノロジーそのもので記述されています。そのため、Java VMベースの研究の基盤とし…

GemStone の独自拡張 VM(Facets Java VM および MagLev Ruby VM)と、JRuby および Rubinius の Ruby 処理系記述部分を組み合わせると同社製 OODB をフルに使える Ruby 処理系ができる

ってことだったのか!(おそらく) というのも、以前、Rubinius GemstoneのOODBがJRubyとRubiniusをサポート を読んだとき、JRuby と Rubinius があるのになんで Matz Ruby や YARV への言及がないんだろうと疑問に思って、くしくも Matz にっきにも関連して…

Lisa が Star を見て変更したのはファイラ(Finder)をアイコンベースにすることだけで、あとはほとんど Smalltalk から

GUI

で、FA。 Smalltalk(暫定Dynabook環境。通常、ALTO)、Star、Lisa における、互いのルック&フィールの似かよいの程度や、それぞれの開発時期の重なり具合など、状況証拠的に、おそらくそうじゃないかなーとは思っていましたが、やっと裏がとれました。 B…

MagLev について調べてみた

なんかredditとかでやたらとこの“Maglev”ってのが引っかかったんですが、ナニモノなんでしょうか? ときどきの雑記帖 i戦士篇 - Maglev? MagLev っていうのは、Magnetic levitation の略で、磁気浮上(〜式鉄道)を意味します。有り体に言えば、リニアモータ…

MVCダンス?

M と V と C とを擬人化して、唄を歌いながら登場するおバカビデオ。英語だけど見てるだけで面白い。だれか翻訳してください。 MVCビデオがバカすぎる - kなんとかの日記 羽生田さんの MVCダンスから派生したものでしょうかね。あるいは独自開発のもの? あ…

“与えられた木から…”の Gauche な皆さんの回答を Squeak Smalltalk に訳してみる 2

与えられた木から、子→親への対応を作る - MEMO:はてな支店 を見て、再帰のみで表現されているところが、私の蚊程度の LISP 脳にもとても美しく映ったので、もちろんマクロ(というかテンプレート)のない Smalltalk に写しようもないのですが、雰囲気…とい…

“英文字+数字な文字列の繰り返しからハッシュを作る”を Squeak Smalltalk で

ときどきの雑記帖 i戦士篇 - やり方は(ry 経由で http://blog.citrusbyte.com/2008/6/2/ruby-tmtowtdi-episode-1 を。 'a10 b20 c25 d40' subStrings inject: Dictionary new into: [:hash :each | | pair | pair := each stemAndNumericSuffix. hash at: pa…

“与えられた木から、子→親への対応を作る”を Squeak Smalltalk で

http://d.hatena.ne.jp/scinfaxi/20080601/1212329435 経由で。 Scheme:リスト処理 - 与えられた木から、子→親への対応を作る チョロいもんだとナメてかかったら、たっぷり 30 分も費やしちまったことは内緒だ。(^_^;) | tree translate | tree := #(Root (S…

“与えられた木から…”の Gauche な皆さんの回答を Squeak Smalltalk に訳してみる

Scheme から表現力の劣る Smalltalk に移そうとすれば、当然、いろいろと抜け落ちてしまい、結果として身も蓋もなくなっちゃっていかんのですが…。まあそこはそれとして(^_^;)。個人的には nfunato さんのがお気に入りです。それにつけても、copy fixTemps …

OS X で C# するためのメモ

■ Mono sudo port install mono ■ HelloWorld.cs class HelloWorld{ static void Main() { System.Console.WriteLine("Hello, world!"); } } $ mcs HelloWorld.cs $ mono HelloWorld.exe ■ Mono 用 Eclipse プラグイン Emonic ■ sudo port install nant が .…

「憂鬱な勇者」を Squeak Smalltalk で

http://d.hatena.ne.jp/scinfaxi/20080527/1211919944 に触発されて、http://d.hatena.ne.jp/hrkt0115311/20080527/1211891558 を Squeak Smalltalk で書いてみました。 | モンスターたち スキル群 最高レベル 経験値を得た旨 最終レベル到達の旨 割愛の旨 …

配列のインデックスの起点が1の言語

Smalltalk もそうです。 FORTRANやCOBOLやBASIC(可変)の配列は1起点ですね。他にはどんな言語があるのでしょう。 配列の先頭要素が「0番目」であることは気持ち悪いか…「N番目」という言葉を考察してみる - http://rubikitch.com/に移転しました | array |…

Gauche の VM も Gauche 自身で書かれている

…ようになるそうです。将来的には。(今のはまだ、と、コメントでご指摘いただきました汗) Tech talk: Gauche Scheme 他にも、“イアンのやつ”こと COLA に対してちょこっとコメントがあったりして、おもしろかったです。 「Ianのやつ」の検索結果 - 大島芳…

Squeak3.10 で、とりあえず「MS P 明朝」「MS P ゴシック」を使えるようにするためのメモ

個人的には、当面は手になじんだ 3.9 をひっぱるつもりですが、いつかは 3.10 でプレゼン…ということもあるかもしれないので、そのときになってはじめてビックリしたり打ちひしがれたりしないように、今、3.10 の日本語まわり、とくに日本語 TT の読み込みや…

call/cc パズルを Squeak Smalltalk で

Lisp Scheme Part21 >>885 経由で Scheme:call/ccパズル が確かに面白そうだったのでこれにチャレンジ。問題は、次の式がどんな動きをするか?というもの。 (let* ((yin ((lambda (foo) (newline) foo) (call/cc (lambda (bar) bar)))) (yang ((lambda (foo)…

Rubinius Ruby で、レシーバが代入されているローカル変数名を得る

“二変数を入れ替えるメソッド”を Squeak Smalltalk と Rubinius Ruby で について rubinius-irc で言及をいただいたみたいで、そのくだりでこんなやりとりを見つけました。 17:50:55 tmornini Howdy all. 17:51:07 tmornini Is there a way to get the symbo…

“二変数を入れ替えるメソッド”を Squeak Smalltalk と Rubinius Ruby で

各言語間の参照と値渡し - @author pyridoxin に対する Squeak Smalltalk と、Smalltalk 指向の Ruby 処理系である Rubinius を使った解答。例によって実行コンテキストをぐりぐりいじるパターンで。 ■ Squeak Smalltalk 版 Symbol >> swapWith: anotherTemp…

“日付と曜日から、その日付が西暦何年かを調べる”を Squeak Smalltalk で

Javaとカレンダー - @author pyridoxin 経由で 日付と曜日から、その日付が西暦何年かを調べたいです。 たとえ… - 人力検索はてな というのを見かけたので Squeak Smalltalk でさくっと書いてみました。'm/d' 形式の日付文字列と、その日の曜日のシンボルか…

今月のカレンダーを Squeak Smalltalk で

プログラム演習、カレンダーを作れますか? - @author pyridoxin に対する Squeak Smalltalk を使った解答例。結果はクリップボードに入るので、コードを評価(選択して do it (alt + d))後、適当な場所でペースト操作を行なってください。ペースト先が Squ…

Ruby1.8.7 の新機能を Squeak Smalltalk にマップしてみる

Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - http://rubikitch.com/に移転しました によれば、Ruby1.8.7 には、これまで Ruby1.9 でしか使えなかった機能がかなり豊富に盛り込まれたようです。そこで、列挙されているもののうち、Squeak Smallt…

Squeak Smalltalk で無名関数を再帰する

404 Blog Not Found:perl - で(Recall()|arguments.callee()|&?BLOCK()) と似たような方法で。 [:nn | nn < 2 ifTrue: [nn] ifFalse: [ nn * ((Compiler evaluate: thisContext decompileString) value: nn - 1)] ] value: 10 "=> 3628800 " 古いタイプの Sm…