機械です。
最近、中学校で廃棄用のTOWNSが大量に出たので、同僚の先生と一緒に、生徒
の練習用に再調整しました。
結果・・・殆ど問題なく稼動することが判明。
・・・なんで捨てるんだろ?(汗)
ま、それはともあれ、後期の目玉タウンズや、横置きタウンズの初期型なの
で、Winは走りません。
※TOWNSは、実は後期型ならWin95までは走ります。実際、私のマシンではWin95
が走ってました。
そこで、TOWNS-OS内臓のMS-DOSv3.1でも動く16bit Pythonがどのくらい使え
るのか、調べてみることにしました。
Pythonのバージョンは1.0.1・・・ほとんど正式リリース直後ですな(これ以
降は、32bit版しか存在しません。なおこのファイルは、
http://www.python.org/ftp/python/pc/で、16python.exe.gzとして見つかります)
[16python.exeの立ち上げ場面]
Python 1.0.1 (Feb 11 1994) built by Guido van Rossum
Copyright 1991-1994 Stichting Mathematisch Centrum, Amsterdam
>>>
Guidoさんご本人がビルドした、署名が残ってるのがいいですねぇ(笑)
1ファイルなので、ビルドされている機能を調べて、あるものは利用し、無
いものは作ることにします。
なお、後期版のPythonなら、組み込みで__builtins__という組み込み辞書に
全て登録してあるので、
>>>dir(__builtins__)
とやれば、組み込み関数・定数は全て表示されるのですが、古いバージョン
では、まず、組み込み関数・定数の名前空間である__builtin__モジュール(最
後にsが無いので注意!)をインポートしてやり、
>>>dir(__builtin)
とやってやれば、表示されます。
<module '__builtin__'>:
AccessError
AttributeError
ConflictError
EOFError
IOError
ImportError
IndexError
KeyError
KeyboardInterrupt
MemoryError
NameError
None
OverflowError
RuntimeError
SyntaxError
SystemError
SystemExit
TypeError
ValueError
ZeroDivisionError
__name__
abs
apply
chr
cmp
coerce
compile
dir
divmod
eval
execfile
filter
float
getattr
hasattr
hash
hex
id
input
int
len
long
map
max
min
oct
open
ord
pow
range
raw_input
reduce
reload
repr
round
setattr
str
type
xrange
若干、組み込み関数や組み込み例外が少ないので注意しなければなりません
が、まぁ、そこそこ必要なものはあるようです。
次に組み込みsysモジュールをインポートし、内容表示します。
<module 'sys'>:
__name__
argv
builtin_module_names
copyright
exit
maxint
modules
path
ps1
ps2
setprofile
settrace
stderr
stdin
stdout
version
sys.builtin_module_namesは組み込みモジュールのリストですので、こいつ
の中身を確認して、順番に組み込みモジュールの内容を表示させていきます。
<module 'dos'>:
__name__
chdir
chmod
close
dup
dup2
environ
error
fdopen
fstat
getcwd
listdir
lseek
mkdir
open
read
rename
rmdir
stat
system
unlink
utime
write
<module 'marshal'>:
__name__
dump
dumps
load
loads
<module 'math'>:
__name__
acos
asin
atan
atan2
ceil
cos
cosh
e
exp
fabs
floor
fmod
frexp
ldexp
log
log10
modf
pi
pow
sin
sinh
sqrt
tan
tanh
<module 'regex'>:
__name__
casefold
compile
error
match
search
set_syntax
symcomp
<module 'strop'>:
__name__
atof
atoi
atol
index
joinfields
lower
lowercase
rindex
split
splitfields
strip
swapcase
upper
uppercase
whitespace
<module 'time'>:
__name__
altzone
asctime
clock
ctime
daylight
gmtime
localtime
mktime
sleep
time
timezone
tzname
残るは、組み込み型のメソッドですが、この時代にはリスト、辞書、そして
ファイルにしかメソッドは実装されていない筈なので、総当りで調査しました。
※dirコマンドは、組み込み型メソッドの内容表示はできなかった・・・
<builtin method type list>
append
sort
reverse
index
insert
count
remove
<builtin method type dictionary>
has_key
keys
values
items
<builtin method type file>
read
readline
readlines
write
writelines
close
tell
seek
isatty
flush
fileno
細かい動作の差異についてはもう少し調べてみないとわかりませんが、オー
ルドタイプのPythonについては、以下のようなことが知られています(確認済
み)
・関数のデフォルト値の設定が不可
× def f(x=0):return x
上記のように書くとエラーを発生
当然、キーワード引数による関数呼び出しも不可
× f(x=10)
さらにキーワード引数の指定も、勿論不可
× def f(**x)
ただし、リストによる位置引数指定は可能なので、引数の数を指定し
ない関数を作ることは可能。
○ def f(*x)
キーワード引数は、辞書あるいはクラスインスタンスを引数として渡
すことで似たような機能は得られますが、参照渡しとなるので、元の
オブジェクトが変更されることに注意。
・from文によるコピーを防止するPrivate名'_x'(アンダースコア+名前)は有
効。ただし、1.5以降に導入されたプライベートクラス変換は無効。
・キーワードassertは未実装、代わりに後に廃止されるキーワードaccessが予
約されているので注意。無論、1.6以降の拡張文法のキーワードasは未実装。
若干注意さえすれば、O'Reilly刊の「Python入門」あたりの記述が使えると
思われます。
古いDOSマシンを大切に使ってる方、一度お試しあれ・・・
機械伯爵