プログラム言語のサイト、ロゼッタコードをひさしぶりに眺めていると、
に行き当り、コードをながめるとForthの雰囲気があってなかなか楽しめそう、というか、ちょっと変だけど???な気分になるのが面白い。GitHubからもらってきて、Debian等Linuxで動かしはじめてみている途中。$ python quackery.py
一日目
/O> $ "Peking Man"...Stack: [ 80 101 107 105 110 103 32 77 97 110 ]
日本語は文字列としてつかえないことがわかった。
北京原人がおよそ50年前くらい前に地球上にいた人類の祖先の一種だというお話しをメモするつもりで、Quackeryを使ってみる。えっ、それって変なことないといわれても、まあ、テストですから。
$ 記号のあとに空白をいれて、二重引用符で北京原人と英語で打ってみた。
スタックには、ブラケットで囲まれた整数の列がはいった。どうやらアスキーコードの列で文字列はスタックに格納されるようだということがわかった。
ちなみに練習の参考にしているのは、おもに Quackery Quick Reference で、あとは想像するだけ。なのでエラーは一杯だしながらやってるが、ここにはそのエラーはだしてない。だすとやたらに長くなるのと何やってんだ??ということになるため。
/O> $ 'Peking Man'
...
Stack: [ 80 101 107 105 110 103 32 77 97 110 ]
二重引用符のかわりに一重引用符でも同じものがスタックにはいった。
/O> $ *Peking Man*
...
Stack: [ 80 101 107 105 110 103 32 77 97 110 ]
/O> echo$
さて、このメモをファイルに書き出すにはどうしたらいいかとクイックリファレンスを探すと、putfileというのがある。
/O> $ "pman.txt" putfile
...
Stack: 1
スタックが1となった意味はおいといて、というかたぶんうまく書けたしるしの 1 だろうから、フォルダを見ると pman.txt があり、
$ nl pman.txt
1 Peking Man
二日目
ファイルの操作
takefile ファイルから文字列を取り出し、ファイルは削除される
$ "pman.txt" takefile
sharefile ファイルから文字列をコピー
$ "pman.txt" sharefile
releasefile ファイル名からファイルの削除を試みる
replacefile
loadfile
使い方
(1) $ "A" putfile
(2) $ "A" sharefile
(3) $ "A" takefile
ここで "A"は、ファイル名。
スタックされている文字列をファイルとやりとりする。
Stack --- put ---> Create a named File as string "A"
Stack <--- share--- Copy a string "b" from a file named "A"
Stack <---take--- Take a string "b" from a file "A" and "A" is deleted
練習1.
/O>Stack empty./O> $ "Peking Man"...Stack: [ 80 101 107 105 110 103 32 77 97 110 ]/O> $ "pman.txt" putfile...Stack: 1/O> $ "Homo erectus pekinensis"...Stack: 1 [ 72 111 109 111 32 101 114 101 99 116 117 115 32 112 101 107 105 110 101 110 115 105 115 ]/O> $ "pman.txt" putfile...Stack: 1 0/O>
/O> $ "pekingMan.txt" takefile...Stack: [ 80 101 107 105 110 103 32 77 97 110 13 72 111 109 111 32 101 114 101 99 116 117 115 32 112 101 107 105 110 101 110 115 105 115 13 90 104 111 117 107 111 117 100 105 97 110 32 67 97 118 101 13 84 104 101 32 102 105 114 115 116 32 102 111 115 115 105 108 44 32 97 32 116 111 111 116 104 32 119 97 115 32 100 105 115 99 111 118 101 114 101 100 32 105 110 32 49 57 50 49 46 13 68 105 114 101 99 116 32 104 117 109 97 110 32 97 110 99 101 115 116 111 114 13 72 117 109 97 110 115 32 101 118 111 108 118 101 100 32 105 110 32 65 115 105 97 46 13 ] 1/O> drop...Stack: [ 80 101 107 105 110 103 32 77 97 110 13 72 111 109 111 32 101 114 101 99 116 117 115 32 112 101 107 105 110 101 110 115 105 115 13 90 104 111 117 107 111 117 100 105 97 110 32 67 97 118 101 13 84 104 101 32 102 105 114 115 116 32 102 111 115 115 105 108 44 32 97 32 116 111 111 116 104 32 119 97 115 32 100 105 115 99 111 118 101 114 101 100 32 105 110 32 49 57 50 49 46 13 68 105 114 101 99 116 32 104 117 109 97 110 32 97 110 99 101 115 116 111 114 13 72 117 109 97 110 115 32 101 118 111 108 118 101 100 32 105 110 32 65 115 105 97 46 13 ]/O> echo$...Peking ManHomo erectus pekinensisZhoukoudian CaveThe first fossil, a tooth was discovered in 1921.Direct human ancestorHumans evolved in Asia.Stack empty./O>
/O> $ "pekingMan.txt" sharefile...Stack: [ 80 101 107 105 110 103 32 77 97 110 13 72 111 109 111 32 101 114 101 99 116 117 115 32 112 101 107 105 110 101 110 115 105 115 13 90 104 111 117 107 111 117 100 105 97 110 32 67 97 118 101 13 84 104 101 32 102 105 114 115 116 32 102 111 115 115 105 108 44 32 97 32 116 111 111 116 104 32 119 97 115 32 100 105 115 99 111 118 101 114 101 100 32 105 110 32 49 57 50 49 46 13 68 105 114 101 99 116 32 104 117 109 97 110 32 97 110 99 101 115 116 111 114 13 72 117 109 97 110 115 32 101 118 111 108 118 101 100 32 105 110 32 65 115 105 97 46 13 ] 1/O> echo...1Stack: [ 80 101 107 105 110 103 32 77 97 110 13 72 111 109 111 32 101 114 101 99 116 117 115 32 112 101 107 105 110 101 110 115 105 115 13 90 104 111 117 107 111 117 100 105 97 110 32 67 97 118 101 13 84 104 101 32 102 105 114 115 116 32 102 111 115 115 105 108 44 32 97 32 116 111 111 116 104 32 119 97 115 32 100 105 115 99 111 118 101 114 101 100 32 105 110 32 49 57 50 49 46 13 68 105 114 101 99 116 32 104 117 109 97 110 32 97 110 99 101 115 116 111 114 13 72 117 109 97 110 115 32 101 118 111 108 118 101 100 32 105 110 32 65 115 105 97 46 13 ]/O> echo$...Peking ManHomo erectus pekinensisZhoukoudian CaveThe first fossil, a tooth was discovered in 1921.Direct human ancestorHumans evolved in Asia.Stack empty./O>
/O> input...Problem: Stack unexpectedly empty.
3日目
Keyboard| $ ":" inputTerminal application
...
:Inherit the stars
|Stack --- File
[ 73 110 104 101 114 105 116 32 116 104 101 32 115 116 97 114 115 ]
/O> $ "foo.txt" putfile
foo.txt
/O> $ "foo.txt" takefile
[ 73 110 104 101 114 105 116 32 116 104 101 32 115 116 97 114 115 ] 1
1. " 文字列" をスタックに積む。
2. プロンプトをだし、キー入力を待つ。キーをタイプし、エンターキーを押せば入力されたキーがスタックに積まれる。エンターキーだけ押すとスタックに エンプティ、[ ]が入ることになる。
3. ファイル名を指定し、スタックの内容をファイルに書きだす。
4. スタックにファイルの内容をコピーする。
5. ファイルの内容をスタックにコピーする。
練習 1 の答え
4日目
0 件のコメント:
コメントを投稿