このブログに掲載されているソースコードは、特にライセンスについて明記されていない限りNYSLに従って公開するものとする。この辺りについてはid:eel3:20081229:1230559827参照。
あと未だにFizzBuzz中。
2011-04-05
書籍購入:F#の道を邁進……のはずがJavaScriptづいてしまった
暫く前から関数型プログラミングは興味の対象で、Common Lisp・Object Caml・Schemeと非純粋関数型言語ではあるものの何冊か本を買って読んでいる。しかし中々捗っていない。
一方でJScript・Lua・Rubyといった関数型言語的な側面を持つ言語を使用する機会はそこそこあって、その際はC/C++でコードを書く時とは異なるスタイルで書いている(と思う)。しかしそれが関数型プログラミングのスタイルだとは思えない。
よく考えてみるとJScript・Lua・Rubyは間接的に自分の業務と縁がある言語であり、一方でCommon Lisp・Object Caml・Schemeは言語仕様とは別の所で今の私の業務に適用し難い部分があり*1、中々使う機会がない。単純に具体的な問題を解決する際に使用する機会が少ないことが影響しているのではないか?
ならばF#はどうだろうか? 関数型言語で、Windows限定だが商品として出荷できる程度のコンパイラがあり、いざとなったら.NET Frameworkのクラスライブラリを使えるので実用度も高そうだ。
ということで懲りずに1冊購入。
- 作者: 荒井省三:いげ太
- 出版社/メーカー: 技術評論社
- 発売日: 2011/01/07
- メディア: 大型本
- 購入: 6人 クリック: 264回
- この商品を含むブログ (24件) を見る
ふと思ったのだが、関数型プログラミングというと「関数・関数・関数!」というイメージが強いのだが、「F#で学ぶ関数型プログラミング入門 - インターネットコム」などでは関数型プログラミングの説明にてデータの抽象化も重要な項目として挙げられている。読んだことはないが『プログラミング原論』の第2章でも「関連した型は正確に定義する」云々と書かれているらしい*2。
もっともこの本にはそこまでは書かれていないように見える。だが良さそうな本だ。
F#の本とは別に、『JavaScriptパターン』を購入した時から気になっていたこの本も購入。
- 作者: Nicholas C. Zakas,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/03/20
- メディア: 大型本
- 購入: 9人 クリック: 1,176回
- この商品を含むブログ (31件) を見る
実際の所、私がJScriptを弄くっている範囲ではこの本が必要になることはないと思うのだが、動作が遅くなる原因と対策についてJavaScriptの内部動作にまで踏み込んで説明されているのが購入に至った理由だったりする。
一応Cプログラマだからだろうか、使用言語にもよるがコードを書く時「そのコードがどのように解釈されて実行されるのか?」という点が結構気になる。この観点にて無理があるコードを書いてしまうと動くには動くけど実は陰でかなり無理しているコードになるからだ。
ただこの辺りは(フォンノイマン型マシンからみて)抽象的な記述になればなるほど理解するのが難しくなると思う。C言語でさえも生成されるアセンブラとの乖離がある。C++ではより難しい。JavaScriptでは更に難しい。XSLTは「XMLのツリー構造に対して処理を適用する」というイメージで処理を理解することはできるが*3、実際にコンピュータ上でどのように処理されているか明確なイメージを持つことができないでいる。
それ故に、余り出来が良くないプログラマな私は内部動作にまで踏み込んだ解説の類が欲しい。自力で理解するのが大変で、面倒だからだ。
ところでつい最近JavaScriptの良い入門書を知らないか尋ねられたのだが、実は手元には、
- 『JavaScript 第5版』
- 『JavaScriptクイックリファレンス』
- 『JavaScript: The Good Parts』
- 『JavaScriptパターン』
これしかない。重量級かリファレンス本か作法本という、正直ある程度JavaScriptを使える人が更にパリパリ使う為のラインナップだと思う。
このラインナップには一応理由があって、というのも今までWSH + JScriptの環境でコードを書くのが殆どだった為、JavaScriptの言語本体の学習だけで大半が何とかなっていたのだ。というか一般的なJavaScriptの本だと余分な所が多すぎた。
しかし、まあ実は私本人も困っている面があって、というのもJScriptやHTAで小ツールを作る為の「サブ言語」としてJavaScriptを使うだけなのに重量級を相手にガツンと一発――というのはちょっと効率が悪いのだ。それにHTAを使う場合はクライアントサイドJavaScriptに関する知識も重要となるが、その辺りの情報源としては物足りない。
そういうこともあり、他言語経験者向けにも手頃な入門書を探していた所この本を見かけたので買ってみた。
JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/27
- メディア: 大型本
- 購入: 29人 クリック: 673回
- この商品を含むブログ (45件) を見る
まだチラ見程度だが「今日日のJavaScriptを使った開発スタイル入門」を兼ねたJavaScriptの入門書だと思う。他言語の経験者が初めてクライアントサイドJavaScriptの仕事をすることになった場合に丁度よい本ではないだろうか? JavaScriptの言語本体の落とし穴も押さえているし、ブラウザオブジェクト・DOM・Ajax・jQueryといった言語以外で開発で必要になる要素にもページが割かれている。
ただできれば『JavaScriptパターン』あたりを併読するべきだろう。というのもJSONの解析方法として堂々とevalのみを挙げている本なので――恐らく他の記述は問題はないのだろうけど、しかし少し心配だ。
クライアントJavaScript繋がりで、この本も購入。
Androidアプリケーション開発ガイド ―HTML+CSS+JavaScriptによる開発手法
- 作者: Jonathan Stark,増井俊之(監訳),牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/02/24
- メディア: 大型本
- 購入: 3人 クリック: 128回
- この商品を含むブログ (15件) を見る
サブタイトルが「HTML+CSS+JavaScriptによる開発手法」となっていて、本当にその通りの内容だったりする。モバイル機器向けに特化された内容も結構多いのだが、頑張ればHTAにもそこそこ流用できるのではないかと期待している。