新・日々録 by TRASH BOX@Eel このページをアンテナに追加 RSSフィード

2011-04-05

書籍購入:F#の道を邁進……のはずがJavaScriptづいてしまった

暫く前から関数型プログラミングは興味の対象で、Common Lisp・Object CamlSchemeと非純粋関数型言語ではあるものの何冊か本を買って読んでいる。しかし中々捗っていない。

一方でJScriptLuaRubyといった関数型言語的な側面を持つ言語を使用する機会はそこそこあって、その際はC/C++でコードを書く時とは異なるスタイルで書いている(と思う)。しかしそれが関数型プログラミングのスタイルだとは思えない。

よく考えてみるとJScriptLuaRubyは間接的に自分の業務と縁がある言語であり、一方でCommon Lisp・Object CamlSchemeは言語仕様とは別の所で今の私の業務に適用し難い部分があり*1、中々使う機会がない。単純に具体的な問題を解決する際に使用する機会が少ないことが影響しているのではないか?

ならばF#はどうだろうか? 関数型言語で、Windows限定だが商品として出荷できる程度のコンパイラがあり、いざとなったら.NET Frameworkのクラスライブラリを使えるので実用度も高そうだ。

ということで懲りずに1冊購入。

実践 F# 関数型プログラミング入門

実践 F# 関数型プログラミング入門

ふと思ったのだが、関数型プログラミングというと「関数関数関数!」というイメージが強いのだが、「 Internet.com」などでは関数型プログラミングの説明にてデータの抽象化も重要な項目として挙げられている。読んだことはないが『プログラミング原論』の第2章でも「関連した型は正確に定義する」云々と書かれているらしい*2

もっともこの本にはそこまでは書かれていないように見える。だが良さそうな本だ。

F#の本とは別に、『JavaScriptパターン』を購入した時から気になっていたこの本も購入。

ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

実際の所、私がJScriptを弄くっている範囲ではこの本が必要になることはないと思うのだが、動作が遅くなる原因と対策についてJavaScriptの内部動作にまで踏み込んで説明されているのが購入に至った理由だったりする。

一応Cプログラマだからだろうか、使用言語にもよるがコードを書く時「そのコードがどのように解釈されて実行されるのか?」という点が結構気になる。この観点にて無理があるコードを書いてしまうと動くには動くけど実は陰でかなり無理しているコードになるからだ。

ただこの辺りは(フォンノイマン型マシンからみて)抽象的な記述になればなるほど理解するのが難しくなると思う。C言語でさえも生成されるアセンブラとの乖離がある。C++ではより難しい。JavaScriptでは更に難しい。XSLTは「XMLツリー構造に対して処理を適用する」というイメージで処理を理解することはできるが*3、実際にコンピュータ上でどのように処理されているか明確なイメージを持つことができないでいる。

それ故に、余り出来が良くないプログラマな私は内部動作にまで踏み込んだ解説の類が欲しい。自力で理解するのが大変で、面倒だからだ。

ところでつい最近JavaScriptの良い入門書を知らないか尋ねられたのだが、実は手元には、

これしかない。重量級かリファレンス本か作法本という、正直ある程度JavaScriptを使える人が更にパリパリ使う為のラインナップだと思う。

このラインナップには一応理由があって、というのも今までWSH + JScriptの環境でコードを書くのが殆どだった為、JavaScriptの言語本体の学習だけで大半が何とかなっていたのだ。というか一般的なJavaScriptの本だと余分な所が多すぎた。

しかし、まあ実は私本人も困っている面があって、というのもJScriptHTAで小ツールを作る為の「サブ言語」としてJavaScriptを使うだけなのに重量級を相手にガツンと一発――というのはちょっと効率が悪いのだ。それにHTAを使う場合はクライアントサイドJavaScriptに関する知識も重要となるが、その辺りの情報源としては物足りない。

そういうこともあり、他言語経験者向けにも手頃な入門書を探していた所この本を見かけたので買ってみた。

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで

まだチラ見程度だが「今日日のJavaScriptを使った開発スタイル入門」を兼ねたJavaScriptの入門書だと思う。他言語の経験者が初めてクライアントサイドJavaScriptの仕事をすることになった場合に丁度よい本ではないだろうか? JavaScriptの言語本体の落とし穴も押さえているし、ブラウザオブジェクトDOMAjaxjQueryといった言語以外で開発で必要になる要素にもページが割かれている。

ただできれば『JavaScriptパターン』あたりを併読するべきだろう。というのもJSONの解析方法として堂々とevalのみを挙げている本なので――恐らく他の記述は問題はないのだろうけど、しかし少し心配だ。

クライアントJavaScript繋がりで、この本も購入。

サブタイトルが「HTMLCSSJavaScriptによる開発手法」となっていて、本当にその通りの内容だったりする。モバイル機器向けに特化された内容も結構多いのだが、頑張ればHTAにもそこそこ流用できるのではないかと期待している。

*1Windows上でCygwin無しで使えて且つ実用に足る手頃な処理系が少ないとか、日本語の扱いが微妙とか。

*2:関係ないが『プログラミング原論』と『プログラミング原論――いかにしてプログラムをつくるか』は名前が紛らわしい。というか私みたいに「遂に復刊か?」と一瞬勘違いした人もいると思う。

*3:というか私はそのイメージで処理を記述しているのだが。