まつたろうの歩み

PythonやCの勉強中に「指し示す」いう表現がありました。それを知りたくて今はコンピュータシステムを勉強しています。

コンピュータシステムの理論と実装。第6章アセンブラー作成のため、研究中。

 アセンブラーの作成、なかなか進みません。この一月あまりの歩みです。英語の勉強が中心になりました。Pythonチュートリアルを学習し、次に標準ライブラリを調べました。

Python標準ライブラリ

 言語リファレンスも読みました。

Python言語リファレンス

正規表現の re も勉強しました。

正規表現 re

 webで調べていたら、答えを公表しているページもありましたが、見たら後悔するので無視。下のサイトの内容が、実現するのに一番近そうに感じました。使っている言語がHackではなくIMP言語ですが、トークンから構文を解析する筋道をきちんと示しているようです。このwebサイトで答えが出そうなので、研究することにしました。

A simple interpreter from scratch in Python (part 1) — jayconrod.com

Pythonで最初から簡単なインタープリタ

 始めは、グーグル翻訳で読みましたが所々文がつながりません。これからの勉強のことを考えると、この際もう一回英語の勉強をした方が早そうな気がしました。Edgeやグーグル翻訳で読んでもらいながら、訳本を作ることにしました。

 webサイトでページのソースを表示させ、ドリームウェーバーに貼り付けました。

翻訳作業中

 原文の下に、翻訳を入れます。最初はとりあえず、グーグル翻訳を貼り付けました。グーグル、様々です。その後、細部を読みながら修正をしていきます。一つの文が長いです。 which などの接続詞を使って、2行分くらいの長さが多いです。接続詞の使い方を理解していないので、どう訳したら良いか苦労しました。最後は原文をコメントアウトして、翻訳文だけ表示させます。パート4まで2週間くらいかかりましたが、読みやすくなりました。完成です。

翻訳完成

 完成したので、資料をもとに動作確認を行いました。説明のとおり、コードを入力しました。「 Python imp.py hello.imp 」入力しましたが、エラーしかでません。下の画像のエラー部分(赤字部分)が、説明の通り入力した結果です。Python3と書き直したりなど、いろいろ試してみました。翌日、ア!っと思い当たることがありました。この文書が書かれたのは10年ほど前です。ちょうどPyhon2から3に変わる頃です。そうだPython2でしか動作しないのではないか、と考えつきました。パソコンにPython2をインストールしました。ですが、簡単にはいきません。いろいろ調べてやってみて、pyシェルを使うと実行できました。「 py -2 imp.py hello.imp 」階乗の計算をして、ちゃんと答えが表示されました。

階乗の計算

 プログラムはクラスを駆使してあるので、クラスの勉強もやり直しました。いよいよ本丸のプログラムに突撃です。いろいろな機能があるようなので、やって見ながら取捨選択してアセンブラーができれば良いなと思っています。

 

今日の日記

 ウクライナ情勢、残念ながら変わりません。それどころか、経済制裁を逆手にとって中国等に輸出を増加させたりしているようです。戦争をやめて、早く経済制裁を解除させれば良いのにと思います。経済制裁をしている国も疲れてきています。早く戦争が終わりますように願います。

 日本では最近の急激な円安が気になります。円の価値が下がっていることは、間違いないようです。物価が上昇を続け、年金生活者は大変です。将来老人ホームに入るためのお金をためておかないといけません。そこで、株とかちょっと考え調べましたが、増やすどころか無くなってしまいそうです。もしプログラミングがもっとできるようになったら、少しは収入になるかも知れません。確証はないけど、やるだけやってみます。