Entry

今日読んだ本 - 『標準C#入門』

2009年02月22日

C# は年収がいいというから読んでみた。ウソ。古本屋で100円だったから読んでみました。紹介しているのは第2版だけれど,あたしが読んだのは初版です。といっても,第2版は多分 C# 2.03.0 に対応したことと,処理系が VS2008 になっていることくらいで,大きな違いはないんだと思います。

JIS規格対応 標準C#入門 改訂第2版
矢沢 久雄
ソフトバンククリエイティブ
売り上げランキング: 130101
おすすめ度の平均: 5.0
5 使い勝手のよい良書です

このサイトで入門書を紹介する時,たびたび話に出しているんですけれど,プログラミング言語の入門本には,「チュートリアル型」と「リファレンス型」の二種類のタイプがあると思っていたりします。チュートリアル型は,言語仕様の厳密さはともかく,まず一通りのプログラムを作れるようにすることを主な目的にしている本。『猫でもできる……』なんかがその代表です。一方,リファレンス型は,言語仕様を単元に区切って(「型」とか「演算子」とかいった具合に区切る),はじめから割と詳しく説明するタイプです。学校的な説明。ま,あたしが勝手に分類してるだけなんですけどね。それぞれ,一長一短あると思うわけです。

本書はというと,コテコテのリファレンス型。

リファレンス型の長所は,ダラダラにならないで,要所をきっちり押さえられるところです。一方,本当にプログラミングをしたことがない向きにとっては,最後まで読まないとまともなプログラムを作れないもんで(例題の簡単な検証プログラムはあるけど),読んでていらいらするんじゃないかと思います。

もっとも,C# は,プログラミング言語として,それほど変態な構文や概念を持っているわけでもないので,C/C++ や Java あたりをやってる人には,ほとんど違和感なく入り込める言語だったりします。んなもんで,まったくの未経験者つのは,あまりいないんじゃないだろうか。自分が知っている言語の差分だけを知りたい場合は,リファレンス型の方がまとまっているし,使いやすいんだと思います。

で,中身なんですけれど,思いついたところだけ。

  • 値型と参照型の区別をこの説明で理解するのは難しいんじゃないだろうか。
  • コンパイルエラーと実行時エラーの区別をしっかり説明しないといけないと思うけど,ここら辺は他書もグズグズだから仕方ないか。
  • 軽く触れられているだけだけど,OOP の説明は再利用性・保守性の視点が的確に示されていて,よく書けていると思う。
  • 継承や多態性は一章を割いて丁寧に説明しているけれど,例外の説明がかなりあっさり。構文は分かるから読めるようにはなるけど,使うメリットが分からないので,この説明で「書ける」ようにはならないと思う。

以前書いた記事とも重なっているとこもあるので,「コンパイルエラーと実行時エラー」の話だけ取り上げます。

C/C++ ではほとんど常識のように考えられているんですけれど,C/C++ でプログラミングする人は,動的エラー(実行時エラー)と静的エラー(コンパイル時エラー)の区別を,常に考えていたりします(言い過ぎか?)。例えば,ヒープ領域から動的に確保した領域を指しているこの変数は,スタック上にあるけれど,それぞれちゃんと確保できるのか,とかいった場合,動的に領域を確保できるかは実行してみないと分からないけれど,その領域を指す変数はコンパイル時に正しいか分かります。つまり,どの時点でどういう問題が起きうるのか把握しておく必要があるというわけです。ま,偉そうにいうことじゃないんですけど。

一方,本書の C# をはじめとした,メモリモデルがあまり具体的でない言語を説明する場合,ここら辺の区別がかなりあやふやになることがあります。(C で言う)自動変数を「宣言」または「定義」しているのに,実行時に領域がムクムクと生成されるかのように書かれている箇所がある。ここら辺を踏まえていると,new 演算子をなぜ使うのか,とか,失敗した時のエラーはいつ生成されるのか,とかいった話を理解しやすいんですけどね。もっとも,ここら辺はもともと他書でもあやふやなので,本書についてだけ云々するもんでもないんでしょうけど。

本書は,プログラミングの初心者さんも対象にしているようですけど,実質はどちらかというと,何かしらのプログラミングを経験した人向けの本なんだと思います。A5版でページ数も少ないし,さらっと確認するにはいい本なのかも。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN