トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

プログラミング

プログラミングは、 専門に勉強したプログラマーしかできないようなものではありません。 大工の修行をしなくても、 ノコギリで木を切れるようなものです。 売り物のソフトウェアを作るのなら、専門的な勉強が必要かもしれませんが、 データ解析の補助にちょっと使う程度のものなら、そんなに敷居は高くありません。

自作のプログラムというのは、小回りの良さと、 応用範囲の広さが既製品の比ではありません。

多くのプログラム言語は、コンパイラの入手やセットアップが必要ですが、 Excelが入っているパソコンなら、 VBA はすぐに始められます。 ツールバーの中の「ツール(T)」の中に、「マクロ(M)」があります。 マクロを書くための言語がVBAです。

アルゴリズム

プログラムを書く時には、「まず、これを計算して、計算結果を次にこうやって加工して、、、」、 と言った手順を考えます。 こうした手順のことを、「アルゴリズム」と言います。 このサイトでは、 遺伝的アルゴリズム が、アルゴリズムの一種です。

同じ計算結果を出すとしても、 アルゴリズムの優劣によって、プログラムの長さが大きく変わったり、 処理時間が大きく変わることは、プログラミングの世界では常識と言えるかもしれません。

一般的には、大量のデータを分析する時には、 統計学 の知識が中心になると考えられることが多いようです。 しかし、筆者の経験の範囲で言えば、統計学は最後の仕上げや、添え物のような役割が多く、 中心になるのは、アルゴリズムのように思います。

論理学

プログラムを実際に書く時には、andとorの使い分けや、ifを使ったりなどで悩みます。 これを間違えると、変な動きをするプログラムになってしまいます。

プログラムを書く時のこうした物の考え方は、 論理学 として古くから研究されて来ています。




参考文献

プログラマの数学」 結城浩 著 SBクリエイティブ 2018
数学を使って、効率的で確実なプログラミングをするための方法を説明しています。
論理は、2分割で解いていくためのもの。
剰余(割り算の余り)は、グルーピングに使う
数学的帰納法は、無数のドミノを倒す方法
順列と組み合わせは、数えずに、もれなく数える方法。
再帰は、自分で自分を定義する方法
2分割の繰り返しは、簡単に莫大な数になる。この指数的爆発の性質を、高速な探索に利用するのがバイナリーサーチ。


アルゴリズムとデータ構造」 藤田聡 著 数理工学社 2013
文字探索、ソーティング、樹木構造等のアルゴリズムを解説しています。


ここからはじめるプログラミング」 瀬戸村勝利 著 日本実業出版社 2000
プログラミングの考え方や言語の種類について、基本を一通り学べます。 実際に何かの言語を触りながら読まないと、漠然とした内容に見えるかもしれません。 人工知能 等の先進的なプログラミングも紹介されています。


プログラムはなぜ動くのか」 矢沢久雄 著 日経BP社 2001
プログミングの根本的なところが、 ハードとの関係にも触れつつ、読み物風に書かれています。 本職のプログラマーでなければ、 この本の内容を知らなくてもプログラミングで困ることはないと思います。 知っていると、たまに役立つ知識です。



順路 次は プログラムの読み書き

データサイエンス教室