++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

プログラミング学習

leave a comment »

僕個人はC# によるプログラミング入門なんてもの書いてるわけだから、当然、C# が最初であるべきと思ってます。

けど、最近ちょっと思うのは、最初に学ぶべきは言語じゃなくてモデルじゃないかなぁと。(ここで言う「モデル」は、プログラミングモデルね。)

言語を教える、すなわち、それはあまり良くないと思ってる教え方ってのは:

  • C言語には変数というものがあります
  • C言語にはif文というものがあります
  • C言語にはポインタというものがあります

って感じ。

で、モデルを教えるってのは:

  • 記憶モデル(レジスターとかメインメモリー)ってのがあります
    • だから、プログラミング言語には変数ってのがあります
    • 数学の変数と違ってmutable(プログラミングの変数はメモリアクセスをモデル化したもの)
  • 構造化モデル(フローチャートで書けるような処理の流れ)ってのがあります
    • それをテキストベースで書けるようにしたのがifとかwhileとかです
  • コンパイル時と実行時、ヒープやスタック、参照ってのがあります
    • だから、C言語みたいなのではポインターを使います
    • 今時の言語には参照型ってのがあります
  • オブジェクト指向というプログラミングモデルがあります
    • クラスや継承
  • データ操作には、選択、射影などを使うモデルがあります
    • LINQ

となる。

CとかC++は、「要らぬ苦労」が多かったり、大昔の悪習が残りすぎてて、モデルを教えるのに向いてないんですよねぇ。

「Cは比較的低級な言語だからCを学ぶことでコンピューターの内部の仕組みが分かる」って意見にも反対。そっちに使うには、Cは中途半端に高級すぎるんで。そういう目的なら、ちゃんと計算機アーキテクチャがどういうモデルで作られてるかを教えて、アセンブラーでも触らせればいい。

Written by ufcpp

2009年10月9日 @ 00:06

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。