素案

オブジェクトツリー(重複のない木)を採用してGCを排除 つまりオブジェクトツリー内のオブジェクト二つから参照されることを禁止する
親に遡っていくことは禁止しない 親への参照はカウントしない
オブジェクトツリーが上書きされると前あったものはdeleteされる

ローカルにnewしたものは全関数の終了とともにdeleteされる オブジェクトツリーに登録すると消えなくなる
全関数が終了した後もフローチャート的なものとして言語の中に取り入れる イベントが起き状態が遷移し何かが実行される、という様子をわかりやすく書けるようにする

関数の中で何度もnewしたりする場合は自分でdeleteする必要がある場合もあるだろう
だがイベント駆動ならメモリが足りなくなるということはそうそうないだろう

データ型使い回しを排除 データ型はコンポーネントの外部から参照出来なくする
(データ型のインターフェースは外部から見ても分かるのだけど、それを実装する方法はない)

名前と型が同じメンバが揃っているなら自動的に結びつけるラッパーを採用して継承を排除
全てのメンバを包含している型なら自動的にラッパを介して渡される
この機構により、他のコンポーネントにデータ型を渡すときは自動的にラップされる

コンポーネント間の相互参照を禁止する
コンポーネントとはデータ型とそのデータ型を使用する関数の集まり

関数を渡すのに抽象クラスは使わない 関数を一つ一つ渡す 沢山ある関数を一度に受け渡せるようにするシンタックスシュガーはある
関数はメソッドで自身のクラスは持っている 関数に自身のクラスのデータが必要でそのオブジェクトがdeleteされていたらメソッドは呼び出せなくなる GCのようによきにはからってはくれない


重複する木や相互参照するネットワーク構造が作りたい場合はローカルにいちいち作る

コンパイルして機械語にしたいが自分が何を言っているのか理解するためにとりあえずインタープリタとして動かしてみる