ぼくのかんがえたさいきょうの飯テロ

2014.7.18

8

デモ(空腹時閲覧注意)

こちら
(続きを読む…)

二郎はラーメンではなく二郎というプログラミング言語である – 二郎語ではじめるプログラミング入門

2014.4.17

jiromens

ここ最近 せっかくプログラミング言語の作り方を勉強している最中だし、どうにか二郎のコール(いわゆる二郎語の一部)をプログラミング言語で再現できないだろうかと頭を悩ませていたが、最近ようやく ある程度形になってきたのでシェアする。

(正直な所、タイトルは「プログラミング言語」になっているものの、「やってる事ただのコンパイルじゃねーか」という感じになっちゃってます。 極めつけに「yaccとlex使ってるだけじゃねーか」って声が聞こえてきそうですが、どうか許してください )

test.jiroファイルの用意

以下は「二郎語」で書かれたファイル「test.jiro」である。「ニンニク入れますか?」を契機に、怒涛のコールが始まる。


「ニンニク入れますか?」「ヤサイニンニクアブラ」「ヌキ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「ヤサイカラメ」「ニンニクアブラ」「ニンニクアブラカラメ」「ヤサイニンニクアブラ」「アブラ」「ニンニクアブラ」「ニンニクアブラ」「ニンニク」「カラメ」「ニンニク」「ニンニク」「アブラ」「カラメ」「ニンニクアブラ」「ヤサイアブラ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「全マシ」「ニンニク」「ヌキ」「ヤサイアブラ」「ヤサイニンニクアブラ」「ニンニクアブラ」「全マシ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラ」「ニンニク」「ニンニク」「ニンニク」「ヤサイカラメ」「ヤサイニンニク」「ヤサイニンニクカラメ」

ソースコード(コール)内容:  「ニンニク入れますか?」「ヤサイニンニクアブラ」「ヌキ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「ヤサイカラメ」「ニンニクアブラ」「ニンニクアブラカラメ」「ヤサイニンニクアブラ」「アブラ」「ニンニクアブラ」「ニンニクアブラ」「ニンニク」「カラメ」「ニンニク」「ニンニク」「アブラ」「カラメ」「ニンニクアブラ」「ヤサイアブラ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「全マシ」「ニンニク」「ヌキ」「ヤサイアブラ」「ヤサイニンニクアブラ」「ニンニクアブラ」「全マシ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラ」「ニンニク」「ニンニク」「ニンニク」「ヤサイカラメ」「ヤサイニンニク」「ヤサイニンニクカラメ」

コンパイル

前述の二郎語によって記述されたコールをコンパイルするために、linux上で以下のようにコマンドを実行する。


./jiroparse test.jiro

すると、以下のように二郎語で書かれたコード(コール)をベースに「jiro.c」というC言語のファイルが出力される

この中身を見てみると、二郎語によるコールがC言語に正常にコンパイルされてHello world が出力されていることがわかる( int main(void){ …、 return 0; } あたりの処理は割愛しております)。


printf("Hello World");

(続きを読む…)

コードリーディングのお供には Doxygen & Graphviz が良いかもしれない

2014.4.9

比較的規模の大きいソースコードを見る際、何らかの目的を持った上でソースコードを読み始める。
目的の粒度は大なれ小なれ「コードのどこに着目するか」という疑問は必ず生じる。

パズルも完成形の絵柄を知らずに組み立てるのと 予め出来上がった後の形を知った上で組み立てるのとで 完成の時間が変わってくるように、ソースコードもその全体の形ができるだけ見えた方が良い。

とはいえ、数千行~数万行のコードを相手に 自分の手で一つ一つのクラスの役割や関連性を整理するのも得策ではないので、ここは一つ先人の知恵を活用した方が良さそう。

ということで、今回はソースコードリーディングのお供として活躍してくれるドキュメント自動生成ツール「Doxygen」と、構造体やクラス間の関係を図で出力してくれる「Graphviz」を紹介。
プログラミングの勉強中に何かの本のサンプルコードを読み解く上でも十二分に力を発揮してくれるので強くオススメする。

(続きを読む…)

『実践テスト駆動開発』を読む(2) – コード内に登場するツールの概要まとめ

2014.4.7

本書における概念的な部分のおさらいは終わり、ユニットテストを書きたくてうずうず。さあ、いよいよコードを書く段となった。

突如として現れる沢山のツール群。

・XMPP
・Openfire
・Smack
・Swing
・WindowLicker

ぺちぱーのぼくにはさっぱりわからない。
概要は書いてるけど、あまり詳細には解説されていない模様。
Swingに至っては「いやーまさかこのご時勢Swingも知らない人間なんていないだろうし、解説なんてしてもページ数の無駄だよね!え?わからないから詳しく知りたい?ggrks」といわれる始末(超解釈)。

何はともあれ本来の「テスト駆動開発の学習」という目的に影響が出そうだし、この記事ではそれぞれのツールの関係を整理し、解説していくことにする。

(続きを読む…)

『実践テスト駆動開発』を読む(1) – Openfireまわりの設定

まずはインストール

インストール用のファイルはここ。
http://www.igniterealtime.org/projects/openfire/
因みにこの記事を書いている時のOpenfireのバージョンは3.9.1。

インストールしたら起動。
なお、Windows環境を使用していてインストール時に「java.io.~~~」みたいなのが出てファイル見つからないよって怒られる人は一旦Openfireを終了して「管理者として実行」を試してみるといいかも。
Database Configuration関係で怒られる場合はアンインストーラでアンインストールして、C:\Program Files (x86)にOpenfireのフォルダが残っている場合はそいつも削除して再インストールを試してみる。

(続きを読む…)