プログラミング

C#を0から初めて1ヶ月。無料でゲットできるC#の洋書を簡単に比較

Consol.WriteLine “たぬしです。”

ここでは、C#(というかプログラミング経験自体少ない)初学者の僕が、レベルが低いまま、洋書の入門書を読むに至りましたので、その順序を提示します。
ガチのプログラム初学者の人にとって、このような学習の道筋があるということを示すがためであります。
また、僕はC#自体、全くの無知でして、オブジェクト指向プログラミングに関しても完全なる無知であります。
そのような状態からどのように学んで行くか、未だその道程の中途で悩んではおりますが、その経緯を記すことで、誰かの道標の一つになればと思うております。

C#をやるに至った経緯

入社してから、早9ヶ月になるわけですが、ここ1ヶ月は、電子回路のことはやっておらず、C#ばかりやっております。
というのは、以下のような経緯があったのであります。

社長o(゚ー゚o) 「そろそろ保守の観点から、装置の制御プログラムをC#あたりで書き換えないとな~新しい、装置のプログラムも書かにゃならんし。はぁ~」
たぬし( *`ω´)「(はーん・・・そりゃ、新しい言語の方が良いよなぁ。)」 
社長o(゚ー゚o)「たぬしくん、昔、Cとかかじってたって言ってたよね??」
たぬし( *`ω´)「はい。まあ、微々たるものですけども、、、。どちらかというとfortran90という数値計算のための言語使ってました。といっても、偏微分方程式を解かせた位のものです。。。なので、ほぼ初心者ですね。」
社長o(゚ー゚o)「でも、やったことあるってのはでかいね!!今後、誰かは理解している人が必要だと思うし、C#勉強して、ソフトも空き時間に作ってもらえたらいいのだけど。」

煽りに弱いたぬし氏は、別に煽られたわけではないけれど火が付いた。

たぬし( *`ω´)「C#の件、僕に任せてください(バーンッ!!)興味もありますし!!」
社長o(゚ー゚o)「おっ!了解~Visual Studioってソフトあるから、とりあえずインストールしてみてよー。俺もやってみるからさ~。中小企業が使うあたりだと、無料版でも十分っぽいなぁ。外に出すソフトってわけでもねーし~(ポチポチ」
たぬし( *`ω´)「しぇけなー!!!」

というわけで、回路の勉強はいったん脇に置きつつ、C#の勉強を始めたのですが、初学者にとってプログラミングは非常に難しい。
特にオブジェクト指向のやり方が、なかなかわからないのであります。

これまでやった本が二冊ありますので紹介させて頂きます。
また、社内でC#のプロがいない、というか経験者がいなかったので独学です。

1ヶ月で行ったC#の勉強歴

ゴールから始めるC#

1冊目にやり始めたのがこの本です。
この本の特徴は、1章ごとに例題プログラムとして、作るべきWindowsフォームを使用するアプリケーションがゴールとして定められていることです。
Windowsで動くアプリを作る場合は、非常に良いサンプルだなー、と思われます。

たとえば、6章は「アラーム&タイマーでオブジェクト指向の基本を理解しよう~アラーム&タイマーのデスクトップアプリケーションの作成」となっており、実際に動くアプリを作るまで行くわけです。

このように、アプリを作ることで、それに必要なC#の基礎事項を学んで行こうという試みであります。
Cをやったことがあったので、5章くらいまではなんとかついていけたのですが(不明点がおそらく4割位)、6章あたりから訳が分からなくなってしまい、途中でやめました。
6章あたりからは、加速度的に進みが早くなり、説明も詳しくはありません。

そもそもオブジェクト指向の基礎と言っても、1回やっただけでは到底身に付きそうにない量の情報が提示されており、よくわからないままコードを打ち込むという状況に陥りました。

ということで、もう一つあった「やさしいC#」をやってみることにしました。

この本は、良いサンプルコード集という見方が良いと思っております。

やさしいC#第2版

この本は二冊目にやったわけですが、1冊目と異なり、主にはWindowsフォームの部分もプログラムを手書きします。
Visual studioを使う人は、フォームの作成を、マウスでボタンやラベル等の部品を直観的に配置して行えることを知っていことと思います。
この本では、その部分も手書きでやりますので、その点理解が深まります。

また、ゴールから始めるC#より、章ごとの難易度の変化が緩やかでして、プログラムも似たような形式で書かれております。
なので、全くついていけない!ということは少なくなっており、初学者の人間でもそこそこついていけます。(無論、一気に理解出来てしまうなどということはないので、不明点は多々残ります。)

それからは、ゴールから始めるC#とやさしいC#を同時に進めています。
同じような文法を扱う部分を、同時にやってある程度理解したら、ゴールから始めるC#の例題プログラムや練習問題のプログラムを模写しております。
それで、そこそこプログラムの流れに慣れてきて、自分人では書けないまでも、ある程度わかるという状況に持ち込めました。
現在、ゴールから始めるC#は8章まで、やさしいC#も8章まで全てのプログラムを模写し終えています。(2019年1月30日現在)

このような状況下で、より説明を求めて模索したのが洋書だったのです。

洋書に踏み出そうと思った理由

物理の本でも同様ですが、海外の教科書ってやたら初学者向けの本は、記述が詳しいです。
日本の本でも良い教科書はたくさんあるのですが、完全初学者が独学でとなると難しく思えるものが多くを占めます。

無論専門書なので、それなりに難しくて当たり前なのですが、海外の書籍ですと、まずページ数がやたら多かったりして、基礎的な部分にもページを割いてくれています。

その他、ソフトウェアは海外の方が進んでいるという話を聞いておりましたので、海外の洋書のが案外わかりやすいのでは?と思った次第であります。

無料のC#洋書の比較

Fundamentals of Computer Programming with C#

C# free book、と検索ワードとして打ち込むと直ちに出てくるのがこの本。
1000ページを超える本なのですが、PDFで無料公開されております。

もともとは、ブルガリア語で書かれた本のようで、大学でC#入門者向けに使われていたようです。
その後、順次ボランティアの人々によって、英訳されたらしい。

なので、我々日本人にとって、滅茶苦茶英文が読みやすいです。
高校生で読めるのではないかな、と思います。
そういう点では、お薦めなのですが、とにかく長い。
この長さに打ち勝つ根気がありそうならばやるのもありかと思います。
あと、個人的には、フォントが読みにくいような気がしますね。

最初の方に、どうやってこの本を読む?という章があるのですが、そこら辺の記述はかなり熱かった。
赤線を引きましたが、直訳すると、「練習することなしに、この本を読むことは意味がない

残りを適当に省いて、訳しておきますと、
「本を読むこと自体より、プログラムを書くことに時間を費やせ!
本を読むことだけで、車の運転を学べる奴なんていない!!
運転を学ぶためには、多くの異なるシチュエーションでたくさんを運転することが必要だ。
プログラムを学ぶためには、プログラムを書くことが必要だ!」

図1 Fundamental of Computer Programming with C#の面白い文章

これはあくまで、一例であって、この手の熱い文言が、つらつらと並んでおります。
要約すると、

読むだけではだめ!自分の手でプログラムを書け!!
エクササイズを飛ばしたら、ダメ。章末問題を解かなければ、完全に時間の無駄!!

ここまで言わしめるとは、、、と思いつつも、勉強の仕方はためになりました。
とにかく初学者はプログラムを書きまくった方がいいらしい

 

C# Notes For Professionals

https://books.goalkicker.com/CSharpBook/

全体で785ページあるけど、説明文はほぼなしです。
プロフェッショナルのためのC#ノートと題してあるように、基礎はマスターしてあとはサンプルプログラム見たいという人向けですね。
完全に、サンプルプログラムのみが羅列されております。
こいつを使う事があるのかは、今のところ謎です。。。

間違いなく、初学者には必要がない本です。

C# Programming

https://en.wikibooks.org/wiki/C_Sharp_Programming

wikiで作られた本。全175ページ。
一番最初の方で、クラスとかget, setを使ったプログラムが載っているので、プログラム完全初心者がやる本ではなさそうに思えます。

初めてプログラムやる人にとって、個人的に思う難関はクラスとかの概念だと思っています。
というか、僕は初めてオブジェクト指向プログラミングというものに触れたのですが、クラスとかget,setのあたりは最初は、全く意味不明でした。

未だ完全な理解には至っていませんが、なんとなく把握するだけでも、本二冊のサンプルコードを模写して動かしたり、ネットのコードを模写したりしました。

プログラミング素人にとっては、なんとなく読む気になれない本。

C# Programming Yellow Book

http://www.csharpcourse.com/

C#のビギナー向けに作られた本で、Hull大学のコンピュータサイエンス専攻の一年生が使う教科書のようです。全216ページ。

最初のサンプルプログラムの説明が非常に細かくて、素人の僕でも安心できて良いです。
いちいち、using Systemだけで、項目を作り、説明しています。
その他、void, Mainといった日本の本では一瞬で通り過ぎ去っていくような話でも、図2に示すように、項目化されて説明にページを割いています。

また、サンプルコードも既に打ち込んであるものがアップロードされておりますので、動作確認も容易です。

挫折を避けるために、ここら辺から手を打ってみようかなと思います!
この本でさえ、200ページを超えるので、挫折の可能性はあるかもしれませんが、この本を章ごとにレビューする記事を書いていこうと思いますので、興味ある方はご一読ください。

図2C# Programming Yellow Book 紹介