コンピュータ言語を学んで幾星霜、何も書けるようになりません。
むかしLinuxを弄っていたときに、こんな話を読みました。
「XFree86のソースコードを読んで、後々役に立った」と。
また学生時代の同窓生は、先輩のC++のコードをJAVAに直して書いて卒論としました。
書けるようにならないのは、例えばフリーのソフトのソースを読めず、
それ故どう書けばいいのか分からない所為かと思うようになりました。
HTML → C++ → Perl → JAVA → C → Python →VB →VBScriptと来ましたが、挫折しました。
それで読む段階で何をやっているのか分からない事が多いですが、
今回の場合、教科書を理解できるレベルであると仮定して下さい。
その後にソースコードを読んで、C#/JAVA/C/C++に
移植する事で勉強したいと思っていますが、ここで本題の、
どんなプログラムのソースコードを読めばいいのか教えて頂きたく思います。
開発環境はWindows 7 です。必要に応じてUbuntu/Debianでも導入しようかと思っています。
要は、読めるようになれば書けるようになるのではないか、と言う事です。
ご回答お待ちしております。
書けるようになりたいのであれば、
「どのように勉強すれば・・・」等の遠回りの道のりを考えて時間を費やすのではなく、
とにかく書きまくりましょう。必要性に迫られるのが大事です。
例えば、「obcの勘定奉行と全く同じものをVBで作る!!」とか決意してみたらどうですか。
こんな決意をしたら、まず画面を真似ようとしますよね。
本やネットで検索しながら必死で書いてたらそりゃ書けるようになりますよ。
複数サブシステムを記述していく内に、
ERも事前にキチンと考えておかないと必ず破綻することも経験するでしょう。
こんな経験から、SQL Profilerを使用して勘定奉行のERをリバースする事をひらめき、
必死に勉強すればとっくに一人前のDBアプリエンジニアです。
Connectionをオープンにしっぱなしにして実装していく内に、
「かたまっちゃった!!」 → 最大コネクション数に達したんだ・・・
→ コネクションをクローズしなきゃダメなんだ。
→ 1回1回クローズしたら遅いな・・・
→ コネクションプーリングか、なるほどね・・・
てなるでしょう。
大型システムを記述していく内に、
処理の記述の集約の大事さがわかるでしょう。
オブジェクト指向の大事さがわかるでしょう。
いきなり本で「現代はオブジェクト指向が主流」とか学習するのではなく、
何も考えずに書き痛い目を見ましょう。そっちのほうがはるかに良い理解です。
J2EEレイヤの一方通行性の重要さがわかるでしょう。
DAOの重要性がわかるでしょう。
例えばJavaでabstractとかprotectedとか学びましたよね?
本当にその意義を教科書から読み取れますか?
例えば、abstractはフレームワーク側でよく使いますよ。
個別実装の具体的な内容がわからない状態で、フレームワークの処理順序を記述します。
protectedは、個別実装範囲から見えてはいけないもの、
例えばConnection Poolからしか管理させないConnectionオブジェクトとかのアクセス範囲を限定する為に、
よく使います。
それも経験から習得した事です。
読む以前にプログラムを作る必要があるのでないでしょうか
具体的に自分の行いたいことをはっきりさせ
最初は数行でもかまいませんが自分でプログラムを作り
動かし、色んなエラーがでます。
その原因を一つ一つ確認し修正し実際に
目的にかなうように動かしてみる
この作業を繰り返してみてください。
この基礎体力が身についた上で、参考になるプログラムの
ソースを読むことです。
実際に、プログラムのコーディング行い
エラーに遭遇し、そのエラーを自分で教科書を確認しながら
修正した経験無しに他のソースプログラムを読んでも分かりません
自分で動くプログラムを完成させたら、自然と次にすることが
分かってきます