
プログラマーに数学は必須 ? 151
ストーリー by reo
そこそこうまくやりたいのかどうか 部門より
そこそこうまくやりたいのかどうか 部門より
ある Anonymous Coward 曰く、
本家 /. 記事「Math Skills For Programmers — Necessary Or Not?」より。
データベース主導型のサイトを構築するのに線形代数が役立つわけでもなく、昨今のプログラミングで数学的スキルを要することはあまりない。それだけでなく、数学的スキルがなくとも上手くやっていくことだって可能といえる。
しかし、開発者である Alan Skorkin 氏は自身のブログ記事で、開発分野で本当に面白い仕事にありつくには数学的バックグラウンドは必須との主張を展開している。我々の扱うデータセットはより大きくなっており、それとともに数学に主眼を置いたアルゴリズム分析も重要になり、数学スキルは不可欠なものになっていく Skorkin 氏は考えているそうだ。
プログラミングと数学的バックグラウンドについて、/.J 諸兄方はどのようにお考えだろうか ? また、自身だけでなく周りの開発者らをみて思うところなどもあればぜひ。
論理学? (スコア:5, すばらしい洞察)
数学っていうか、数学的考え方は必要だよね。
米国と日本の差 (スコア:4, すばらしい洞察)
微積の定義の部分と、順列組み合わせ程度しか使わんし……どちらかと言うと統計の方をよく使うかな?
# 暗号や乱数を扱う場合は、それなりに勉強する必要があるけど。
notice : I ignore an anonymous contribution.
Re:米国と日本の差 (スコア:2)
学習指導要領 [mext.go.jp]すら確認できないのは一体どんな教育を受けた結果ですか
言ってないことに反論するなよ
数学ができれば何でもできる!!1・2・3・・・n・・・ダーッ!! (スコア:4, 興味深い)
応用数学科出身でして、
今はめっきりクリエイティブやらインタフェースやらコンテンツの人ですが、
数学はやってて良かったと思うことが多々あります。
どう良かったかはそう簡単に伝授できるもんじゃないです。
真言密教のようなもんです。
ゆえに昨今英語を早期教育とする潮流ですが、
むしろ国際的に通用する人材を育てるためには数学こそ早期教育を行うべきで、
実際に個々が業とするかどうかはともかく、
理学の共通言語を身につけ社会的な学力の向上を図るべきだと考えてます。
程度によりますか? (スコア:2, おもしろおかしい)
行列? なにそれどこのラーメン屋?
三角関数? なにそれ浮気したの?
な俺でも今からプログラマになれるですか?
Re:程度によりますか? (スコア:1, すばらしい洞察)
必要になってから勉強して補える分もありますけど、
教科書を読んで理解できるだけの素養がないとだめじゃないですかね。
Re:程度によりますか? (スコア:1)
ゲーム系固有の数学と言えば、状態機械やグラフ探索が浮かぶ。
もっともこれはむしろ学校では普通(高校や大学の教養の範囲)ではやらないけど。
Re:程度によりますか? (スコア:4, 参考になる)
コンピュータ・ビジョンは数学できないと無理ですね。
あと、3Dグラフィックスは数学ばっかだけど。線形代数とか三角関数とか。学部程度?
しかし、事前計算放射輝度伝搬(RPT) [mycom.co.jp]っていうレンダリング技術で、データ圧縮に「球面調和関数 [wikipedia.org]」つうのを使ってるのは正直びびった。
(というより「球面調和関数」によって最初のRPTが実現されたんだと思うけど)
物理とかの素養がある人じゃないとこういう手法を生み出すことはできいんじゃないのかしら?
…と、当時思った。(2003年くらい?)
必須じゃないかもしれないが (スコア:2, すばらしい洞察)
「(知識が)あったほうが圧倒的に良い」と、仕事してて思います。
Re:必須じゃないかもしれないが (スコア:2, すばらしい洞察)
必須ですね
Copyright (c) 2001-2014 Parsley, All rights reserved.
Re:必須じゃないかもしれないが (スコア:2, おもしろおかしい)
あちらのお客様からです。
割と程度の低い会社に居るので (スコア:2)
もちっと仕事しろ採用担当。
#数学が必須では無い仕事現場より。たまに使うけど。
Re:割と程度の低い会社に居るので (スコア:3, 参考になる)
理系の大学では、もっと日本語、特に論文の書き方に力を入れて欲しいですよね。
あとは、その発表。
日本語によって現象を正確に書き表し、それをプレゼンする能力というのは、
営業でもSEでもプログラマ(が、SEに確認する時)にも、すごく役に立ちます。
以下自分語りですが、大学院で修士取ったけれど、
ぶっちゃけ、研究した内容なんかよりも、15回ほど学会で発表した経験の方が、
後の仕事でずっと役に立っています。
Re:割と程度の低い会社に居るので (スコア:2)
効率を求めると (スコア:2)
数学は必要かな~と思います。
普通にデータを整形して投入して~とかだけの作業だとあまり必要はなさそうな気もします。
分野は違いますが画像処理関連だと数学がぜんぜん出来ない私には厳しかった記憶があります。
線形代数は必要なくても (スコア:1, 参考になる)
失敗した先人から一言だけ言わせてもらった
算数ぐらいはできないと困る (スコア:1)
中学校レベルから数学?
------------
惑星ケイロンまであと何マイル?
Re:算数ぐらいはできないと困る (スコア:1, すばらしい洞察)
必要。まずy=x+1 が分からないと話にならないのは言うまでもない。(中一の数学)
それ以上は算数レベルでも大抵できるかもしれないが、
わからない分だけalgorithmが冗長になって
処理速度も記述速度も(場合によって数値精度も)落ちる。
なので数学理解していればいるほど良いコードが書けるはず。
まあ最近の言語は関数が用意されてる場合が多いけど、
関数がありそうだなと考えるくらいの知識は持ってたらいいかもね。自分で遅い関数作っちゃわないうちに。
2+2=6 ? (スコア:1)
4だろう。
Re:2+2=6 ? (スコア:2, おもしろおかしい)
4 が崩れたように見えなくもない。
必要なのは数学じゃなくて習字?
TomOne
Re:2+2=6 ? (スコア:1, おもしろおかしい)
Re:2+2=6 ? (スコア:2, おもしろおかしい)
3進数かもしれないので、11で。
負荷を予測したりとか (スコア:1, すばらしい洞察)
必要なんじゃないの?
Javaだと (スコア:1)
LinkedListとArrayListの違いは理解してないとまずいかもしれないけど。
Re:Javaだと (スコア:2, すばらしい洞察)
自分でアルゴリズムを実装しないとしても、アルゴリズムの特性(ランダムアクセスに弱いとか要素の追加や削除に弱いとか)は把握していないとまずいでしょう。
Re:Javaだと (スコア:2)
標準の乱数アルゴリズムがかなり糞だったのを覚えているので,標準APIを盲信するのも.というか,ソートとかサーチって数学あんま関係ないんじゃ.
あと,Javaだと標準APIで線形代数のクラスがあんまりなくて,かつ決定版的なライブラリもあんまないから(coltはかなり古くさく感じる),逆に数学能力が必要になるんじゃないかと思ったり.
数学なんて必要ない (スコア:1)
Copyright (c) 2001-2014 Parsley, All rights reserved.
プログラマってどこからどこまでじゃろ (スコア:1)
web屋さんで、デザインから設計から何やら全部が決まりきってるものをコードに落とし込むだけの作業をする人は
数学なんていらないっすね。
設計をする人でも数学の知識なんてめったに使わない気がします。
アルゴリズムを数学に含めるか、コード書くだけの人をプログラマと呼ぶかどうか、とか。
その辺の絡みもあるので、ちょっと話が漠然としすぎてるかもっすね~
// 組み込み系とか、コンシューマアプリだと微積使うみたいっすね。会計処理を先輩PGが担当してたけど
// ソース見たところで「ここで何やってるか」なんて、高卒の僕にはパッと見でわからんちー(:^>
仕様書を読み取る事 (スコア:1)
ちゃんとした日本語で仕様書が書かれている事が前提ですが
データベース主導型サイトに必要な数学 (スコア:1)
まずは、JOIN 演算は数学的な概念で、これだけ「学校の数学」で教わるよりは、高校の集合論を習得してから理解した方がいいよね。
あと、皆さん触れてないけど、コンピュータって基本的に有限の値を扱うので、どうしても桁数の概念がなければならない。 32bit でいくつまで入るかとか。 なので、対数の概念は必要だけど、これは対数だけ小学校の算数でやるよりは、足し算、掛け算、指数と高校数学まで来てからやった方がいいよね。
あと、本当は述語論理のドモルガンの法則を理解していると、肯定を計算する方法と否定を計算する方法を比較しながらプログラムが組めて便利。
-- 哀れな日本人専用(sorry Japanese only) --
プログラマに数学は必要・・・なのか!? (スコア:1, すばらしい洞察)
プログラマといっても色々あるから、一概に必要とは言えないと思う。
知っていて損は無いって程度なら分かるけどね。
< 物理も科学(+化学)も国語も英語も知っていて損は無いw
例えば、ハード開発も手がける組み込み系な人の場合には物理学(電気・電磁気)の知識
は絶対にあった方が有利だし、データ解析系な人は数学の知識が必要となる。
でも、Webデザイナやシステム屋さんは国語や英語の知識の方が必要。
目指したいプログラマ像で必要となる知識って変わると思う。
<全部知りたいとなると、時間が絶対的にたりないw
Re:オ・ド・ロ・キ (スコア:2)
業務内容によってはその方面の数学の知識は当然必要になるでしょうが、純粋に「プログラミング」という点に絞るとそう単純な問題でもないような。
「プログラマとして食っていくなら、これはないと話にならんだろ」というのはどのあたりでしょう?
Re:オ・ド・ロ・キ (スコア:2, 参考になる)
定番ですが
良いプログラマは数学を学ぶ、方が良いと思う [dti.ne.jp]
Re:オ・ド・ロ・キ (スコア:2, 興味深い)
Re:オ・ド・ロ・キ (スコア:3, 興味深い)
Re:オ・ド・ロ・キ (スコア:2)
そういえば8086アセンブリのニーモニックでも
MOV AH,CS
みたいに代入のくせにMOVeだもんな。
Re:オ・ド・ロ・キ (スコア:1)
moveならまだいいじゃない
定数ロードやレジスタ間の値の移動だけでなぜか見た目上は演算が必要なoriだのaddiでないならw
(書くときは疑似命令liやlaやmvが使えるが、デバッグのときにはoriやaddiになってしまっている。)
そうなっている理屈はわかるが読みやすいとは言えないw > Mips
Re:オ・ド・ロ・キ (スコア:1)
Re:オ・ド・ロ・キ (スコア:2)
#いや、最初はMOV AH,4Chって書いてたのよ。それだと分かりにくいから替えたら・・・
Re:オ・ド・ロ・キ (スコア:1)
そこらへん、Cのように「変数がメモリ上にあって、そこに値を書き込んでいるから」という、本質的かつ直感的なモデルは分かりやすいですよね。
変更可能だとか名前の束縛だとかよりもずっと。
1を聞いて0を知れ!
Re:オ・ド・ロ・キ (スコア:3, 興味深い)
某大学ではマルチリンガル推奨ということで学部生向きに初歩のJavaと初歩のLisp(Scheme)を同時進行でやってましたが、
私がTAバイトしたときに代入概念へのとっつきの違いで割とはっきりJava得意派とLisp得意派に分かれたのが印象的でした。
代入で躓くと手続き型のコードが書きにくいには自然ですが、面白かったのはLispの時で
代入概念が身についていると代入できないことを不自由と感じLispっぽい書き方で躓くのに対し、
代入概念がなければないでLisp的コードへの抵抗がないようでした。
ちゃんと数えたわけでなく印象ですが、前者には趣味等でのプログラミング経験者が多く、
後者は数学好きが多かったような印象があります。
Re:オ・ド・ロ・キ (スコア:2)
# 「本物のプログラマ」は、SmalltalkはともかくPascalは使わんからなあ…。:-)
真偽のほどは分かりませんが、代入のほうが比較より圧倒的に多いから、タイプが少なくて済むように'='1文字を割り当てた、という話はよく聞きますね。
初学者のバグ原因になりうることとのメリットデメリットのバランスについての評価はどうなのでしょうね。
Re:オ・ド・ロ・キ (スコア:2)
大学の先生の教え方で良くないな。と思ったのは
「右から処理していく」ことを教えないこと。
今まで左からしか式見てないんだもん。
なんじゃこりゃってなりますよ。
後の方でそういう話は出てくるのですが…。
Re:オ・ド・ロ・キ (スコア:1)
人は繰り返し、神は再帰する (スコア:1)
ま、まさか再帰ですか、神よ?
#ところで「人は繰り返し、神は再帰する」って原典どこなんでしょう?
Re:d=a+(b*c) (スコア:2)
バグを防ぐのにも有用だし、たいていの場合は読みやすくもなるだろうし。
上に四則演算以外ならと言ってる人がいますが、私の場合除算でも括弧付けるな。
a=1のときa+2÷5は?って言われると間違いなく1.4と答えるけど、
a+2/5だと\frac{a+2}{5}と思って0.6と答えてしまうかも知れない。
Re:d=a+(b*c) (スコア:1)
# 1 << 2 + 1とか。
1を聞いて0を知れ!
Re:d=a+(b*c) (スコア:1, 興味深い)
1 << 2 | 1 は (1 << 2) | 1 なので 5
罠にはまったね
代数系 (スコア:2, すばらしい洞察)
代数系の概念があると値、型、演算の関係が整理できてクラス設計の見通しがいいというのは、費用対効果的に見て学習コスト高すぎ?
データベース主導型のサイトを構築するのに線形代数が役立つわけでもなく
ところでRDBの「射影」ってまさに特徴空間での射影な気がするあたり、割と線形代数的な話題じゃないの?
(とはいえ、やっぱり費用対効果的に習得コストと役立ち具合が見合わないということかもしれないけど。)
Re:必要条件と十分条件 (スコア:2, すばらしい洞察)