GW中はひたすらPython(CPython)のキャッチアップをしていました。
有名企業で利用されているだけのことはあり、高い生産性と自由度を兼ね備えた軽量言語であることを実感できました。
実行速度が充分高速ならば業務でも利用してみたいと思わせる言語です。
私が特徴として感じたこと
今後確認したい懸念点
- 実行速度とメモリ消費量
- 保証
- 複数の実装があるが、動作が等しいことはどの程度保証されるのか?
- マルチプラットフォームだが、動作が等しいことはどの程度保証されるのか?
- こうした保証は誰が(どこが)しているのか?
- マルチコアを活用する方法は?スレッドを明示的に利用する必要があるのか?
参考
サンプルスクリプト
メタクラスの活用方法が未だ理解できていない実感があります。
Smalltalkに手を出すべきなのかもしれません。
# sample script to learn Python 3.0.1 # 2009.05.06 eller # ** Sorry, this script won't run on Python 2.x. ** class Human(type): """ Human is a metaclass. """ def __init__(cls, name, bases, dict): """ This method initializes an instance. """ print('The %s class is created.' % name) class Student(object, metaclass=Human): """ Student studies curriculum. """ def __init__(self, name): """ This method initializes an instance. """ self.__name = name def study(self, curriculum): """ The definition of instance method. """ print('%s is studing %s.' % (self.name, curriculum)) def __str__(self): """ This method works like toString() method of Java. """ return 'student named %s' % self.name @property def name(self): """ The definition of property. **READ ONLY** """ return self.__name class SleepyStudent(Student): def study(self, curriculum): """ This definition overrides the super class's definition. """ print('%s is sleeping.' % self.name) class Teacher(object, metaclass=Human): def __init__(self, name): self.__name = name def __str__(self): return 'teacher named %s' % self.name def teach(self, curriculum, *students): print('%s is teaching %s to %s.' % \ (self.name, curriculum, ', '.join(student.name for student in students))) for student in students: student.study(curriculum) @property def name(self): return self.__name if __name__ == "__main__": peter = Student('Peter') edmund = Student('Edmund') lucie = SleepyStudent('Lucie') # She'll sleep during a lesson. susan = Teacher('Susan') print() susan.teach('English', peter, edmund, lucie)
実行結果
The Student class is created.
The SleepyStudent class is created.
The Teacher class is created.
Susan is teaching English to Peter, Edmund, Lucie.
Peter is studing English.
Edmund is studing English.
Lucie is sleeping.