月別アーカイブ: 2018年5月

映画『ダイバージェント』をみる

午前2時に,見始めるHulu

● なんか

2時間20分ぐらい掛かるらしい。
吹き替えでもいいけど,そのまんまを聞けるし,英語の勉強になるかなと

● 字幕版

で見て

● フーフー!

言ってたら,4時20分じゃねえか。

● ッアー

そういやそう言ってたな。2時間20分だって。
正確だ。

● キャッチフレーズは

『たった1回の性格診断で未来は決まる』
だ。

すげー気になるじゃん。しかも近未来。

● 100年前の「最終戦争」で

教訓を得た人類は,性格診断で人種を分けたんだそうだ。
分けるから争うだろうに。。

おまえらもう一遍ジョンレノンの『イマジン』でも聴いてろって

● 江戸前のてやんでえで

言ってやりたいですよ。ええ。僕なんかになるとね。(なんだ)

● その人種は


  1. 博識
  2. 無欲
  3. 勇敢
  4. ???
  5. ???

あとなんだっけ。
あと2つぐらいあったぜ。

・・・。
出てこないんで分かんないや。えーと(「平和」「高潔」だって)。

あと,どれにも属さない「ダイバージェント=「異端者」」がいる。
劇中では,もう,日本史の穢多非人的な役どころ。

「派閥」内で脱落したりタブーを犯したりしたらなるっぽい。

さすが契約社会だ。

欧米だ。

● そしたら

政治は「無欲」が司ることになってたけど,そのうちに

● 「博識」が

例のごとく

「永遠の平和を実現するのは,あてくし共ですわっ」みたく

やってくる。
あのヒール役の女優さんは何て人だろう。あんまりにも憎らしすぎてリスペクトする。

● 結局

分類するから軋轢が生ずるのか。
どうあがいても,人間の性でしようがないのか。

支配する側と,される側になるという構図を描いてて吐き気が止めどもない。

次に生まれるときは神様になりてえなあ。

● 「無欲」出身の

主人公は,なんだかのセレモニー(儀式)で「勇敢(治安部隊)」に
兄貴は,同じ日のセレモニー(生年関係ないのかな)で「博識(研究職,で,そのトップはクーデタラー)」に

それぞれ手のひらにナイフを入れて,誓いを立ててしまう。

痛そう。

ナイフで「グサ」って。ケッパンみたいなもんか。
にしても痛そう。

なんで,本気度示すときって,洋の東西血ぃを出すのか。
小学生がついおっぱい見て鼻血出すのはやっぱ本気度なのかも知れないなと思って映画を見る。

● あ

これネタバレサイトかも知れないです。

● つまり

出生はどうあれ,手のひらさえ切れれば,

● 商人の子が

侍に。

● 侍でござるが

やっぱ農民になるだよ。

● とか,一応ありだけど

家柄と異なると,両親ともう

● 会えないという。

なかなかの縛り。

● 「無欲」出身の

兄妹はそれぞれ

兄:「俺ってインテリジェンスだから博愛ってか,「博識」だよな。」
妹:「なんか,性格診断で「ヤバめ」って出ちゃった。直感で「勇敢」かな」

てなった。
文章理解能力希薄。

● なんか

フォーっていう男がイケメンすぎてため息が止まらないうちに

娘をかばって母(実は「勇敢」出身)が凶弾に倒れ,
敵の中枢進入時に,かなり勇敢で憤慨しきった父(格好いい)が,でもやはり凶弾に倒れ

主人公は

● 両親を失う

イヤー!!

これも幻覚であって欲しかった。

● アクションや

その他諸々。例えば

● 幻覚剤を

打たれて,幻覚世界を彷徨い歩くとか。
起きたと思ったらまだ幻覚世界だったーーとか。

● で起きたら

やっぱまだ幻覚世界やないかーい

● とか

どれがホントか分かんなーい♡

みたいな

● ヤバめの

トリックが2重3重なのかと思いきや,意外とガチだったり。チュー
ここでエロか?!と思ったら,主人公の女の子が

● まだだめー♥

とか。
エロやサイコや,かなり格好いいアクションシーンで僕を揺さぶりながら,

しかし

● 「無欲」の人々を押さえつけ

芝生に泣き崩れる「無欲」の人々に銃口を突きつける,
「博識」がつくっったヤクで操られた「勇敢」の黒尽くめの人々(中には主人公の親友の女の子も銃口構えてたり)を見たり。

● ホロコーストって

こんな絵面だったのかとか。
先の大戦で,日本人はどんなことまではしたのかなとか。

ばーちゃんは
「アメリカさんは,女にひどいことをしてくると聴いてたけど,アメリカさんは,結局紳士だっただよなあ」とか。

まあ近隣のアジア諸国をよく言わなかった祖母の言は
僕からすればあれはあれだけど

● もう一度

人が人を殺すことに
何ら正当な理由なんかない。

戦争なんていうのは

● やっちゃいけないことで

大抵,そこにwin-loseのえげつない図式があり
僕ら善良な市民は,そのことを子々孫々伝えるのが
文化を持った良心なんだろうと

● 思うにとどめつつ

設定や,「博識」が「勇敢」を操り,「無欲」を駆逐しようと,
先の戦争からわずか100年で
そういう構図が生まれるということを暗示した設定に

● 考えさせられた

わけだ。

いつか書いたけど
僕の愛する子どもたちが,やがて大人になる頃に
世の中がもう少しでもよくなれば
いいのになあと思ったわけだ。

コログ

最近のこと。

これは生きたログだから,最近のことをかき殴ろうというわけだ。

● プログラム紀

始まる。
久しぶりに,プログラムを趣味でカタカタやる。

もっぱら

● flex & bison in C++

というやつだ。
flexとbisonを使って,簡単すぎるインタプリタぐらいまでは作れそうな感じに。

bison -> flex へのヘッダファイル提供。
実際には,bisonで言語ルールまで書いて%tokenや%typeで宣言した部分を,
後に flex で#includeして使うということのよう。

これには,

● これに

めっぽうお世話になりました。
動物の柄のこの本,学生時代から憧れの象徴。

実際には,2年前ぐらいか。秋ぐらいから寝床で読んでは
単語がわからずiphoneとかで調べる。

  • precedence:優先順位(計算機演算ではpriorityて言わないのかな)
  • arbitrary:任意の
  • adequate:十分な
  • punctuation:句読点(句読法か)
  • glue to:接着する
  • simultaneously:同時に
  • albeit:〜であるが。
    (p12. “This is a hack, albeit a very useful one, since most of the time it does the right thing.”)

いくつかは入試レベルな気もし。
albeitって,そういう意味で使うんだ。など。

● 下記は,去年の夏に書いてボツにしたブログから

−−−−−−
● 学生のとき(1994〜2000年ぐらい)

大学の授業でBNF記法というのを学んだわけだが、まあ

→ 学べてなかった

単位はもらえたんだっけ。という。
bisonでは、言語仕様をBNF風に書かねばならなかったはず。

● 戸塚時代(2002年〜2007年ぐらい)

よーしいっちょう、flexでも勉強して、新種のプログラミング言語でも発明してやりますかぁ〜
と意気込み、再三挫折。

ギリflexまでは分かる。
けどbisonで何度やってもどうやっても僕の書いたBNFの言語仕様が

● ambiguous grammar

ていうエラーになる。
訳すと「曖昧な文法」。何が曖昧じゃい。曖昧な日本の私のプログラム言語の仕様。

僕にはもう、bisonを使う才能とか、生きている価値とか、死なない権利とか、笑う勇気とか、

● 何にもないに違いない

と咆哮したり呻いたりして畳の目に逆らって爪を立てたり、足の裏で敷居をゴシゴシしたりしては、とにかく、諦めていた訳だ。
−−−−−−

● という

存外に元気な感じでやってたわけだ。
やがて分かりかける。

● 飯も自炊し

再び去年の盆に書いてボツにしたブログから引用する。

−−−−−−
● で

何に感動したかというと、この『flex&bison』の「計算式を入力すると、加減乗除を優先順位を守って計算する」という
サンプルプログラムをつくる中での p.14 だ。

またしばらくすると、仕事で頭が一杯になって、何を理解したのか忘れると思うので、備忘録として残す。

Ambiguous Grammars: Not Quite
The reader may be wondering at this point whether the grammar in Example 1-5 is needlessly complicated. Why not just write this?
(読者はExample 1-5が不必要に複雑だと思っているかも知れない。こう書いてはだめかと。)

exp: exp ADD exp
   | exp SUB exp
   | exp MUL exp
   | exp DIV exp
   | ABS exp
   | NUMBER

そうそう、まさにそう。↑みたく書いちゃなんでダメなんだって十年来わからなかった。
この辺、わくわくしながら読んだ。

ちなみに「Example 1-5」というのは、bisonへ渡す言語仕様を書いたもので p.11 にはこうある。

Bison’s Rule Input Language
Bison rules are basically BNF, with the punctuation simplified a little to make them easier to type. Example 1-5 shows the bison code, including the BNF, for the first version of our calculator.
(bisonに渡すコードは基本的にBNFだが、容易に書けるよう記法を少し簡単にしている。Example 1-5 に計算機の一番最初のバージョンのためのbison用のコード(BNFを含む)を示す。)
Example 1-5 Simple calculator fb1-5.y

 <前略>

calclist: /* nothing */
  | calclist exp EOL { printf("= %d\n", $1); }
  ;

exp: factor
  | exp ADD factor { && = $1 + $3; }
  | exp SUB factor { && = $1 - $3; }
  ;

factor: term
  | factor MUL term { $$ = $1 * $3; }
  | factor DIV term { $$ = $1 / $3; }
  ;

term: NUMBER
  | ABS term { $$ = $2 >= 0? $2 : -$2; }
 ;

<後略>

そうコレなのだ。僕が戸塚時代にメロメロになったやつ。
よく入門書なんかに書いてあるやつだ。

何でこんなに分けて、わざわざ複雑に書かねばならんのだと。謎だった。

p.14でLevine先生が言う「The reader wondering at the point」こそ僕だ。

そしたらそのp.14にはこう続く。

There are two answers: precedence and ambiguity. The separate symbols for term, factor, and exp tell bison to handle ABS, then MUL and DIV, and then ADD and SUB.
(答えは2つある。優先順位と曖昧さだ。termとfactorとexpを分けて書くことで、bisonにまずABSを、その次にMULとDIVを、そしてその次にADDとSUBを処理するよう指示している。)

興奮して音読していた。
そういうことだったんだ。今までこの世のどこにもなかった答えが初めて身に染み入る。ッアー!
−−−−−−

● 何やら

感動している。
スピッツのメドレーをyoutubeで流しながら,暑い日,来る日も来る日も

● 新築の

家の中で猫と僕だけ住んでる状況。
その中で,ずっとプログラム三昧。何度かラム肉食って赤ワイン飲みまくって吐く。

● 分かったことは

C++でflex, bisonを利用することは可能ということと,
ヘッダファイルで

#undef YY_DECL
#define YY_DECL \
yy::Parser::token_type \
Scanner::scan(yy::Parser::semantic_type* yylval, \
			  yy::Parser::location_type* yylloc, \
			  ParseDriver& driver)

とかやったり,かなりトリッキーだということと。

Parser.y内で,


%{
#include "ParseDriver.hpp"

//yylex()のオーバーロード
yy::Parser::token_type
yylex(
yy::Parser::semantic_type* yylval,
yy::Parser::location_type* yylloc,
ParseDriver& driver) {
	return driver.scanner->scan(yylval, yylloc, driver);
}

// parser's error routine <- it's need to be implemented by us
void
yy::Parser::error(
const yy::Parser::location_type& l,
const std::string& m) {
	driver.error(l, m);
}
%}

なんていう,なかなか香ばしいことを書く必要。

● なんか

もともと flex, bison が広域変数使いまくったり,
#ifndefや#defineつかって,凄いことになってたりする中,

● flex, bison in C++も

C++のクラスを使う上で,かなり凄いことになってる。ということのよう。
勉強したのは下記。

  • Blog Alpha Networkingめっちゃお世話になりました。GW前〜GW中@ハトヤ。ずっと解読してました。言ったら実際に手で打って写してました。
  • bison-test@GitHub日本人の方のソース。めっっっっっちゃ分かりやすかったっす。ありがたい。
  • flatB-Compiler-and-Interpreter@GitHubAST(Abstract Syntax Tree:抽象構文木)をC++で作ろうという場合の,B-flatというC言語ぽい言語の,(1)文法チェック(2)インタプリタ(3)コンパイラの例示。すげえ。
  • 10.1.4 C++ Parser InterfaceGNUか何かの,てほどき。bison側の。
  • Generating C++ scannersGNUか何か。flex側の。

やっと,コンパイルフリーなBison/Flexのtinyセットを作成できた。
コレを元に,ASTつくって逐次実行するサンプルができたら,

● やっと

1年以上ぶりにyoutubeのサイトを更新できそうだ。
今日はプログラム紀について。

● 次回は音楽編

そんで次は,最近の人生観について。
順次追記していく。