プログラミングを身につけるためのヒント

 

I.O.のコメント

  私の研究室のメンバーでプログラミングができないまま卒業・修了していく人はいない。 もちろん、プログラミングだけできてもダメだが、当然のこととしてできるようになるべき能力の一つである。 研究室に入る時点では、1−2年次の授業・演習程度の経験しかない人も多いが、1年で結構できるようになる。 研究室で使う実験や解析のためのソフトウエアはほとんど内部で自主開発したもので、各自が自分の研究プロジェクトのため、 機能の追加や改変を積み重ねていくことで、全体のシステムができあがっている。現在、研究室ではソフトウエア開発環境として、 Visual C++, C++ Builder, Matlab, Xcodeを主に使用している。言語としては、C, C++, Matlab, Objective-C等が主なところで、 OS環境としては、Windows 2000/XP, MacOS X, FreeBSDを使用している。

  プログラミングの本は何か必要だとは思うけれど、そうした本を読み通すことを目標にしてはいけないと思う。 僕は特に自慢ではないけれど、プログラミングの本をまともに読んだことはない(読み物的であれば読むかも)。 授業の演習問題等のにプログラムを作ったことのある人であれば、 できるだけ早く「こんなことをするプログラムを作りたい」といったプロジェクトを自分で見つけて (あるいはプロジェクトのアイデアをいろんな人に聞いて)、 それを実現するようにしたほうがよい。もちろん、全く知らない言語であれば、本の半分くらいまではまず読むこともあってよい。 世の中の数あるWebサイトには様々なプログラムのソースコードやサンプルコードが置いてある。 自分のやりたいことに近いことをしているプログラム例、あるいはその機能の一部を実現している例を見つけてきて、 それを書き直していくことから始めればよい。 それをやっていて行き詰まったときに、Webサーチや本のお世話になればよい。 実際に実のあることをするプログラムを作ってみなくては、いくら本を読んでも無理。

  C, C++をまだ良く知らないのであれば、あまり最初からWindows APIにどっぷり浸からない方が良いと思う。 標準のC, C++の関数がある場合はそちらを使っておいたほうが良い。(デスクトップは >95% Windowsであるとしても、 世の中のシステム、特に人の命にかかわるような本当に大事なシステムはWindowsではない場合が多い。 Los Angeles空港周辺の航空管制無線システムに使われていて2004年に大変なことになったケースは記憶に新しい。) 君たちがWindowsのプログラムしか作れないようでは、僕としては悲しい。また、 Career OptionとしてゴマンといるWindows Programmerの一人になるのが、賢い選択とは思わない。 日本ではIT関連の仕事の外国への流出はまだそれほどでも無いが、 アメリカのプログラマ、アナリストなどの状況がどうなっているかを見て、よく考えておくと良い。 プログラミングだけで食べてゆこうなどとは決して思わないように。 君だけにしかない他の能力を同時に身につける努力を忘れないように。 余談だったが、可能性としては、Windows環境で走るプログラムを作ることを目標にせず、 Webブラウザで見るページを動的に作り出すプログラムも大変おもしろいし、全てのコンピュータで使えるプログラムにすることもできる。 例えば、Webサーバ側でCで書かれたプログラムにより、ブラウザ上にグラフを表示したりすることができる。 また、下記の「その他」にあるPHP等を利用してみるともっと簡単に多くのことができる。 大きなプロバイダーのホームページサイトではPHP等を使えるところは少ないが、 小さなWebホスティングサイトではPHPやその他の機能が当然のこととして使えるところが多くある。 プログラミングの学習が主目的であれば、XSAS等(下記参照)を使えば簡単に自分のWindows PC上でこうしたサーバの環境を準備することもできる。

  以下に、研究室メンバー(主にスタッフと院生)からのアドバイスをまとめた。 これらのアドバイスについて、僕自身が見たことも無い本も多いし、 上にも言ったように何しろまともに読んではいないので何も保証はできない。フリーアドバイスとしての参考程度に考えて欲しい。


 

C, C++

『入門C言語』 オーム社 : http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06332-1

薄くてすぐ読めます。 いきなり辞書並みに分厚い本を読もうとするとしんどいor挫折するのは目に見えているので、 最初は薄い本から入るほうがいいと思います。 というか、細かいことはgoogleやmsdnで調べられるので、これ一冊で十分とも思います。 昔はアスキー出版から出ていたものが改訂されたものです。 [KS]

『C言語によるプログラミング(基礎編、応用編)』 内田智史 オーム社

内容が網羅的、ポインタの高度な使い方など授業の演習でやりきれなかったところを補ってくれている。[HT]

『独習C』 ハーバート シルト (著), Herbert Schildt (原著), トップスタジオ (翻訳), 柏原正三 とその姉妹本『独習C++』

言語を習得する際には何でもいいので3冊ぐらい入門書を買って (借りて)きてそれぞれを比べながら読むのが上達の近道だと思います。[SN]
『独習C』の利点ですが、1冊で完結していることと、 プログラムの例が非常に多い。 初心者はプログラムの仕組みや関数を勉強しても実際にプログラムを組まないと完全に理解することが難しいので、 『独習C』に書かれているプログラムの例を見る、 または実際にパソコンでやってもらうとより理解が進むと思います。 [MF]

『DDJ Selection 憂鬱なプログラマのためのオブジェクト指向開発講座 C++による実践的ソフトウェア構築入門』 http://www.seshop.com/detail.asp?pid=108

読み物としても読みやすい。C++言語仕様の解説のみならず、オブジェクト指向とは何なのか、 どういう利点があるのかをわかりやすく説明してあります。 [KS]

『プログラミングの禁じ手Web版 C言語編』 http://www.cmagazine.jp/src/kinjite/c/index.html
『プログラミングの禁じ手Web版 C++編』 http://www.cmagazine.jp/src/kinjite/cpp/index.html

コーディングをする上でやってはいけないことがまとめてあります。 学部3年生向けというよりは、研究室に入ってからの実践向けかな。 [KS]

Free C, C++ Compilers and Interpreters: http://www.freeware-guide.com/dir/softdev/ccomp.html

研究室のメンバーであれば、MSDNアカデミックアライアンスに研究室として加入しているので、 基本的にWindows用のソフトウエア開発に必要なツールは自由に使える。 メンバーで無くても、上記の通り少なくともC, C++ Compilersについては数多くの無料版が存在する。 MacOS XシステムにはXcodeというプロレベルのソフトウエア開発が可能な開発環境が付属している(別にインストールが必要だが)。[IO]

 

Windows プログラムの開発, Visual C++

『作ってわかるVisual C++6.0』, 清水 康晶 (著), 秀和システム

が動くものを作りながら勉強できるという点で良いと思います。ただ6.0についてのものなので今から勉強するには少し古いかも。 [SN]

『Visual C++6.0プログラミング入門』、アスキー  桜田幸・田口景介

プログラム実行時の流れ(フレームワークとユーザープログラムコードの相互作用)、基本的なドキュメント、ビューアーキテクチャーがわかりやすく書かれている。[HT]

『新 Visual C++ 6.0入門 ビギナー編、シニア編』 ソフトバンク 林晴比古

扱う範囲が広く、例題がとても豊富 [HT]

『Visual C++の勉強部屋』, http://homepage3.nifty.com/ishidate/vcpp.htm

が扱っている内容的にも参考になるかと思います。(DCT、微分方程式の数値解法、カオス、フラクタル、各種画像処理に加えなぜかニューラルネット(backpropagation)の話まで)。ただしこちらも基本的に対象は6.0。 [SN]

『Win32API完璧マスタ―Visual C++プログラミング』 プログラミング入門シリーズ 土井 滋貴 (著), 上田 悦子 (著), 那須 靖弘 (著) 出版社: CQ出版 ; ISBN: 4789836908 ; (2001/02) [TS]

『プログラミングWindows第5版〈上、下〉』 Microsoft Programming Series チャールズ ペゾルド (著), Charles Petzold (原著), 長尾 高弘 (翻訳), ロングテール (翻訳) 出版社: アスキー ; ISBN: 4756136001, 475613601X ; (2000/10)

両者ともサンプルが充実しています。 MFCに関しては何も書いていませんが、SDKプログラミングの大抵のことは載っています。[TS]

『猫でもわかるプログラミング』 http://www.kumei.ne.jp/c_lang/

Windows SDKの解説は詳細かつ、親切です。C,C++もあります。 [KS]

 

MacOS X プログラムの開発

視覚科学のためのMacOS Xプログラミング Intro &Tutorial: http://ohzawa-lab.bpe.es.osaka-u.ac.jp/resources/cocoa1.html

プログラミングの細かいことはあとで各自調べるとして、できるだけ速くグラフのプロットなどをするMacOS X Cocoaのプログラムをかけるようにするための、 2005年度はじめに研究室内チュートリアルで使った教材。解説は日本語のPDFになっている。Objective-Cなどは30分あれば、とりあえず必要なことは理解できる。 [IO]

Apple Developer Connection Sample Code: http://developer.apple.com/samplecode/index.html

Core FoundationとCocoaから始めて、あとは好みにより追加していけばよい。 [IO]

Happy Mac Developing TIME! : http://homepage.mac.com/mkino2/index.html, 特に
Cocoa Programming Tips 1001 : http://homepage.mac.com/mkino2/cocoaProg/index.html

名前とスタイルが変なサイトだけれど、内容は非常に充実していて素晴らしい。このサイトのオーナーは同名の本も出している。 Macのプログラムを新しく作るのなら、Cocoa 以外のAPI環境の使用はよほどのことがない限り考えるべきではない。 Objective-Cというあまり聞かない言語が主として使われ、現在のところ実質的にMacだけがターゲットということで、 いやがる人は多いが、C++等に比べるとはるかに習得しやすい。 Cを知っていれば、言語の壁は無いといって間違いない。 研究に使うプログラムを作る際に、どのOSを使うかの選択では別に一般のMarket Shareを気にする必要は無い。 ソフトをたくさん売って儲けようというわけではないのだから、OS環境がアクティブに存続さえするなら、1%でも2%でも構わない。 むしろ、高機能の信頼のおけるプログラムを速く作れるかどうかのほうが重要で、 それをメリットだと思うかどうかだけのことだと思う。 また、MacOS Xは基本的にUnixなので、X-Window/X11のお荷物がないUnix系のプログラムはほとんど全てそのまま使える点がよい。 (MacOS X用のX-Window/X11も有るけれど、 僕は入れていないし、X11に依存するソフトウエアの開発はやめておいた方がよい。 既に有るX11ソフトの使用にとどめるべき。) NeXTのプログラムを1989-1995に作っていた者としては、AppleがNeXTを買収し、 NeXTの遺伝子がAppleに移植されるという展開になったことはうれしい。 ソフトウエアのユーザであり開発者でもある研究者のための環境としては、MacOS Xは現在最も快適なシステムだと思う。 念のため付け加えると、MacOS Xが良いのであって、MacOS 9とそれ以前のシステムはとても使う気にはなれなかった。 [IO]

O'Reilly MacDevCenter : http://www.macdevcenter.com/

 

Linux, FreeBSD, other Unix

これらの環境はDesktop・LaptopのOS, 研究用のGUIアプリケーションのプラットフォームとしては使うべきで無いと思う。 ただし、GUI等を介して直接触れることのないサーバ、組み込みシステム用途には最適である。 これらのシステムの管理、プログラム開発はMaxOS XからsshやRBrowser等によりネットワーク経由で行うのが最も快適である。 当研究室では、サーバにはFreeBSDとMacOS X Serverを使っており、原則としてWindowsはサーバ用途には使用しない。 Desktop, laptopにはWindows 2000/XP, MacOS Xを使用している。 [IO]

 

数値計算、グラフプロット環境、数式処理

Matlab : http://www.mathworks.com/

モデルシミュレーション、データの解析、グラフのプロット作成などでは最近はMatlabが非常によく使われる。 ライセンス料金が高いので、学生が個人で買うには適していないが、 理系であれば将来必ず使うことになると思っておいた方がよい。[IO]

Mathematica : http://www.wolfram.com/products/mathematica/index.html

 

その他

PHP : http://www.php.net/

XSAS : http://xsas.sourceforge.net/, XSAS/XCP日本語サイト

 

 

 

 

 

 
© Copyright 2004-2005 Ohzawa Lab. All Rights Reserved.