現在、動的型付け言語を開発しています。
開発中に私が直面している主な問題の 1 つは、実行時のシンボル検索を高速に行う方法です。
一般的な無料のグローバル シンボルとローカル シンボルについては、単純にインデックスを付けて、各スコープ (グローバルまたはローカル) にシンボルの配列を保持させ、インデックスを使用してすばやく検索します。私はこのアプローチにとても満足しています。
ただし、オブジェクトの属性の場合、問題ははるかに困難です。現在アクセスしているオブジェクトがわからないため、同じインデックス スキームを使用することはできません。したがって、どのインデックスを使用すればよいかわかりません。
私の言語で働きたいことを反映したPythonの例を次に示します。
class A:
def __init__(self):
self.a = 10
self.c = 30
class B:
def __init__(self):
self.c = 20
def test():
if random():
foo = A()
else:
foo = B()
# There could even be an eval here that sets foo
# to something different or removes attribute c from foo.
print foo.c
検索をすばやく行うための巧妙なトリックを知っている人はいますか? 私はハッシュ マップとスプレイ ツリーについて知っているので、他のルックアップと同じくらい効率的に行う方法があれば興味深いです。