言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

2003-09-01から1ヶ月間の記事一覧

Player をコピーできるようにする。大島さんに Andreas Raab と彼のシステム Tweak の事を聞く。凄い奴とはこういう人間の事だ。彼のシステムを聞いた後、自分の作っているものがひどくつまらない物に見えてしまった。 しかし自分のキャリアを考えるとこんな…

インスタンス変数を使うことの問題点を考える。

スクリプトを汎用的に使うときに問題になる。 星が丸を見るスクリプトを作成する 星の中に丸のインスタンス変数が出来る。 丸の代わりに三角でどうなるかやってみる。 すべてのスクリプトで丸が星に変わって欲しい。 インスタンス変数を表すタイルが必要 コ…

インスタンス変数自動登録登録機能

あるプレイヤーに対するインスタンス変数を自動的に作成 一応他のオブジェクトからの get/set も対応させる(いやだけど) タイルドロップ時に動作するようにする。

アメリカ登録

各機能を分離できるか ?

ゴールエディタ - 新規カテゴリとスクリプトエディタ 制約機能と分離すれば可能 制約機能 #changed インスタンス登録時に依存作成 インスタンス変数自動作成機能 - 幾何学機能 -

グローバル変数を使わないように改造できるか?

PhraseTile の構造 red forward: 5 PhraseTile TilePad #Player Tile #objRef op='' 実際の値は actualObject で取得 Tile 'forwardBy:' #operator op=#forward: セレクタ名が入っている。 TilePad #Number Tile #literal op='' 実際の値は、self literal で…

overview

reflection assert 文をタイルに埋め込むところまでは成功しました goal assert 失敗時のトラップと失敗位置表示 明日のプレゼン資料作成 implementation example -> goal に変更する予定。 [済]goal の名前を変更可能にする。 PlayerReferenceReadout にタ…

TODO

[済]コードしか表示されなくなる条件 [済]削除する 名前変更 enforceTileColorPolicy によって PhraseTile の色が変わる。

パッケージの分離

Morphic-Example examples カテゴリを作成。scripts と同じようにビューワから出し入れ出来るようにする。 ビューワからドロップしてエディタを開けるには、ビューワの userScript にスクリプト名が必要。 CategoryViewer>>phraseForCommandFrom: 参照 Categ…

overview

reflection クラスやテキストコードを利用するのは諦める。とりあえずインスタンスベースで、テスト対象も見えているオブジェクトに対して行う。 goal 例題エディタ(テストではなく、例題という言葉を使う)の出し入れ。 最後の文を bool で評価、間違ってい…

仕切り直し、再びテストへ

ジャンケンをテストする ドーナツ屋 13日の金曜日 テストしやすいものを考える。- 関数文字列または数字を扱うもの じゃんけんでさえ難しい 二つの値を比べるもの 大きさを比べる。 色を比べるテストしにくいものを考える。- 図形。時間。ごく当たり前に実装…

同値制約の実装法

たとえば二つの点よりなる線型と、ある二つの数が必ず同じであるという制約を利用して水平線型を実装する方法を考えました。ポイントは、初期化によってスロットにオブジェクトを束縛した後は、二度と代入を行わない事です。 線型は Point 型のスロット(イン…

双方向制約

まず最大の成果が、曲がりなりにも双方向制約のやり方が分かった事。一応以下の要領で動きます。他のプレイヤにはインスタンス変数経由でアクセスする事と、自分自身を update: しない事がミソです(モルフ -> プレイヤ間は changed: が呼ばれます)。これによ…

憂鬱

9月も終わりが近づくにつれて暗澹たる気分だが、いくつかの成果を纏めておく。

現在、あまり良くない局面にある。 特に制約を中心として色々な物を調査してきたが、その結果以下の状況にある。 本来の趣旨である「楽しいテスト」について何も出来ていない。 楽しいインタフェースが出来ていない。 一方で、ここ1週間の成果物としては、 e…

依存の流れ

morph -> player0 -> playe1 -> scriptInstantiation モルフが更新された場合、モルフを制御するプレイヤは反応しない。 対象プレイヤの参照を持つプレイヤのスクリプトが実行去れる。

変数参照の活用

変数がデフォルトで Player を指すように

双方向制約に魅せられて、理想と現実について。

a = b この制約(同値制約)について、最も素直な実現法を考える。 C ( a b ) C a: x = (v: x) C b: x = (v: x) C a = (v) C a = (v)二つの点から成る線Line ( p1 p2 ) p1 Point ( x y )p1 y と p2 y に C の関係がある時水平線である。 C *1 Mix-in っちゅう…

overview

reflection 依存による制約の作成 簡単にインスペクタ上でテストを書いてみたが、テストを満たすために何らかの制約が必要。 ScriptInstanciatio に #changed という状態を作成。 changed: update: 形式による制約を作成。コードが分散して分かりにくい。 制…

その他

Squeak 講習会方針決定。 目標 ライブラリを読めて自分で問題なく勉強してゆける事。 google 力、ブラウズ力 安心して開発する為に、 コードの保存 自分の作業記録をコード片として残す。 Squeak のコード交換システム チェンジセット プロジェクト PackageI…

ドーナツ屋の例によるテストの記述

簡単な文章題のテスト ドーナツ一つ 1 ドル。5 個ではいくら? ドーナツ一つ 1 ドル。5 個で一つおまけ。 10 ドルでいくつ? 20 個いくら? コーヒー一杯 2 ドル。3 杯で一杯おまけ。 グラフにしてみる。 ちょうど良いTextMorph のプロトタイプを作る TextMorph…

overview

reflection モルフの外部参照名をそのままインスタンス変数の用に使えるようにしようとしたが、正しく動作しなかった。 そもそも、Smalltalk のセマンティックとして、変数参照を勝手にメソッド呼び出しにしてしまって利用者が後々混乱しないだろうか? 名前…

いよいよ名前空間

reflection テスト実行環境の実装をまたまたはじめられなかった。 SqueakMap への登録は完了。squeak-dev へのアナウンスはまだ。 日本語版に簡単にインストールするパッケージを作るため、ChangeSet の勉強した。 goal(進んでない) ドーナツ屋の例によるテ…

reflection テスト実行環境の実装をはじめられなかった。 偽ハロによる WorldExplorer 内のモルフのリモート操作はアイデアは面白いと思うが、未完全。 goal ドーナツ屋の例によるテストの記述 Player 名前空間の実装開始とテストを行う Player と Workspace…

簡単な文章題のテスト ドーナツ一つ 1 ドル。5 個ではいくら? ドーナツ一つ 1 ドル。5 個で一つおまけ。 10 ドルでいくつ? 20 個いくら? コーヒー一杯 2 ドル。3 杯で一杯おまけ。 グラフにしてみる。 HyperCard では名前の参照をどうやっているのか調べる。…

[完]実際のモルフを見つける仕組み。 モルフからトランスフォーム : Morph>>isFlexed で調べて owner トランスフォームからモルフ : Morph>>renderedMorph display basic children を利用する? 名前空間の作成「相対パス」で他の Player を参照出来るように…

[完] WorldBrowser どこからでも自分のプロジェクトが開けるようにする。 [完] メッセージとメッセージインスタンスの関係。 トランスフォーメーションを隠す メソッド編集画面のコンテキストをオブジェクトにする。 エキスパートモードを ProjectWrapper に…

HyperCard を体験してみる。

参考になるもの メッセージ表示 どれもこれもがうまく行かないので、いい加減面倒になってきた。 HyperCard や ThingLab 等の一貫して美しい世界に対して、EToys のような混ぜこぜの世界に何かを追加しようとすると、泥沼式に謎が生まれてくる。この謎をうま…

そもそもどうやって制約を作るかと、どうやってテストを作るか?

テストの狙い 一般化のプロセス。 まず、個々の例についてテストを作成する。 例を満たす一般化された解を見つけ出す。 図形制約に求められるもの。 最小の制約要素で多くのものを表現する。 コンパスと定規に匹敵するもの。 例 比例 面積 メカニカル 数列 …

きれいな丸が見たい。

回転する仕組み。 Ned の CircleMorph のようにプロパティに回転角を入れるか? 最初は EllipseMorph のサブクラスとして実装 Polygon として実装? (Polygon のインスタンスとして実装してしまうのが手っ取り早いが。。。) 丸が回転するときの仕組み。 オーナ…