トップ «前の日記(2010-12-05) 最新 次の日記(2010-12-07)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2010-12-06

_ F#入門はクリスマスに来るそうですよ

荒井さんたちが執筆しているF#本ですが、アマゾンでは「並列」という字がついていますが、もう少し概要的な内容を含む入門書になるようです。

実践 F# 関数型プログラミング入門(荒井 省三: いげ太)

(でも実際の書影は次のようになるらしい)

と、紹介はじめてるけど、いいんだろうな?

1章が、まず意識合わせの章になっていて、関数型言語が出てきた背景や特徴について俯瞰的な説明があります。これはおそらく意味があって、CやRubyやJavaやVBのように、誰でもなんとなくわかっている言語とはやはり異なるわけで、どういう特徴があるのかとか、おそらく読者にとっての既知の言語とどう考え方が違うのかを明らかにしておくのは重要でしょう。特に、読者のターゲットをVisual Studioの利用者と想定したとすれば。

2章は、さらにF#の特徴についての概説(と、対話型シェルの起動方法など)。

ここまでで約60ページ。

で、3章が「F#へようこそ」で、本格的に言語入門、しかしプログラミング入門のための序章としてF#(およびF#プログラミング)の特徴説明となります。

3.1がHello World。3.2が電卓。関数と演算子(といっても関数のはずだけど)の簡単な紹介。3.3でコメント。

で、いよいよ本当にF#のプログラミングに入っていくわけですが、3.4が「itの正体」。なるほど、こうくるのか(ふうむ)。

で、3.5で「変数束縛」。この書き方も一つの方法だなぁ。代入という言葉は使っていません。したがって、代入という概念を知っている読者は、それとは異なる概念だと(たぶん)解釈してくれることを期待しているのでしょう。

3.6「初めての関数」。3.5で示した変数束縛によって右辺の関数が束縛されることを示すと同時に、apply(適用)という用語を提示。

3.7で「ローカル変数」。ここで、関数内での変数のlet束縛(トップレベルのlet束縛をlet宣言、ローカルでのlet束縛をlet式としているけど、そう呼ぶものなのかな)。

ここまで来るとexpressionとstatement、declarationについて話せるので、3.8が「式と文」。F#はstatementはdeclarationのみ。つまり、手続型言語ではないから、文はなくて式で構成するよ、という説明があります。でも、CやC++やJava……と手続型言語を並べて最後におまけにRubyと書いているけど、Rubyにはstatementと呼べるのは、えーと何があったかな? 答:while, until, while 修飾式、until修飾式 それから、and, or, not, if/unless/rescue修飾式。ただし、Rubyの説明上はこれらもすべて式であって、ただ値を返さなかったりメソッド引数に指定できない(したがってstatementとみなすことができる)のでちょっと違うかなぁとか感じます。でも、手続型言語なのは正しいわけですが。

で、3.9が「ファーストクラス関数」(この表現はなんか引っ掛かる)。fun式を使うことで関数リテラルを記述できることをこう呼んでいるようですね。

3.10で「束縛≠代入」として、束縛とは何かを説明しているけど、ここは論議を呼びそうな内容。言いたい(強調したい)ことは、F#では変数に対する再設定ができないということなのだろうけど、そのために、代入可能な変数は容器、それに対して……という説明をしている。でも、参照主体の言語のほうが多いご時世だから、そもそも容器型の説明そのものが最近ではされず、むしろラベルによる説明が多いわけなので(そうでもないのかな?)、むしろ混乱を招く恐れを感じます。ただし、容器やラベルをそういった手続型言語の良くある説明を無視して、この本のこの章の中で定義された説明のための用語として読めば、書いてあることは正しいと思います。

3.11は「シャドウイング」。なんでわざわざ一項を設けたのか不思議ですが、積極的にスコープが変わった場合に名前を再利用するように勧めている(それは再代入の代替となるからという理由)からかなぁ。とすれば、親切なのかも知れません。

で、4章以降で本格的なF#のプログラミングが始まります(のだと思うというのは、リークされた見本は3章までなので)。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え