数学とプログラミングについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
unmarko
記事: 12
登録日時: 14年前

数学とプログラミングについて

#1

投稿記事 by unmarko » 14年前

数学の知識を活かしたプログラミングについて考えを聴かせて頂きたいです。

漠然とした質問で申し訳ないです。

まず自分は数学、解析の分野で大学院を出た者ですがプログラミングの経験はほぼ初心者です。

現在ソフト会社に入っていますが、プログラミングのスキルがほぼ皆無な為、
悪戦苦闘しています。

学生中プログラミングに対して漠然とした憧れを抱いていたので、今の職に就いたのですが、
現状数学等まったく使わない業務ばかりです。

もちろん基礎的なプログラミングの能力は研磨していくつもりなのですが、
今後は自分の付加価値を高める為には、数学の知識を活かしていくことが必要だと感じています。
何か良い参考書籍等ありましたら、教えて頂きたいと思います。

また、プログラマーの皆様、数学とプログラミングについて、どの様な見識をお持ちでしょうか?

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#2

投稿記事 by unmarko » 14年前

こんな本見つけたんですが、面白そうですね。
「ニューメリカルレシピ・イン・シー 日本語版―C 」
http://www.amazon.co.jp/gp/product/toc/ ... 8&n=465392

持ってるかたいらっしゃいます?

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#3

投稿記事 by unmarko » 14年前

今は既存のソフトの簡単な改造とかを主にやってますが、
このままプログラミングとソフトの仕様を覚えて現在の延長で業務を続けていっても
周りの人達と同じ様になっていくだけで自分のバックボーンを活かせないと思っています。

そんな事なら専門学校出てプログラミングだけをやってきた人と変わらないし、
経験年数的に敵わない。敵わないとはいかなくても0からのスタートではやはり弱いように思います。

数学畑出身のプログラマーの方はそんなことを考えたことは有りませんか?

業務の現場に出るとハードの知識やネットワークの知識、コーディングの技術、ツールの使い方
  を知っている事が必須だし、それを知っている人が中心となっているように思います。
  
  もちろんそれらは必須だと思いますが、それだけでは、、、と思っています。

数学ってそんなに使えないものでしょうか?
少なくとも大学での研究はもっと心躍ったものでした。
  プログラミングと数学をもっと直接的に結びつけることはできないのでしょうか?
  
  ちょっとくどかったです。すいません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 数学とプログラミングについて

#4

投稿記事 by softya(ソフト屋) » 14年前

数学専門畑では有りませんが、統計学・シミュレーション・ゲーム関係のプログラミングでは数学的な知識を必要としますね。
あと暗号分野とか、映像・音声信号処理とかデータベースで使う集合論とか。
なので、今お仕事されている分野でたまたま、あまり数学が必要とされないプログラミングの仕事ではないかと思われます。

[追記]
解析を学ばれたなら画像解析処理とか知識が生かされる分野の仕事されると良いと思うんですが、そう言うのはその会社では無いのでしょうか?(私の理解が間違っいたら申し訳ないです)
医療機器分野とかでは結構需要のある知識だと思うのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 数学とプログラミングについて

#5

投稿記事 by たかぎ » 14年前

ソフト会社よりは、むしろメーカーのほうが数学が生かされる機会は多かったかもしれませんね。
ただ、ソフトウェアをやる以上は、プログラミングのスキルをある程度上げないことには、そこから先に進むことができません。
転職するにしても、今の仕事で、せめてプログラミングだけでもベテランの域に達しないことには話にならないでしょう。
まだまだ先は長いですので、あまり焦らずに、今できることを精いっぱいやってみてください。

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#6

投稿記事 by unmarko » 14年前

ありがとうございます。
先ほど社内の先輩にもアドバイスもらいました。
プログラムのコード単体は読めていると思うので、
あとは行間を読む訓練をせよ。とのことでした。
確かに!

ネットで自分の書いた論文とか見つけて当時のワクワク感とか思い出して
なんか今の自分に焦りを感じていました。
ただ、実際数学的理論とソフトウェアを作る技術は両方研磨していきたいと
思ってます。
ウェブアートの分野とかにもすごい興味あるし(ちょっとそれました。)
今はプログラミングに比重を置いて、数学も片側に置いておいて、
やっていきたいと思います。
ちょっと今日は本屋で色々物色かなあ。
お勧めあったらお願いします。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 数学とプログラミングについて

#7

投稿記事 by たかぎ » 14年前

unmarko さんが書きました:プログラムのコード単体は読めていると思うので、
あとは行間を読む訓練をせよ。とのことでした。
確かに!
ソースコードの行間を読むというのは、大きく分けて二つの意味があります。

ひとつは、普通の文章の場合と同じで、アルゴリズムやデータ構造、仕様、さらには暗黙的に盛り込まれている設計思想や安全対策を読み取るということです。

もうひとつは、ソースコードには表れていないけれども、こっそり動作する部分の振る舞いを読み取るということです。
具体的には、C++であればコピーコンストラクタやデストラクタの呼び出し、例外処理などがどう振る舞うかを読み取るということです。
高級言語になればなるほど、こうした振る舞いが増えていきます。

まあ、いずれにしても、新入社員がいきなり自分がやりたい仕事をやれるということは稀ですので、しばらくは下積みが必要ですね。
最後に編集したユーザー たかぎ on 2011年4月22日(金) 15:22 [ 編集 1 回目 ]

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#8

投稿記事 by unmarko » 14年前

お返事ありがとうございます。

たしかに、たかぎさんはどの様に自分のスキルを伸ばしてこられたのですか?

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: 数学とプログラミングについて

#9

投稿記事 by bitter_fox » 14年前

unmarko さんが書きました: まず自分は数学、解析の分野で大学院を出た者ですがプログラミングの経験はほぼ初心者です。

何か良い参考書籍等ありましたら、教えて頂きたいと思います。
僕は読んだことがないのですが、クヌース先生の『The Art of Computer Programming』シリーズや『コンピュータの数学』はいかがでしょうか?(大学院卒とのことですので、既読もしくは数学的内容が簡単に感じるかもしれませんが・・・)(結構な額なので中身を考慮して財布に相談してください。)

- The Art of Computer Programming 1

- コンピュータの数学
最後に編集したユーザー bitter_fox on 2011年4月22日(金) 15:13 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 数学とプログラミングについて

#10

投稿記事 by softya(ソフト屋) » 14年前

どの様に学んだかは人それぞれで色んな学び方があると思います。
私は興味本位で学んできたので、学ぶと実践が並行だった場合が多いですが違うという人も沢山いると思います。

お聞きしたいのですが、このプログラミング言語をどの様な応用分野で使われる予定でしょうか?
今まで出てきた内容かる推測するとC言語で組み込みマイコンなどの分野なのかと思いましたが。
書籍を紹介するにしても、バックボーンなる知識や今苦手なことをお聞きしておかないと的外れになりそうで。
仕事の守秘義務とかの支障のない範囲でお聞かせください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#11

投稿記事 by unmarko » 14年前

研究室時代は 「複雑系」が主な研究分野で、
「1/fゆらぎ」「カオス」等が主でした。
「ラマヌジャンの公式」との関係性についてが最終研究でした。

今は受託のソフトウェアハウスで働いています。
今はC言語ベースの開発チームに配属されています。
システムで良く聞くキーワードはRS-232CとかLANを使ったデータの入出力、
タスク管理、回線制御、sio基板hdlc基板とかです。

解らないことだらけです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 数学とプログラミングについて

#12

投稿記事 by softya(ソフト屋) » 14年前

unmarko さんが書きました:研究室時代は 「複雑系」が主な研究分野で、
「1/fゆらぎ」「カオス」等が主でした。
「ラマヌジャンの公式」との関係性についてが最終研究でした。
「1/fゆらぎ」「カオス」は概念レベルで知ってますが、「ラマヌジャンの公式」は無知でした。
組み込み分野の制御系とかでも使いそうな知識な気がするんですが。
unmarko さんが書きました: 今は受託のソフトウェアハウスで働いています。
今はC言語ベースの開発チームに配属されています。
システムで良く聞くキーワードはRS-232CとかLANを使ったデータの入出力、
タスク管理、回線制御、sio基板hdlc基板とかです。

解らないことだらけです。
あぁ、業務系とかWEB系ではなく完全に組込み系ですね。
色々とハード分野の知識も必要とされそうなお仕事ですね。
私は元ゲーム系なので、ハードの知識は少々ありますが本業ではないです。
どちらかというと、たかぎさんの仕事の分野でしょうか。

たかぎさんの会社のホームページ↓
「株式会社きじねこ | ソフトウェア開発 | マイコン制御 | 電子回路設計」
http://www.kijineko.co.jp/

C言語のどのレベルまで理解できているか分かりませんので役立ち度は不明ですが、こんな本とかでしょうか。
「Amazon.co.jp: 組込み現場の「C」プログラミング基礎からわかる徹底入門: SESSAME: 本」


会社にこの雑誌のバックナンバーがあれば読んでおくのも良いと思います。
「Interface」
http://interface.cqpub.co.jp/

ハードやソフトウェア技術の部分で細かく聞いてもらうと答えられることもあるかと思います。
お気軽にお尋ね下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 数学とプログラミングについて

#13

投稿記事 by たかぎ » 14年前

unmarko さんが書きました:たかぎさんはどの様に自分のスキルを伸ばしてこられたのですか?
そんなに特別なことはやっていません。
基本的なことを徹底的に追及して完璧に理解することの繰り返しだと思います。

あとは、時間を見つけて、邪道かつトリッキーな実験をすることでしょうか?
邪道でトリッキーなテクニックというのは忌避されがちですが、それによってできることの限界は確実に広がります。
そうやって、10の実力を身に付けた上で5の仕事をこなすのはたやすいのです。
ところが、5の実力で5の仕事をしようとすると、ちょっとしたことで能力的な限界にぶつかってしまいます。

たいちう
記事: 418
登録日時: 14年前

Re: 数学とプログラミングについて

#14

投稿記事 by たいちう » 14年前

unmarkoさんが学生時代に身につけたのが数学の知識だけだったとしたら、
それを今後の実務で生かすのは不可能に近いと思います。
プログラマの大半は高度な数学とは無縁のプログラムに携わっています。

数学の知識を身につける過程で、数学的なセンスを身につけているのならば、
それは必ずプログラミングの役に立ち、他のプログラマを圧倒するだけの
実力を見せつけることが出来るでしょう。知識よりもセンスが重要です。
(センスの定義が不明瞭ですが、もし文脈で判らなければ聞いてください。
時間のある時にもう少し私の定義を説明してみます。するかもしれません。)

数学的センスがあるならば、少々遅れを取っていたとしても、
プログラマとしての経験年数の遅れをを取り返し、
頭角を現すことも可能でしょう。


で、話はそれからです。
普通のソフトウェアの会社で高度な数学を使う仕事は限られていますので、
それをやりたい場合は、それだけの説得力が必要です。
プログラムの技量も人並み以上で、数学の素養もあるならば、
あなたのやりたいことのようやくスタートラインに立てると思ってください。

会社としては、あなたにその仕事を任せた方が良い、
というような判断基準が欲しいのです。
数学系出身だけどプログラミングは初心者というような人は選考の対象外です。

プログラムも作れる数学者は、数学としては一流でなくてはなりません。
数学もできるプログラマは、プログラミングは一流でなくてはなりません。
あなたが後者を目指すのならば、一流のプログラマとなり、
さらに数学で差別化を計るというのが理想でしょう。
現時点でどっちも中途半端ならば、一方に絞って精進した方が
得かもしれません。どっちも中途半端な技術をうまく生かせる仕事を
見つけるのは大変だと思います。


現状ではトップレベルのプログラマを目指して研磨し、
同時に数学をプログラミングで生かすにはどうしたら良いか模索し、
チャンスを見つけて、自分のやりたいことに近い仕事を取っていくか、
よりやりたいことが出来そうな転職先を見つけるのが良いのではないでしょうか。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: 数学とプログラミングについて

#15

投稿記事 by Dixq (管理人) » 14年前

数学とプログラムが密な関係にあるのは特定の分野だけだと思います。
ちょうどそれが活かせる仕事内容なら良いですが、なかなかそうもいかないと思います。
unmarkoさんに限らず、大学院で専門にしていたことを仕事に出来る人は本当に一握りだと思いますよ。
私も大学院で学んだことはほとんど仕事に使っていません。

やはり就職先で必要とされたことを学び詳しくなるのが一番だと思います。
修士だけなら大学院で学んだことは2年、仕事なら35年は必要でしょう。そう考えると大学院で学んだことをあえて考える必要性はあまり感じられません。

とは言え、自分の長所や知識を活かしたいと思うのはもっともだと思います。
新入社員のうちは仕事は与えられることをこなすことになるでしょうから、自分のしたい仕事ばかりが出来るとも限らないと思いますが、
シミュレータ関係や画像、音声処理、人工知能などの分野には数学的な知識が必要とされることが多いですよね。
ただやはりプログラマーというより研究者の方に偏りそうです。

プログラマーの基礎がしっかり出来て一人前に仕事が出来るようになり、かつ数学的知識が人一倍あるという状況は自分を売り込める要素になると思います。
たいちうさんが仰るように今の職場で自分のやりたい事が見つからないとすると、今の現場でスキルを磨きつつ、転職を考えるのも手かと思います。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 数学とプログラミングについて

#16

投稿記事 by たかぎ » 14年前

"やりたい仕事"というのは、あまり細かな仕事内容に求めるべきではないと思います。
経験上、「仕事を通じて、社会とどう関わっていくのか」というところに"やりたい仕事"を見出す方が、いろいろな意味で得策です。
そう考えると、数学やプログラミングの能力を活かした仕事といったことは、単なる手段であって、目的ではなくなるのです。

たとえば、「子供に夢を与えたい」とか、「病気で苦しんでいる人を助けたい」といったことを目的にした場合、自分が携わっている仕事が傍目から見ればどんなにつまらない仕事に見えたとしても、そこにやりがいを見出すことができます。
労働のよろこびというのは、本来そういうものなんだと思いますよ。

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#17

投稿記事 by unmarko » 14年前

現状ではトップレベルのプログラマを目指して研磨し、
同時に数学をプログラミングで生かすにはどうしたら良いか模索し、
チャンスを見つけて、自分のやりたいことに近い仕事を取っていくか、
よりやりたいことが出来そうな転職先を見つけるのが良いのではないでしょうか。
たいちうさんありがとうございます。
その通りだと思います。自分も同意見です。
もともとそのつもりで質問を書いたつもりが、
焦りやジレンマ等、感情的な部分が混ざってしまっておりました。
申し訳ありません。

そこでプログラミングを勉強するのであれば少しでも数学に関係する書籍でプログラミングの練習としたいと思っていたのです。
何かそういった書籍でこれはお勧め、といった書籍はないでしょうか?
因みに自分が今使っている言語はCで、最近やっているプログラミングは
「環状リスト型の配列を持つ構造体にファイルから文字を読み込んで標準出力する。」
という課題を何種類か作ってみています。
データ構造の基礎とポインタの使い方、オブジェクトの3点に的を絞ったつもりです。
まだ基本を押さえるようなことしかできていないかもしれませんが、楽しいです。

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#18

投稿記事 by unmarko » 14年前

プログラマーの基礎がしっかり出来て一人前に仕事が出来るようになり、かつ数学的知識が人一倍あるという状況は自分を売り込める要素になると思います。
Dixq (管理人)さんありがとうございます。
最終的にそうなりたいです。
なので、プログラミングに慣れる為の課題に数学を盛り込んでおきたいです。
今の自分のスキルを考えると、今すぐ仕事で数学が活かせるとは考えていないです。
あくまで、プログラミングのスキルを身につける為に、どうせ練習するのなら少し数理の方向で、
と考えているのですがその考え自体が間違っているのでしょうか?

もっと先にやるべきことがあるということなのでしょうか?
それならば、やはり優先順位を考えなければならないと思います。

今までの社会人経験を振り返ると、リーマンショックによる卒業直前の内定取り消し、
なんとか滑り込んだ会社では最長3週間家に帰れず、
3ヶ月おきに部所を追われ、研修期間というものをほとんど体験できず、
常に寝不足で勉強もできなかったのですが、
3年目に入り会社も代わり、今週くらいからやっと自分の時間がとれるようになってきました。

前のような境遇がいつまた襲ってくるかと思うと今の期間をできるだけ有効に使いたいと思っています。
と言っても来週はまた自分の時間など取れないかもしれないですが、早くプログラムが書ける様になりたいです。

組み込み系の知識といっても別の案件では全く使わないこともあり、言語も変わるかもしれないし、web系かもしれないです。
ともかく、Cはソフトの基礎ということを良く聞くので今はC言語を集中して学びたいと思っています。

unmarko
記事: 12
登録日時: 14年前

Re: 数学とプログラミングについて

#19

投稿記事 by unmarko » 14年前

"やりたい仕事"というのは、あまり細かな仕事内容に求めるべきではないと思います。
経験上、「仕事を通じて、社会とどう関わっていくのか」というところに"やりたい仕事"を見出す方が、いろいろな意味で得策です。
たかぎさん、何度もレスして頂きありがとうございます。
社会とどう関わって行くのか、今まで正直そういった考えに至りませんでした。
生き残って行く為にどうすればいいか?といったことばかり考えていました。
自分が仕事というものを主導的にこなせる様になったときそういった考えに至るのではないかと思います。
たかぎさんの言っていることは理解できるのですが、まだ自分には咀嚼できないようです。
先輩からの意見として自分の中に残しておこうと思います。

自分のような若輩者に対してありがとうございます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 数学とプログラミングについて

#20

投稿記事 by softya(ソフト屋) » 14年前

プログラマとして数学的なアプローチが必要なものにアルゴリズムがあります。
アルゴリズムは仕事をスムーズに進めるために必要となる知識でもありますので、ソートとか基礎的なものは勉強することにはなるとは思いますが高度なものは知的パズルの様相を呈し来ます。仕事に役立つか実務的かは別としてプログラムでこんな事も考えるんだと言うことでサイトをご紹介しておきます。

「会津大学オンラインジャッジシステム University of Aizu Online Judge System」
http://rose.u-aizu.ac.jp/onlinejudge/index.jsp
自動でプログラムの合否判定もしてくれます。問題セットvolume0から始めてください。

弱点としては、どれだけ極めても実務アプリ作成のスキルは伸びないことです。
高速化とか適応最適アルゴリズムを見極めるとかのテクニックは身につくと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たいちう
記事: 418
登録日時: 14年前

Re: 数学とプログラミングについて

#21

投稿記事 by たいちう » 14年前

まず、文法を一通り覚えること。
特にC言語の場合はポインタの理解が曖昧な初心者が多いです。
『プログラミング言語C』とかが定番ですが
本当の初心者向けではないとも言われています。
それだけに、歯ごたえも成果も期待できます。

ここまでは数学は関係なし。
数学的センスはある程度助けになるとは思いますが。

入門書の後は、文章で書かれた仕様をプログラムに変える練習。
これがすらすらできないと仕事になりません。
『アルゴリズムとデータ構造』とかの説明だけを読んで
プログラムを書いてみるとか。
この段階での課題の選び方で少しは数学を使う事もできるでしょう。

C言語に限るならば、とりあえずここまでで十分です。
視野を広げるために別の言語なども学習すべきです。
ハードやネットワークの知識が足りないと思うならば、
その学習も必要でしょう。設計やテストなどの工程も重要です。

これらができるようになって、ようやく一人前で、
会社に対して希望をいうこともできるし、
必要ならば転職も可能になるでしょう。
自分に有利に進めるには、他のプログラマよりも有能であるべきなのは、
言うまでもないですね。数学はその後にようやく生かせます。

閉鎖

“C言語何でも質問掲示板” へ戻る