パスワードを忘れた? アカウント作成
5985545 story
教育

プログラマーで実際に数学を使っている人ってどれくらいいるの? 192

ストーリー by headless
計算 部門より
eggy 曰く、

本家/.記事「Ask Slashdot: How Many of You Actually Use Math?」より

私はコンピューターサイエンスやゲーム開発に関連する仕事に興味のある高校生で、先生や両親からテクノロジー関連分野に進むなら数学クラスの選択が必要だといわれています。しかし、私はUnity3DやOGREを2年以上使っており、プログラミングはそれよりも長く続けていますが、高校1年で習った三角法よりも高度な数学が必要になったことはありません。それで疑問に感じたのは、実際に微分積分以上の高等数学が必要になるのか、それとも「プログラムを書くのには数学が必要」と世間で思われているだけなのかという点です。みなさんの経験をお聞かせいただけますか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 数学がいる例 (スコア:5, 参考になる)

    by jsi (25633) on 2012年08月12日 19時29分 (#2210858)

    FFTによる多倍長計算の高速化
    スペクトラムと乱数
    テンソルと画像処理
    信号処理と微分積分
    暗号と強度
    高信頼プログラムと論理学
    2D/3D, 座標変換(アフィン写像とか)と三角関数
    自然現象の解析と分布および非線形性
    3Dとガロア体
    通信と符号理論

    「数学がいらない」とかいう認識であるうちは、世界をリードする技術要素となるテクノロジを生み出すシリコンヴァレーのようなベンチャ企業はでてこないと思ってるけどなあ。

    • by funakichi (28497) on 2012年08月12日 20時19分 (#2210884)

      画像処理と応用範囲はオーバーラップしてるけどコンピュータビジョン(顔認識とか)や機械学習にはまた別の数学分野が必要ですね。

      「数学がいらない」とかいう認識であるうちは、世界をリードする技術要素となるテクノロジを生み出すシリコンヴァレーのようなベンチャ企業はでてこないと思ってるけどなあ。

      同意。
      ずっと3Dゲームエンジン作る際に線形代数とか使ってましたが「事前演算済み放射輝度伝播」というレンダリング技術がSiggraphで提案された時(もう十年以上前か)、量子力学とかで使われる「球面調和関数」を使ったと聞いたときはのけぞりましたねぇ。

      親コメント
    • by Anonymous Coward on 2012年08月12日 20時20分 (#2210885)

      待ち行列理論とキャパシティプランニング
      グラフ理論応用(ソーシャル、ルーティング、セマンティックデータベース/RDF)
      ゲーム理論

      あたりもかじっておいて損はなさそう。

      親コメント
  • by superito (40119) on 2012年08月12日 19時58分 (#2210869) 日記

    数学の問題風に書いてみると

    問1
    2点(x1,y1)(x2,y2)を通る半径 r の円弧を描きなさい。
    二通りありえるが、半径の符号で区別するものとする。

    問2
    点(x2,y2)から円弧になめらかにつながる長さ l の直線を引き、その端点の座標(x3,y3)を求めなさい。

    「なめらかにつながる」という事はそこで元の曲線の傾きが必要になります。つまり円の方程式を微分することが求められます。

    種明かしをすると、工業用ロボットのアームの軌道計算でした。

    問1は、要するに凸と凹のどちらかになるわけですが、実機に数値を入力するときにいちいち判定するのが面倒なので、半径に負の値を入力したら単純に逆にしてくれ、という要望があったらしいです。

    実際には「お前が一番最近まで学生だったんだからやれ」と言われて式を計算しただけで、実際のプログラムは上の人がやってたので、あまり偉そうなことは言えないんですが(汗)、数学が必要かどうかというよりは、どこで役に立つかわからないよ、という話でした。

  • 教育 (スコア:4, すばらしい洞察)

    by Anonymous Coward on 2012年08月12日 21時42分 (#2210928)

    中高生に「〇〇って役に立たない。勉強する必要あるんですか?」って訊かれて、
    「〇〇だから役に立つ」とか「俺は〇〇で必要になった」とか答える人は残念ながら愚直と言わざるを得ない。。
    こういった言葉の裏にはたいてい「勉強したくない。しなくていいですよね?」という意味が隠れている。
    質問に素朴に答えたところで「〇〇って役に立つのか!頑張って勉強するぞ!」なんていう学生はまずいない。
    このタレコミを見てまっさきに数学が役に立つ例を探してしまった人は気をつけたほうがいい。
    理屈っぽい男性に多いタイプだから、プログラマやソフトウェア開発者は特に。

    Webサイト上では無理だが、実際に口頭でこういう相談をされたら、質問の答えを考えるより
    うまく相手の悩みを聞き出してストレスを取り除いてやることのほうが重要になる。
    また、勉強することそのものを褒めてやったり、
    役に立つかどうかではなく勉強に楽しみを見いだせるように誘導してやるほうがはるかに効果があるだろう。

    (もちろん、件の高校生のことなんかどうでもよくて、
    単にプログラミングで数学が役に立つ例だけ語り合いたいだけの人はそれでもいいが。)

    • Re:教育 (スコア:4, すばらしい洞察)

      by fcp (32783) on 2012年08月12日 22時49分 (#2210956) ホームページ 日記

      Webサイト上では無理だが、実際に口頭でこういう相談をされたら、質問の答えを考えるより
      うまく相手の悩みを聞き出してストレスを取り除いてやることのほうが重要になる。

      質問者は質問にある以上の疑問を持っているだろうとは僕も思う。けど、だからといって聞かれた質問の答えを考えもせずに質問者の悩みだけを取り除けると思っているような高慢な大人は、なんというか、僕は好きじゃない。まあ人それぞれだけど。

      親コメント
  • 簡単なことだ (スコア:3, すばらしい洞察)

    by okky (2487) on 2012年08月13日 0時45分 (#2210987) ホームページ 日記

    「知らないことについては、その必要性すらわからない」
    知識は、「使ったことがないものがたくさんある」ぐらいで調度良い。

    --
    fjの教祖様
  • アルゴリズム自体は先人の作ってくれたものでいいとして、みんな何を根拠にアルゴリズム選択してるの?

  • by saitoh (10803) on 2012年08月13日 11時30分 (#2211104)
    自分が作るプログラム(の部品)が、入力量にたいしてどれだけの処理時間/メモリ消費量になるのか。 そういうのを留意しながらプログラムを作るならば、多項式、対数、指数関数、数列の和(の概算につかう積分)、あたりはそこそこに使えないとマズイと思うんですけどね。 それと、2進数も高校数学の範囲内。

    数論とかλ計算を理解するためには、高校レベルの数学は一通りえり好みせずに勉強しておいた方が良い。

    あと、ここの数学問題を解く能力と言うより、数学的に問題を捉える脳力(typoではありません)がプログラミングには重要だと思う。スポーツ選手がランニングしたり筋トレで体力筋力をつけるのに似て、数学は、プログラマの基礎脳力育成手段。

  • プログラム・業務の種類によるでしょう。

    科学計算・数値計算系ならばりばり使うと思いますが、
    通常のWebアプリ開発だと全く使わないことも少なくないかと。

    --
    comutt
    • by SteppingWind (2654) on 2012年08月12日 20時47分 (#2210904)

      指数関数も理解できない人間が金融・経済を扱うなんてちゃんちゃらおかしい.

      # そういう人間が, よく借金で首が回らなくなる

      親コメント
    • by Anonymous Coward on 2012年08月12日 19時36分 (#2210863)

      高度なアルゴリズムを必要とするアプリケーションなどの開発の場合
      当然のように高度な計算式がソースコード内に記述されます。

      逆に必要としないアプリは本当に足し算引き算程度で終わる。

      本当に作成するプログラムによります。

      某ライフライン用のアプリケーションは、まじで高度なアルゴリズムを
      用いたプログラムでそれの実行結果にそって出来上がったものを利用
      する事でより皆さんの生活が成り立ってる部分があります。

      親コメント
      • by deleted user (42768) on 2012年08月12日 20時01分 (#2210870)
        サイエンス分野などに興味があれば数学を選択しておいて後で損になるようなこともないと思います
        日本だと語学と違って数学は覚えられる(教えてもらえる)場所がかなり限られてる気がしますが…みんなどうしてるんだろう

        いざ使いたい時に覚えらるだけの受け皿があるのとないのとでは大違いですね
        親コメント
        • by Anonymous Coward on 2012年08月12日 20時55分 (#2210912)

          数学は選択じゃない。義務だ。わかったな?
          自分にできないことを計算機にやらせたら、間違えてもチェックできないじゃないか?

          親コメント
  • 別に"必須"ではないでしょう。
    ただし、「自身のプログラム技術を高度化させるために知っておいて損はない」と言う理由で、
    「学校で勉強できるならできるだけ多く身に付けておけ」って言うことではないでしょうか。

    例えば、カメラ繋いで映像をゲーム中に取り込んだり、
    Kinectなどを使って大量の外界情報を取り入れて処理させたいような時に、
    三角法で止まってしまっているのと、そうでないのとでは、ワケが違うと思います。

    #日本で言うことろの、「英語がある程度読めれば、より多くの情報にアクセスできる」って事にも、感覚的には近いんじゃないかと。
    #大学4年にもなって、未だに基本的な積分計算も結構間違う私が言えた事じゃないですが。

  • by quaternion (18655) on 2012年08月12日 20時02分 (#2210873) 日記
    数学クラスで養われるもの(と想定されている能力)は抽象化能力ではないでしょうか. 優れたプログラマは優れた抽象化能力を持ちますから,僕は数学クラスは無駄ではないと思います.
  • 高等数学をサポートしている言語なんて、あまり聞いたことないです。
    数値解析はMATLABみたいのを使うのが一般的でしょう。
    構造計算、応力解析、動特性みたいなのは専用ソフトを買うと思います。

    そういうの以外、例えばAIの遺伝的アルゴリズムとかニューラルネットなどは
    セコセコ自分で書くかな。いや、やっぱりエンジンはどこからか探してきますね。

    ということで、プログラマが高等数学を使う事ってあまりないと思います。
    プログラマではない、構造解析屋とかシミュレーション屋とかそういった専門職の人が
    購入したプログラムを使いこなすというパターンでしょう。
    そういう人は当然、自分の仕事に関わる数学は理解しています。でも、入出力はルーチンが
    書けなかったりするので、そういうのはプログラマに書いてもらうこともあります。
    • by Anonymous Coward on 2012年08月12日 23時57分 (#2210968)

      ただのコーダーなら数学的な考え方は必要でも高等数学はいらない。
      高等数学で解析した結果を仕様書に落とすような上流過程や、高等数学が必要な共有ライブラリを作るなら、高等数学は必要。
      ただのコーダーで終わりたいなら、プログラム言語さえ知っていればいいという仕事もある。もっとも業界の底辺にいる掃いてまとめて捨てられるような人材ですけどね。

      親コメント
  • ド・モルガンの定理とか。
    「andの否定は否定のor」とか言うやつ。
    if文の条件書く時に分岐のどっちを上に持ってくるかで時々使う
  • 2進と10進で循環小数になる値は違うよとか
    計算誤差(イプシロン?)について知っとけとか
    オーバーフローとか負数の表現とか
    単純なはずの加減乗除にも罠が潜む。
  • by nique (17169) on 2012年08月13日 11時19分 (#2211098) 日記

    少なくとも代数方程式をこなせないと論理学の基礎を身につけられないと思うんだが・・・
    教育ルーティンでプログラマを育てるなら、その過程としてある程度の数学をやらせるほうが、そうでない個々人に対して個々の教育を行うより簡単じゃないのかな
    「俺は微積は使わない!」っていうプログラマいるけど、その人の作ったループ処理の実装はまんま微分だったりすることあるし、こんな微分しなくても式解いてしまえば簡単なのに・・・っていうの見たことあるよ

    先輩の「使ってない」という思い込みは信用しないほうがいい職業だと思う

  • by Anonymous Coward on 2012年08月12日 18時59分 (#2210839)

    5で割った余りや3で割った余りの計算すら必要ないらしいですよ?

  • …というか考えるときに数学を使ったり使わなかったりOn/Offできるものなの?という…。

  •  普通の事務屋でも、数学の知識は必要だと思うな。
     特に公的団体の事務屋なんて、なんでもやらなければいけないし。
     就職して、いろんな仕事を担当するうちに統計とか、幾何学だとかの知識が必要なことが幾たびも・・・。
     仕事で必要になって「昔、どこかで教わったことがある」なんて調べてみたら、高校時代や大学で教わってたなんてことがたびたび。
     学校にいる間は、先生なりに詳しい友人なりに聞くことができるけど、勤めてしまうと、なかなかそういうチャンスはないし、高校の数学(数学1から代数幾何・基礎解析、確率・統計)くらいまでは、学生時代までにマスターしておくべきだったと身にしみてます。
     数学に限らず、学校で教わることって、そのままの形では出てこないけど、考える基礎として必要なものですね。
     学校のカリキュラムは、その時代の定説をもとに、夾雑物をそぎ落とした「純粋理論」みたいなものだから、あんまりおもしろいものではないけど、必要なときに、これを手がかりに必要な知識を調べていくことができる道しるべみたいなものだと思いますよ。
     で、必要な力は、そういう「道しるべ」みたいな骨格を元に、自分で調べて肉付けしていける能力だろうと思います。

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...