けんさく。

けんさく。が、いろいろ趣味のことをやるページです。

プログラミング言語

暇があればコード書いてるせいで記事を書くのをさぼっていた

プログラミング面白いわ。
いろいろ書いてると小説やら評論やら文章のネタはいろいろ出てくるけど、そんなことよりコード書いていたい気分だ。
やはりある程度の規模のものを書いてみないと、原語の長所短所はわからないな。
プロじゃないしプロになる気もないんで「驚き最小の原則」なんてなんのその。
「PHPの使用ではそうなってんの!?」
 と驚かされるほうが面白い。「驚き最大の原則」が生きるモットーである。
三項演算子の結合則とか暗黙の型変換とかCoWとか配列の一つを参照するとか、いろいろ落下可能な落とし穴にはすべて落ちる勢いで楽しんでいる。
「落下可能な落とし穴にはすべて落ちる、躓ける段差にはすべて躓く」
ううむ、よい人生とはこうあるべきであるな。自分で言ってて何を言っているのかわからなくなってきたが。 

つぎはPHPをおもちゃにしていることに関する雑記 または 『身体としての書物』への書評

最近はPHPをおもちゃにしてる。
rubyやperlやpythonをおもちゃにしたことはあったので、それじゃ次はこれだろうという安直な思考である。
しかし、やはりwebアプリを作るのに特化してるので、他のスクリプト原語と毛色が違う部分も多く、苦労しつつ楽しい。
参考書にしてるのは古本屋で買ったちょっと古い本だが、ネットで調べると日本語で新機能を紹介してくれるページが多くて、そんなに困らない。
パーフェクトPHP (PERFECT SERIES 3)
小川 雄大
技術評論社
2010-11-12


データベースのテーブルから情報を取得する操作を、専用のクラスに切り分けようとしたときに、取得したテーブルの行をforeachで回すには、一度配列に入れなあかんのかなあ、ループ二回回すことになって二度手間だなあ、なんて考えてたら、 ジェネレータなんて便利なものがあるじゃないか。しかもIteratorじゃなくて、IteratorAggregateなんて簡単なインターフェイスもあって、ジェネレータを使えば、クラスのインスタンスを直接foreach構文に入れられる。
やるじゃん。関数型プログラミング的に言えば、計算途中の結果と継続を返す継続モナドだ!
しかし、お遊びとはいえ、参考書片手にruby on railsで中規模程度のwebアプリ作ってみたりしてたおかげで、既存のフレームワークを使わなくとも自然にMVCっぽくクラスが切り分けられて、なんとなく自分の成長を感じる。


小規模だからかMVCというより、Document-Viewっぽくなるが。
あと、gitでヴァージョン管理して、composer(公式ページを見るたびに「お前はcomposer(作曲者)じゃなくてconductor(指揮者)だろ! ッて思う)で依存ライブラリ管理して、phpspecでユニットテスト書いて、monologでロギングして、ApiGenでドキュメント作って(ubuntuにはデフォルトではsqliteのドライバーが入ってなかったり、設定のneonファイルとやらの書き方が分からず、間違えると関数の引値のタイプヒンティングでエラーが出て頭がハテナになったりとなかなか苦労させられた)、とそれなりに今風の開発っぽいことを真似られるのも、いままでの経験が生きてる感じで嬉しい。
gitは同人誌制作で覚えたし、ローカルに依存ライブラリ管理するのは、前掲書にrubyにおけるbundlerの使い方が結構詳しく載ってたからだし、phpunitではなくphpspecを使ってみようかと思ったのも前掲書でrspec使ってたからだが、テストファーストの考え方からすると「テスト駆動」というより「振る舞い駆動」と言った方が自然だよなあと思えたからでもある(実際にはphpunitも併用したほうがやりやすいような気がしてるが)。あとロギングは大事だし、文芸創作者としては「文芸的プログラミング」しないわけにはいかないよね。 ドキュメント書くの結構好きなんだよな。
あとは、vagrantとかdockerとか自由に扱えるようになったら、かっこいいなあ。

環境構築して新しいプログラミング言語で遊ぶのはそれ自体楽しいが、作ってるといろいろなことを考えさせられるのもいい。作品のアイディアが浮かぶのだ。
特にPHPはWebアプリのための言語だから、Webアプリとしての小説ということをいろいろ考える。Webで小説を発表するのに、紙の上で小説を発表するのと同じことやるのはやっぱつまらない。やるんだったらWeb上でしか出来ないことをすべきだ。
例えばスレッド型掲示板みたいな、相当にやりつくされた例題を解くだけでも
「このGETって仕組み使うと、まるで無限個のページがあるみたいになるなあ。これとボルヘスの『砂の本』を絡めると面白いかもなあ」
とか考えてしまう。もしかしたら幾つか発表できる物が出来るかもしれない。
こんなことを考えていると、最近読んだこの本を思い出す。
身体としての書物 (Pieria Books)
今福 龍太
東京外国語大学出版会
2009-03-31

電子書籍の発達などで、書物というものの形が急激に変わろうとする今、「物体としての本」「身体としての本」「肉体的行為としての読書」などについて考えなおさなくてはいけない、というそれじたいはとても正しい志に基づいて書かれた本で、さらにその視点からボルヘスやジャベスやベンヤミンやグリッサンなど、私好みの物書きについて読み解く、となっては非常に期待の大きかったのだが、期待が大きかったからこそいろいろと文句もある。
まず文体が勿体つけと格好つけばかりで無駄が多すぎるし(添削したくなるレベル)、それらを除くと意味のある内容は半分くらいになってしまうし(ちなみにその半分は、歴史上のいろんな本に関するエピソードだったり、うえで書いた著者の作品に関するかなり鋭い読みだったりとかなり良い。だからこそ水増しは残念)、「書物をジャンルや内容や書き手であらかじめ区別・差別するということはしたくない」と書いた同じページで、旅先にガイドブックを持ち歩くことについて否定的に書いたりと、とにかくスノビズムが鼻につく。「土地の力と書物の力とがスパークして、イマジネーションの火花が飛び散る」などと、通俗スピリチュアリズムに阿った記述を見ると、虫唾が走る。近代人であることを必死に否定しようとする醜悪な近代人ここに極まれり、という感じだ。
付言しておくと、私はこの手の書物が市場に出回ることまでは否定しない。実際この手のスノビズムには結構な需要があり、その需要が例えば「殺し屋」とか「違法薬物」とかほどには別に反社会的と呼べるほどの害があるわけでもない以上、市場がそれに答えるのは理の当然である。
しかし、先ほどの例からも分かるように、需要があることは免罪符にはならない。需要があったら答えていいなら、報道は嘘のつき放題だ。多少偏った報道ならともかく、嘘を付いてしまえば明らかなルール違反で、弾劾されてしかるべきだ。
私がこの本に付いて怒っているのは、これが東京外国語大学出版会という国立大学の出版部から出版された大学教授によって書かれた本だからでもある。
そのような社会的責任のある組織や人が、このような若者を惑わすような本を出すというのは、やはり褒められたことではないと思うのだ。 
キング・クリムゾンは自分たちの初期のスタイルについて「あれは若者を惑わすような、よくないスタイルがあった」と語ったことがある。
私自身若いころはこの手の本に惑わされ、今もその手の「若者を惑わす」芸術への愛は失っていないつもりだ(信仰は完全に失った)。
だからこそ、ちゃんと惑わすべきだと思うし、もう若者ではないとはいえ私ごときも惑わせない本には腹も立つ。
特に腹が立つのが、彼が言うところの「現代のディジタル文化」を書籍文化と対比して腐すところだ。
その口ぶりは彼がそれら「ディジタル文化」に真面目に相対したことがあるのか疑問に思わせる。例えば、Webアプリの作り方を勉強したのか?
この本の一つのテーマは「実際に手を動かす」ことだ。実際に手を動かして「本」を作ってみないと「本」は理解できないというのだ。
大賛成だ。数学を教えていてもいつも言っていることでもある。
実際私は最近、製本機が買いたくてたまらないのだ。本好きとしては、やっぱり本は自分で作りたい。
そして翻って言えば、結局「ディジタル文化」も手を動かさなければ理解できないのだ。理解できないから、オカルト的な解釈に走ったり、分かりもせずに薄っぺらだと非難したりするのだ。手を動かさなければ、そこに肉体的理解が深まることもないのだから当然だ。
大体この手の人は、自分の議論の形式が、実は「書籍文化と口承文化」との関係で書籍文化を否定するのにもそのまま使えることに気づかないのだろうか。
「むしろヴァーチャルなアーカイブに組み込まれ、ディジタルなデータ記号として永遠の生命を得たかに見える本=テクストのほうが、死や消滅への想像力を失うことで、かえって知性の求める尊厳と謙虚さから遠ざかっていくように私には思われる」
なんて書いて、「ディジタル文化」に警鐘を鳴らすはいいが(いやよくない。「ヴァーチャルなアーカイブ」ってなんだ? ちゃんと考えて書いてんのか?)、これってなんだかソクラテスが文字による知識の伝達に警鐘を鳴らして口承による知識の伝達を称揚したみたいで、理系だろうが文系だろうがほんとこの人達歴史を学ばないなあ、という感じで興ざめだ。(ちなみにソクラテスの方が議論としては何倍もしっかりしてる。詳しくは下の本を読もう)

 歴史を紐解けば、口承文化の独自性が認められ始めたのは、結局書籍文化がその独自性を発揮し始めることによってだ。
本は誕生後千年以上、独自の芸術形式を持たず、口承文化の再生技術に過ぎなかったのだ。書籍文化が独自の芸術形式を獲得していく様子は次の本に詳しい。


だからこそ、本の本たる所以を考えるためにこそ、我々はコンピュータの登場によって可能になった様々な芸術形式について真剣に考える必要がある。
Web上で小説を書くからには、Web上でしか出来ないこと、紙の上では出来ないことをやるべき、と言った理由はここだ。
紙の本では出来ないことを考えることは、紙の本でしか出来ないことを考えることに繋がる。
これは、映画でしか出来ないはずのことを、なんとか紙の上に再現しようとして漫画でしか出来ないことを発明していった手塚治虫や大友克洋と同じだ(ピンチョンやバロウズなどの二十世紀の小説家と映画にも同様の関係が見える)。

さて、話が盛大にずれてしまった。
何が言いたかったかというと、新しいことを勉強すると、こんな感じにいろいろなことを考えてしまっていいなあ、という話だったのだ(ほんとだよ)。
次はautoload関数の仕組みを勉強しよう。これでrequire_once地獄から抜けられるというわけだ。 

Twitterでプログラミング言語の擬人化が流行っていると聞いて

個人的にかわいいと思っているのはprologである。
prologはこちらが知識(データベース)を与えておき、それを使ってこちらの質問にprologが答える、という風に動作が進んでいく。
そして、あらかじめ与えておいた知識が間違っていたり、質問の仕方が適切でなかったりすると、正しくない答えを出したり、ループに陥って延々とぐるぐるしていたりする。
この質問と答えの行き来が、コミュニケーション的で、擬人化に最適なような気がするのだがどうか。
prologとつきあってみて感じた印象は、なんだかものすごく融通の利かないけど、単純計算能力は高いサヴァン症候群の子ども(giftedと呼ばれたりするね)を教育しているみたいな気分だ。映画『レインマン』の電話帳を覚えてしまうエピソードを思い浮かべてもよい。 
なんだか変な挙動をしていると、こちらがおかしなことを教えてしまったのではないかと、すまない気分になるのも、通常の言語にはない経験だ。「なんでそんなとこでひっかかっちゃってんのかなあ」と一生懸命traceを使ってデバッグをして、原因を見つけると「なんだ。そんなことに引っかかるなんて、おまえほんと馬鹿だなあ」と思う。
なにしろprolog自身は、教えたことを教えたとおりやるまじめな子だから、腹は立たない。 
この前、人工知能の伝統芸能である「積み木の世界」をしていたときも、深さ優先探索をしていたため、積み木を積んでは崩し、崩しては積んで、ものすごく無駄の多い探索ルートをたどって答えにたどり着いていた。並の人間だったら、そんな面倒な道は見つけられない(もっと簡単な道を見つけてしまうから、というのもあるが)。そんなとこ炉を見ても、「かわいいなあ。馬鹿だなあ」を思ってしまうのだ。
これはもう重傷だろうか。 

あと、prologをやって、スコーレム化とかエルブランの定理とかの論理学の本によく書かれていることの意味がようやく分かったよ。 
Leaves of Words
記事検索
最新コメント
月別アーカイブ
プロフィール

けんさく。

QRコード
QRコード
タグクラウド
  • ライブドアブログ