将棋とプログラミング

将棋の学習記録とプログラミングの創作記録

プログラミングの学習について思う事

今、Javaの復習してるんだけど思った事があるので書きます。

私はプログラミングには適性があると思うから出来ないと思ったら無理しない方がいいと思う。

よく聞くのが数学に馴染みがあると、「a = a + 3;」とかいう代入演算子を使った構文に違和感を感じちゃうみたいな話。

初学者がプログラミングを学ぶなら言語はC言語Javaか何かのスクリプト言語がいい気がする。

何かのスクリプト言語っていうのは、JavaScriptPerlPHPPythonRubyとか。

まぁ、Pythonでいい気もするけど、私はスクリプト言語にあまり詳しくないので、スクリプト言語については言及しません。

という事でC言語Javaのどっちかって事になるんだけど、なぜこの二つの言語を勧めるかというと、これらの言語は厳格な記述が要求されるから。

スクリプト言語だと変数の型も無いし、知識が求められたりするから曖昧な理解になりやすい。

その点、今あげた言語だと逐一処理を考えなきゃならないからプログラミング能力の向上にはうってつけ。特にC言語はそういう意味合いが強い。

じゃあC言語でいいじゃんって思うかもしれないけど、C言語Javaにはそれぞれ鬼門がある。

両者ともまず基本構文を習うんだけど、その後、C言語にはポインタ、Javaにはオブジェクト指向っていう関門がある。

プログラミングの基本構文を第一関門とするなら、ポインタとオブジェクト指向は第二関門って感じ。

基本構文が理解出来なくてつまずく人も結構います。

なのでまずC言語でプログラミングの基本構文を習ってみて、そこまで進んだらポインタに挑戦してみるってのを勧めます。

ポインタを学ぶ時は結構気合い入れて集中した方がいいです。

ポインタが理解出来ると、値渡しと参照渡しが理解出来るのでJavaにも応用出来ます。

個人的にはC言語よりもJavaの方が抽象的な思考が求められるからまずC言語で構文を覚えた方がいい気がする。

C言語は基本構文は簡潔に表現出来るからおすすめ。フローチャート(PAD)の延長だと思ってもらっていいと思う。

だから、最初はフローチャート(PAD) → C言語の基本構文って流れで学習すればいいと思う。

あと、C言語の学習書の良書が私が見た限り、見当たらないので何を習ったらいいか書いておく。

C言語で習うべき項目

(↓まず基本から)
基本構文 構造体 関数(引数、返戻値) 変数の型 ポインタ
(↓ステップアップ。ここまでは理解してほしい)
回数制御 後置演算子 グローバル変数 文字、文字列 ポインタのポインタ(多次元配列) その他の色々な演算子や変数(ここでは省略します)
(↓覚えておいて損はないがプログラミングの本質とは離れる部分)
コマンドライン引数 分割ファイル Makefile ファイルI/O エラーチェック
(↓基本構文を応用した色々なアルゴリズム)
アルゴリズムとデータ構造(ソート、再帰、線形リスト、木探索など色々なアルゴリズム)

共用体、関数ポインタは習う必要無し。というか私も習ってませんが特に問題ありません。

Javaで習うべき項目

基本構文 オブジェクト指向(Javaではこれが一番大事)