lang

「ガベージコレクションのアルゴリズムと実装」を読んだ 〜実装編〜

「ガベージコレクションのアルゴリズムと実装」を読了。前半の「アルゴリズム編」で GC の基本アルゴリズムを網羅的に解説し、後半の「実装編」では実際の処理系のソースを追いながら GC の実装を見てみるという構成で、非常に面白かった。ガベージコレクシ…

日本語プログラミング言語探訪 〜プロデル〜

プロデル 日本語プログラミング言語「プロデル」 概要 プロデルとは プロデルは、日本語で簡単・気軽にソフトウェアを 「造る」ことができるプログラミング言語と開発環境です。 フランス語で「造る」「生産する」といった意味がある動詞"Produire"を 呼びや…

日本語プログラミング言語探訪 〜TTSneo〜

TTSneo TTSneo公式サイト 概要 TTSneo公式サイト 日本語プログラミング言語「TTSneo」は、日本語で気軽にプログラムを作ることができるスクリプト言語です。 * テキストエディタやメーラー、イメージビューアなどソフト作りに最適 * プログラミング未経験の…

日本語プログラミング言語探訪 〜Mind〜

Mind 日本語プログラミング言語 Mind スクリプツ・ラボ有限会社 - Mind download - Mind Version 7 for UNIX GPL準拠のフリーソフトウェアとしてソースが公開されている。 概要 日本語プログラミング言語 Mind Mind はソースコードを日本語で記述するという…

日本語プログラミング言語探訪 〜言霊(ことだま)〜

注意 このノートは適当にググって見つかった資料を元に作成しているため、最新の研究成果、言語仕様を反映していない可能性があります。あしからず。 言霊(ことだま) 言霊コミュニティサイト - 日本語で楽しくプログラミング 言霊コミュニティサイト - Tin…

SICPノート (1) -- closures

数日前より長らく積ん読にしてあった SICP を読み出しました。こちらとしては手っ取り早くエッセンスだけ得られればいいので、むつかしい問題は飛ばしまくりなわけですが、第3章の頭ぐらいまで読み進めて、クロージャというものについて色々わかってきたので…

256倍のスピード(嘘)で Racc を学ぶ (2)

前回第4章まで読了。ふう。とりあえず、ここまでの Intp のコード↓ intp04.tar.gz ここにサンプルコードが置いてあるのは見つけたのですが、コードを眺めてるだけだとなんだか頭がもやっとしてくるので、あえて手打ちでやってます。時間はかかりますが、多分…

JoyToy を Ruby で書き直す (5)

前回「いまどきのプログラム言語の作り方」読了。サンプル言語 JoyToy の Ruby版 RoyToy も一応の完成。第9章でオブジェクトを作成できるようになり、第10章でオブジェクトの複製と継承(加算)が可能になりました。 roytoy09.tar.gz roytoy10.tar.gz オブジ…

parameter と argument

これまで特に意識しないで使ってきた parameter と argument という単語ですが、実は(狭義では)「仮引数」と「実引数」という違いがあり、使われる場所によっては厳密に使い分けられている(あるいは、使い分けられるべきである)ということを知りました。…

JoyToy を Ruby で書き直す (4)

前回第8章まで完了。メッセージ式が使えるように。整数と文字列がいくつかのメッセージに応答できるようになった。 roytoy08.tar.gz RoyToy: puts(-123.abs()); 123 RoyToy: s = "Hello, world."; RoyToy: puts(s.substr(0, 5)); "Hello," RoyToy: puts(s.up…

JoyToy を Ruby で書き直す (3)

前回第7章まで完了。関数の定義が可能に。 roytoy07.tar.gz 再帰呼び出しもできるぜ! func fact(x) { if (x == 1) { 1; } else { x * fact(x - 1); }; }; puts(fact(10)); ↓ $ ruby roytoy.rb sample_codes/fact.rt 3628800 次回

256倍のスピード(嘘)で Racc を学ぶ (1)

「Rubyを256倍使うための本 無道編」を買いました。「いまどきの〜」と並行して、こっちもぼちぼちやっていこうと思います。とりあえず、第2章までの Intp のサンプルコード↓ intp02.tar.gz プログラミング言語を自作することが自分の目標の1つなわけですが…

JoyToy を Ruby で書き直す (2)

前回第6章まで完了。第5章までの内容で、変数と文字列、第6章までの内容で、真偽値、論理式、if文、while文、ブロック文が使えるようになった。 roytoy05.tar.gz roytoy06.tar.gz 次回

JoyToy を Ruby で書き直す (1)

1年程前に「いまどきのプログラム言語の作り方」という本を読みました。JoyToy というシンプルなインタプリタ言語の処理系を Java で作りながら、言語作りの基本を学ぶ、という内容の本でしたが、一昨日ぐらいからまた手にとって読み直してます。前々からプ…

凡人の言語作り

自分でスクリプト言語のインタプリタを書くのが夢というか、目標。作るんならオブジェクト指向言語だってことで、JavaScript とか Ruby とか、ふらふらしながら研究(?)してるんだが、知れば知るほどに、へこんでいくぞ、特に Ruby(笑)なんというか、Rub…

クロージャについて勉強

ITmedia エンタープライズ:大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係 ITmedia エンタープライズ:大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2) Martin Fowler's Bliki in Jap…

参考程度に、コード最適化

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第9章「コード最適化」へ進む。この章、はっきりいって詰め込み過ぎじゃないか。ものすごい駆け足で色々やった気がする。狐につままれたような読後感。アルゴリズムの解説と疑似コード…

参考程度に、コード生成

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第8章「コード生成」へと進む。ここまで来るとさすがにターゲットとなる CPU の命令セットを意識しないわけにはいかないので、話はどんどんハードウェア寄りに。アセンブラでのプログ…

こんなところにグラフ理論が!

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第8章「コード生成」を読み終わった。レジスタ割当てにグラフ理論の k-彩色問題が使われていたのは面白かった。というか感動した。グラフ理論による問題の解決ってなんでこう「おお!…

中間コードはどれがいい?

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第7章「中間コード生成」へ進む。属性変換文法とか翻訳スキームについて、ちょっとずつわかってきたものの、これらはいずれも形式化された記述法なので、これだけではやはり話が抽象的…

スタックはいいものだ

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第6章「実行時環境」へと進む。内容は、手続き呼び出しにともなう実行時スタックの管理について。活性レコード(フレーム)とか、ディスプレイ法とかのお話。スコープとかも絡んでくる…

意味解析は話が形式的過ぎ

「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」、第5章「意味解析」へ進む。話があまりに形式的で面食らうものの、読み進むにつれ少しずつ「実際にやるとこういうこと」というのが見えてくる。意味解析を確固とした1つのフェーズとし…

構文木の評価=プログラムの実行

字句解析、構文解析を経て構文木ができあがったら、そこからインタプリタの完成まではそう遠くない。というか、構文木を直接評価、実行するタイプ中間コードとか吐かないタイプの、素朴なインタプリタ(構文木を直接実行するタイプ)であれば、できあがった…

いまどきのプログラミング言語作り

教科書(「岩波講座 ソフトウェア科学〈〔環境〕5〉プログラミング言語処理系」)で字句解析と構文解析をやって、ある程度学習も進んできたので、そろそろ実践の段階だと思い、去年の夏に買ってからずっと積ん読になっていた「いまどきのプログラム言語の作…