こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プログラマーの敷居について

プログラミングを学習したく、春から専門学校への進学を考えています。
しかし、情報を集めているとプログラミングにはアルゴリズムというものが必須なようで、更に出てきた単語の並びを見ているとかなり難しい数学的な言葉が並んでいます。
私の数学の理解度は高二程度から全くついていけないレベルだったのですがこのまま入学して授業に着いていけるものか不安です。
プログラマになるには数学の知識が不可欠なのでしょうか?回答お願いします。
また数学は苦手だがなんとかなったという方がいらっしゃいましたら体験談でも嬉しいです。

投稿日時 - 2009-03-03 22:54:05

QNo.4766132

すぐに回答ほしいです

質問者が選んだベストアンサー

私は高校時代からプログラムを組んだりして
雑誌等に投稿などもしていました。
その後、20年以上で何万行、言語数も覚えていない
くらいやりました。
人の作りかけのプログラムを引継ぎ、その時だけ
使った言語というのもあります。

同じく数学はまったく駄目です。高校の進学も難
しいといわれていました。劣等生です。
ただ、数学という言葉は恐れてはいませんでした。
何時も、人に理解出来て私に理解出来ないハズは
無い!と自分に言い聞かせていました。

基礎の基礎は単純です。論理演算のみと言ってい
いでしょう。AND、OR、NOTの3つが基礎ですね。
足し算さえ、これらに分解できます。

ただ、複雑化してくると、流石にこの3つでは時間
が掛かり過ぎて苦しいです。それを効率よく整理
整頓出来るのが数学といっても過言ではないと思
います。でもAND,OR,NOTはポイント、ポイントで
出現します。

例えば、1から100までの整数を100回足す力技より
も、101x50で計算するような、トンチ的な数学が
プログラミングには多用されます。アイデアでなん
とかなるレベルです。

まあ、プログラムすべき要件を如何に効率よくまと
められるか、ということですので、数学も大切ですが、
要件を出すクライアントの気持ちをキャッチする力も
必要です。

また、予測で統計的な手法のもっとも単純な近似値計
算もクライアントから要求されましたが、分からない
ので、計算式と解説のある本を提供してもらいました。
問題を出す方はその内容を知っているのです。
後はデータの入力方法とその数式を使うタイミング、
結果を出力する方法などのプログラム構造の設計です。

まあ、最後は分からなければ、コンピュータに力技で
計算させれば取合えず機能するプログラムは出来る訳
です。そうはしたくありませんが、そのくらいの開き
直りがあれば何でも出来るでしょう。

本当の意味での数学の必要な分野は、構造計算とか、
シミュレーションとか、所謂、科学技術計算の分野です。
ここに入らなければ、数学、恐れずに足らずです。

科学技術計算の連中のコンピュータのサポートをしたこ
とはありましたが、流石に内容は理解できませんでした。
しかし、プログラムミスのサポートなども出来るから不
思議です。プログラム上の提案も結構出来たりしました。
そんなもんですよ。

計算式の内容は分からなくても、それをスーパーコンピ
ュータにかけるためのアルゴリズムは理解出来ましたね。
内容も分からず、高速化プログラミングをやっていました。

こんなことを何年もしていると、情報処理試験の選択問題
を数学にして合格したりするので不思議です。

あなたに送りたい言葉は、マザーテレサの言葉です。
それは意訳すると、「最初に最終理想結果を求めないこと。
できることを1つずつ積上げるだけ。数は1から順番に数
えるでしょう」
つまり数学も基礎の概念から、積重ねるように1つずつ概
念を増やせば良い訳です。人間の行動は積上げですが、そ
の結果、飛躍する手段を入手する、というのが数学の面白
い1つの面です。

投稿日時 - 2009-03-04 01:26:50

お礼

回答ありがとうございます。
要点ばかりを纏めてあり、とても分かりやすく、参考になりました。
マザーテレサの言葉、沁みました。一切の誇張無しに目から鱗の思いです。
正に今までの自分は、まず結果を求めていました。
できる事から一つずつ進めていこうと思います。
苦手なものでも乗り切る気概で挑もうと思います。
最後に、私のためにこんな長文を打っていただいたことにひたすら感謝です。
本当にありがとうございました。

投稿日時 - 2009-03-04 01:57:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

あなたが本当にプログラマを目指すなら
怖がる必要はないと思います。

"アルゴリズム"というとなんだか数学的な雰囲気があるかも知れません。
しかし、誰でも、日常生活で使っていることです。

たとえば、本棚にばらばらに並んだ雑誌を1月号、2月号...の順番に整理した経験はありませんか?きれいな並びは気持ちがいいものですが、それだけでなく、"探しやすい"というメリットもあります。この並び替え(ソート)はプログラムでも頻繁に行われるため、どういう手順が効率的なのか、理解しやすいのはどれかなどいろいろ研究されています。この手順が”アルゴリズム"です.

このように、プログラミングは実はとても身近なものです。
そもそも、人間がやると面倒なことをコンピューターにやらせるわけで、
実は、人間世界とかけ離れてはいないのです。

ただし、その根底には数学があることも事実です。
現在では、各種の"ライブラリ"が揃ってきており、詳しい知識なしでも使えるようになっています。

たとえば、画像の回転などは、本来,"行列"や"三角関数"といった、文系の人はおろか、理系の人でも"できればお世話になりたくない"知識が必須です。しかしOpenCVなどのライブラリを使えば、基本的には角度を指定するだけです。
三角関数は全く出てきません、残念ながら"行列"は出てきてしまいますが、
"行列"に関する深い知識は必要ありません。
"回転"させるには"行列"ってものを使うのだな
この程度で構わないのです。
本来"行列”は普通の数字と違い、"右から掛けるか左から掛けるかで結果が違う"などややこしい性質があるのですが、そんな知識は全く不要なのです。
しかし、三角関数や行列の知識が全く無駄なわけではありません。
ライブラリの能力を超えるような処理が必要になったり、
そもそも、家電用のマイコンなどライブラリのない場所では必要になり、大いに役立ちます。

まとめると
1)高度な数学の知識は必須ではない
2)数式に"アレルギー"があると大変
3)(数学の基礎となる)論理的な思考に慣れる必要がある
4)数学の知識があれば、より幅広い分野に応用が利く

こんなところです

投稿日時 - 2009-03-04 00:09:20

お礼

分かりやすいアドバイスに大変感謝します。
とても参考になりました。
もっと感謝の気持ちを伝えたいものですがいかんせん文才がないもので……
とにかく不安も晴れて、やる気もより一層湧いてきました!!
ありがとうございます。

投稿日時 - 2009-03-04 00:48:39

ANo.1

どういうプログラムがやりたいのでしょうか?

例えば企業用の業務管理システムなどであればプログラムと友にデータベースなどの知識が必要になりますが、On Job Trainingで何とかなるレベルです。
もちろん高速に処理するには数学的にどう組み合わせれば処理ステップが減らせるか、などの追加知識は必要になりますが。
ところがゲームプログラミング、それも3Dなんかになってくるとレイトレーシングその他のためのかなりハードな数学的処理が必要になってくると思います。

後者であれば絶望的と言えるかも知れませんが、
前者であれば「文系の短大卒だけど会社に入ってから仕事しながらプログラム覚えましたー」なんて人もけっこういるので楽観的に考えて良いと思います。

投稿日時 - 2009-03-03 22:59:43

補足

回答ありがとうございます。
ゲームアプリの開発などをやれれば良いかなと考えていたのですが、考え直した方がいいみたいですね……差し支えなければ数学知識が乏しくても向かうことができるプログラムの種類を教えて頂ければ幸いです

投稿日時 - 2009-03-03 23:11:54

お礼

ありがとうございます。
とても参考になりました。
自分は後者なのでもう一度よく考え直すことにします。
回答、本当にありがとうございました。

投稿日時 - 2009-03-03 23:23:33

あなたにオススメの質問