>プログラミングの適性について

>プログラミングには適性がある、とよく言われる。


これを聞いて、”適性”という言葉の意味を辞書で調べてみた。
     ”適性”   :性格や性質が、その物事に適していること。また、その性格や性質。
     ”適する”:それにふさわしい素質や能力がある。
     ”素質”  :生まれつきもっている性質。


とりあえず適した能力があるか、ってことですね。


これは正しいか……と聞かれると答えられない。
自分がプログラミングを勉強したときのことを覚えていない。誰かに教えられたのか、独学だったのかもわからない(まぁ教えてくれる人は近くにいなかったはず)少なくともその時は”適性があるか”なんて考えずにプログラミングを勉強していた。


後輩を見ていて、「この人はプログラミングに向いていなさそうだ」と思うことがたまにある。根拠はわからない。でも、何となく感じる。


プログラミングは、覚えてしまえばだれだって書ける。もっと言うならば、ネットから誰かのプログラムを探してコピペすれば小学生だって作れる。
でも、そんなプログラミングに意味はあるのか?
数学や物理の問題で、公式だけ覚えて問題がとけるか?似てるんじゃないかなと思う。もちろん覚えれば基本的なことは機械的に解決できる。でも、それ以上伸びないと思う。


僕が思うに、ロボカップレベルのアマチュアのプログラマに必要なのは”やる気”と”発想力”だと思う。


プログラムの基礎というか、根幹のシステムをある程度理解してからでないとプログラムは発展できないと思う。また、C言語を始めたばかりの頃はCUIで文字を表示させる程度のことしかできなくて、ゲームを作りたいとノリで思っただけの人はよく飛ばそうとする。そしてコピペだけの世界に入っていく。
アマチュアといえど、そんな人をプログラマと呼んでいいものか?
そこに耐える、耐えてまでやり遂げようとする”やる気”が最も必要なのではないでしょうか?


発想力については、
僕らアマチュアの世界では、新回路の設計は非常に難解なので、確立された回路をつなぎあわせて設計していきます。それに比べてプログラミングは著作権も存在するほど、クリエイティブな仕事です。なので、発想力はある程度必要だと思います。
与えられた条件から、目的の事をなす。発想力がなければ厳しいかもしれません。でも、これも発想力だけあってもプログラムの根幹、つまりコンピュータの得意/不得意を理解していたほうが圧倒的に有利であり、暗記している人に勝てる大きなポイントでもあります。


故に僕は、
ここまで”適性”という言葉で語られてきた事柄は、”プログラミングに臨む態度”ではないかという結論に達しました。
嫌になりそうになっても飛ばさずに、最初からきっちりやってこそ理解し、応用力のある能力を身につけることができる。そう思います。少なくとも僕は。

>プログラミングの経験

>最近後輩にプログラミングを教えています。

そこで今日は少し課題を出してみました。内容は、フィボナッチ数列を羅列する、です。

まず僕の作ったプログラムは

#include <stdio.h>

unsigned long a,pa,ppa;

int main(){
pa=1;//n=1
ppa=1;//n=2

printf(“%d \r\n”,ppa);
printf(“%d \r\n”,pa);

while(1){//3項目以降
a=ppa+pa;
ppa=pa;pa=a;
printf(“%d \r\n”,a);
}
}

こうなっています。

そして後輩が作ってくれたプログラムは

#include <stdio.h>
int main(){
int a;
int b;
a=0;
b=1;
printf(“1″);
while(1){
a=a+b;
printf(“%d \r\n”,a);
b=a+b;
printf(“%d \r\n”,b);
}
}

でした。

Tabによる段落分けや改行による部分分けというのは置いておいて、
僕はついつい書き換えやすいように/考え易いようにほぼ漸化式そのままでプログラムを書いてしまいました。

しかしプログラム自体は後輩の方が短いです。
書き換えにくいかもしれない、でも変数の数が少なくてメモリ使用量も抑えられていて、発想力に少し感動させられました。

どちらのプログラムのほうがうまいとは言えない、課題を出したものとして少しきまずい瞬間でした。

>プログラムレッスン その2「プログラムの作成」

>とりあえずプログラムを作ってみましょう。

まず、VisualC++を起動します。
デスクトップにショートカットアイコンは出来ていないはずです。
場所はインストールしたフォルダ(普通はC:\Program Files)の中の
Microsoft Visual Studio 10.0\Common7\IDE\VCExpress.exe
です。

起動すると「スタートページ」が開くので、左の方の「新しいプロジェクト…」をクリックします。

すると新しいウィンドウが開くので、その中から
「VisualC++\Win32\Win32 コンソールアプリケーション」を選択して、
自由な名前とソリューション名を入力して「OK」を押してください。
名前が<名前を入力してください>のままだとエラーが起こります。

すると今度は「Win32アプリケーション ウィザード」が開きます。
ここで注意点です。
開いたら左のタブから「アプリケーションの設定」を押して、
「追加のオプション」の「空のプロジェクト」にチェックを入れてOKを押してください。
チェックを入れ忘れると謎のプログラムが自動生成されてしまいます。

そこまでできたらソースコードの作成に移ります。
左に「ソリューションエクスプローラー」が出ていますよね?出ていなければ上のタブ→表示で表示させてください。
表示されたらソリューションを展開します。
「ソースファイル」「ヘッダファイル」「リソースファイル」
というフォルダが出るはずです。
そのうちのソースファイルの上で右クリック→追加→新しい項目をクリックします。
今回はVisual C++の中からC++ファイル(.cpp)を選択します。名前は何でも構いません。
決まったら「追加」をクリックです。

ようやく空のソースファイルができました。

とりあえず

#include <stdio.h>
int main(){
     printf(“Hello World!”);
     while(1);
}

と中にコピペしてみましょう。そしてF5をポチッ
写真のようになれば成功です。


プログラムの内容はあとに置いといて、
今回はここまで!














※2011/4/1追記:#includeの後のstdio.hを記述し忘れていたので修正

>プログラムレッスン その1「プログラミングの準備」

>さて、プログラムを始める準備を始めましょう。

Macintoshユーザーの場合はコマンドラインからCのプログラムを書けるのですが、
Windowsでは書けないため、自分でインストールする必要があります。

まず、ここから”Visual C++ 2010 Express”をダウンロードしてインストールして下さい。
インストール方法までは解説しませんが、
初期設定のままで結構です。「次へ」だけ押していけばいいかと思います。
Dドライブにインストールする場合、Cドライブに2GB以上かかると言われますが、実際はそんなにかかりませんでした。「容量が足りません」というメッセージは少々ならば無視してもいいかと思います。

インストールしたらまず初期設定
と普通ならなりますが、Visual C++の場合、初期設定は必要ありません。親切ですね。
「とりあえず今は」ですが。ライブラリの追加などは後で順を追って説明していこうと思います。

これで下準備は完了です。
では、今回はここまで。

>プログラムレッスン その0「プログラミングの本質」

>プログラミングって、文字を打つのは分かるけど、
どうしてアルファベットを組んだ打つだけで思い通りにパソコンが動いてくれるのか
考えてみるとわからない人も多いはずです。

これから解説するC言語というのは、
人間と機械がコミュニケーションを取るためのプロトコルの一つです。

機械は常に
0010111010010001
というような数字によって動いています(機械語という)
これは機械同士は通信できても、人間には無理ですよね?


そこで人間にも通信することを可能にするための方法として、C言語というものが作られました。


Microsoftのページから評価版なら無料でダウンロード出来るのですが、
C言語の開発には「コンパイラ」というものが必要です。


コンパイラとはC言語等によって書かれたプログラムを機械語に書き換える働きをもつものです。(この操作をコンパイルという)


そのコンパイラがあるので、人間の作った文字列でもコンパイラによって機械語に変換されて、機械上で動作することができるのです。


何となく分かって頂けたでしょうか?