回答編集履歴

5 質問に対して、できるだけマッチするように内容を改めました。

anndonut

anndonut score 250

2018/01/01 12:33  投稿

数学は、出る何処勝負です。統計も信号解析もアルゴリズム論も暗号理論も、案件に携わってから勉強なさるのがよいのではないでしょうか。基礎的な素養を付けたいのでしたら、AOJと「アルゴリズムイントロダクション」の組み合わせがおすすめです
私はソフトウェアエンジニアでなくハードウェアエンジニアでした
逆に、数学科の人は、転職活動をかけまくって、自分が専攻していた分野を丁度やっている企業を調査するのがよろしいかと思います。多くの人に、自分の職務経歴書を見てもらうのです。そうすれば、自分が得意な分野の仕事に就くことができるかと思います
LSI設計は、デジタル設計・アナログ設計・プロセス設計など、細かく分業化されています。私はデジタル設計を担当していましたが、それほど数学は必要とされませんでした。デジタル設計では、暗号理論や誤り訂正理論などを用いることがあります。暗号理論は代数や数論と深くかかわっていたと思います。デジタル設計では、数学というよりもコンピュータ・アーキテクチャの方が重要になってきます。これはCPUやその他周辺部品をどうやって効率化させるかということであり、数学というよりは経験が物をいう世界だと私は思っています。とにかく試行錯誤するということですね
--- 2018/1/1 10:11 追記
まあ、20代前半の人には分からないかもしれないんですけど、10代から20代の間って勉強が結構できたりするんですよ。だけど30過ぎると、自分の得意分野で勝負をかけていくというほうがメインになっていくので、今後どういう学習をしたらいいですか?という質問はまっとうだと思います。しかし回答は難しいですね。容易さという点では、AOJと「アルゴリズムイントロダクション」の組み合わせが圧倒的に優位です。数学には、「証明」と「定理の応用」の2つの観点がありますが、システム開発で求められるのは圧倒的に「定理の応用」です。つまり、証明ができるかよりも、定理をどれだけ知っているかのほうが重要なのです。あとは現状のトレンドとかですね。Udacityとか、AIの勉強ができておもしろいですよ。
デジタル設計においては、EDAツールというのを使いますが、EDAツールベンダーはソフトウェアハウスであり、EDAツールの主な課題は「最適化」なので、最適化問題のスペシャリストが多いと思います。
--- 2018/1/1 10:30 追記
ここでは、もっと手厳しいことを言っておく必要があるのだった。もしあなたが数学基礎論というものに興味をお持ちであるならば、それは危険な道であることを知っておいた方がいいです。数学基礎論というのは数学と哲学の合流点のようなもので、応用できるかと問われれば、できないこともないのですが、それよりもその中毒性が強いので、ある程度距離を持って接する必要があると感じます。もしあなたが、群・環・体・多様体・位相全部いけるぜイェイイェイな人間だとすると、私からあなたにするアドバイスはありませんが、数学を一通り学ばれて、ちょっと数学きついなと感じたら、違うアプローチからやり直すことをおすすめします。
例えば、数学と呼ばれていない分野にも数学は沢山登場します。でも証明は完璧スルーだったりする訳です。でもそこを、数学科出身の人間にとっては物凄い苦痛だと思いますが、とにかくコードを書いて覚えるとかする方向に持っていけば、(もしあなたが数学の才能に関して秀でていないならば)QoLは格段に向上すると思います。
--- 2018/1/1 11:02 追記
ここでは、さらに手厳しいことを言う必要があるのでした。プログラミング言語の中でLispとHaskellというものがあります。これらは学際的な言語ではありますが、あまり実用的な言語ではありません。だから、趣味の範囲でやる分には構わないのですが、システム開発を行う上ではあまり役に立たないということを念頭に置いた方がいいです。たとえば、SICPという、無料で読める文献がありますが、これは関数型プログラミングの基礎を学習することができます。ただし、分量がとても多いので大抵の人は2,3章あたりで読むのを放棄したりします。私もSICPは最後まで読むべきではないと思います。4章はインタプリタの実装、5章はコンパイラの実装について書いてありますが、それは別の文献で学ばれた方がよいのではないかと思います。また、On
Lispという文献も無料で読むことができます。これは、マクロプログラミングについての指南書ですが、ぶっちゃけていうとマクロプログラミングができない言語に対してはほとんど意味をなさないです。次に、Haskell Reportというこれもまた無料で読むことができる文献があります。これは純粋な関数型プログラミングや、プログラムの証明(!?)といったものを学習するには優れていますが、とても長大な資料です。私はちょっと読む気がしないです。ただ、関数型プログラミングはマクロプログラミングに比べれば他の言語(C/C++, Java等)に応用が利くので、多少は勉強してもいいんじゃないかと思います。とりあえずSICPの2章の終わりまで読めば万々歳だと思います。
あと、オブジェクト指向プログラミングですね。これは関数型プログラミングに比べて、とても難易度が高いです。ただ、段階的に学ぶことができるので、軽くオブジェクト指向の入門的学び方を紹介します。まず、AOJで自分で簡単な問題を解いた後に、JavaやC++の他の人のソースコードを見ます。すると、継承・実装・ジェネリクス・テンプレートなどを使っているコードが散見されると思います。そういうのを真似するのです。それで標準ライブラリのユーザーとしてのスキルを身に着けておきます。次に、「Effective Java」という本を読みます。そうすれば、オブジェクト指向に関しては中級者になることができます。GoF本とかバートランド・メイヤーのオブジェクト指向入門とかに手を出してはいけませんよ。あれは本当にけがをします。軽く1年くらい人生を棒に振ってしまいます。
浅学ではございますが、ご参考までに、宜しくお願いいたします。
4 追記しました(2018/1/1 11:02)

anndonut

anndonut score 250

2018/01/01 11:20  投稿

数学は、出る何処勝負です。統計も信号解析もアルゴリズム論も暗号理論も、案件に携わってから勉強なさるのがよいのではないでしょうか。基礎的な素養を付けたいのでしたら、AOJと「アルゴリズムイントロダクション」の組み合わせがおすすめです。
逆に、数学科の人は、転職活動をかけまくって、自分が専攻していた分野を丁度やっている企業を調査するのがよろしいかと思います。多くの人に、自分の職務経歴書を見てもらうのです。そうすれば、自分が得意な分野の仕事に就くことができるかと思います。
--- 2018/1/1 10:11 追記
まあ、20代前半の人には分からないかもしれないんですけど、10代から20代の間って勉強が結構できたりするんですよ。だけど30過ぎると、自分の得意分野で勝負をかけていくというほうがメインになっていくので、今後どういう学習をしたらいいですか?という質問はまっとうだと思います。しかし回答は難しいですね。容易さという点では、AOJと「アルゴリズムイントロダクション」の組み合わせが圧倒的に優位です。数学には、「証明」と「定理の応用」の2つの観点がありますが、システム開発で求められるのは圧倒的に「定理の応用」です。つまり、証明ができるかよりも、定理をどれだけ知っているかのほうが重要なのです。あとは現状のトレンドとかですね。Udacityとか、AIの勉強ができておもしろいですよ。
--- 2018/1/1 10:30 追記
ここでは、もっと手厳しいことを言っておく必要があるのだった。もしあなたが数学基礎論というものに興味をお持ちであるならば、それは危険な道であることを知っておいた方がいいです。数学基礎論というのは数学と哲学の合流点のようなもので、応用できるかと問われれば、できないこともないのですが、それよりもその中毒性が強いので、ある程度距離を持って接する必要があると感じます。もしあなたが、群・環・体・多様体・位相全部いけるぜイェイイェイな人間だとすると、私からあなたにするアドバイスはありませんが、数学を一通り学ばれて、ちょっと数学きついなと感じたら、違うアプローチからやり直すことをおすすめします。
例えば、数学と呼ばれていない分野にも数学は沢山登場します。でも証明は完璧スルーだったりする訳です。でもそこを、数学科出身の人間にとっては物凄い苦痛だと思いますが、とにかくコードを書いて覚えるとかする方向に持っていけば、(もしあなたが数学の才能に関して秀でていないならば)QoLは格段に向上すると思います。
例えば、数学と呼ばれていない分野にも数学は沢山登場します。でも証明は完璧スルーだったりする訳です。でもそこを、数学科出身の人間にとっては物凄い苦痛だと思いますが、とにかくコードを書いて覚えるとかする方向に持っていけば、(もしあなたが数学の才能に関して秀でていないならば)QoLは格段に向上すると思います。
--- 2018/1/1 11:02 追記
ここでは、さらに手厳しいことを言う必要があるのでした。プログラミング言語の中でLispとHaskellというものがあります。これらは学際的な言語ではありますが、あまり実用的な言語ではありません。だから、趣味の範囲でやる分には構わないのですが、システム開発を行う上ではあまり役に立たないということを念頭に置いた方がいいです。たとえば、SICPという、無料で読める文献がありますが、これは関数型プログラミングの基礎を学習することができます。ただし、分量がとても多いので大抵の人は2,3章あたりで読むのを放棄したりします。私もSICPは最後まで読むべきではないと思います。4章はインタプリタの実装、5章はコンパイラの実装について書いてありますが、それは別の文献で学ばれた方がよいのではないかと思います。また、On
Lispという文献も無料で読むことができます。これは、マクロプログラミングについての指南書ですが、ぶっちゃけていうとマクロプログラミングができない言語に対してはほとんど意味をなさないです。次に、Haskell Reportというこれもまた無料で読むことができる文献があります。これは純粋な関数型プログラミングや、プログラムの証明(!?)といったものを学習するには優れていますが、とても長大な資料です。私はちょっと読む気がしないです。ただ、関数型プログラミングはマクロプログラミングに比べれば他の言語(C/C++, Java等)に応用が利くので、多少は勉強してもいいんじゃないかと思います。とりあえずSICPの2章の終わりまで読めば万々歳だと思います。
あと、オブジェクト指向プログラミングですね。これは関数型プログラミングに比べて、とても難易度が高いです。ただ、段階的に学ぶことができるので、軽くオブジェクト指向の入門的学び方を紹介します。まず、AOJで自分で簡単な問題を解いた後に、JavaやC++の他の人のソースコードを見ます。すると、継承・実装・ジェネリクス・テンプレートなどを使っているコードが散見されると思います。そういうのを真似するのです。それで標準ライブラリのユーザーとしてのスキルを身に着けておきます。次に、「Effective Java」という本を読みます。そうすれば、オブジェクト指向に関しては中級者になることができます。GoF本とかバートランド・メイヤーのオブジェクト指向入門とかに手を出してはいけませんよ。あれは本当にけがをします。軽く1年くらい人生を棒に振ってしまいます。
3 追記しました(2018/1/1 10:30)

anndonut

anndonut score 250

2018/01/01 10:38  投稿

数学は、出る何処勝負です。統計も信号解析もアルゴリズム論も暗号理論も、案件に携わってから勉強なさるのがよいのではないでしょうか。基礎的な素養を付けたいのでしたら、AOJと「アルゴリズムイントロダクション」の組み合わせがおすすめです。
逆に、数学科の人は、転職活動をかけまくって、自分が専攻していた分野を丁度やっている企業を調査するのがよろしいかと思います。多くの人に、自分の職務経歴書を見てもらうのです。そうすれば、自分が得意な分野の仕事に就くことができるかと思います。
--- 2018/1/1 10:11 追記
まあ、20代前半の人には分からないかもしれないんですけど、10代から20代の間って勉強が結構できたりするんですよ。だけど30過ぎると、自分の得意分野で勝負をかけていくというほうがメインになっていくので、今後どういう学習をしたらいいですか?という質問はまっとうだと思います。しかし回答は難しいですね。容易さという点では、AOJと「アルゴリズムイントロダクション」の組み合わせが圧倒的に優位です。数学には、「証明」と「定理の応用」の2つの観点がありますが、システム開発で求められるのは圧倒的に「定理の応用」です。つまり、証明ができるかよりも、定理をどれだけ知っているかのほうが重要なのです。あとは現状のトレンドとかですね。Udacityとか、AIの勉強ができておもしろいですよ。
まあ、20代前半の人には分からないかもしれないんですけど、10代から20代の間って勉強が結構できたりするんですよ。だけど30過ぎると、自分の得意分野で勝負をかけていくというほうがメインになっていくので、今後どういう学習をしたらいいですか?という質問はまっとうだと思います。しかし回答は難しいですね。容易さという点では、AOJと「アルゴリズムイントロダクション」の組み合わせが圧倒的に優位です。数学には、「証明」と「定理の応用」の2つの観点がありますが、システム開発で求められるのは圧倒的に「定理の応用」です。つまり、証明ができるかよりも、定理をどれだけ知っているかのほうが重要なのです。あとは現状のトレンドとかですね。Udacityとか、AIの勉強ができておもしろいですよ。
--- 2018/1/1 10:30 追記
ここでは、もっと手厳しいことを言っておく必要があるのだった。もしあなたが数学基礎論というものに興味をお持ちであるならば、それは危険な道であることを知っておいた方がいいです。数学基礎論というのは数学と哲学の合流点のようなもので、応用できるかと問われれば、できないこともないのですが、それよりもその中毒性が強いので、ある程度距離を持って接する必要があると感じます。もしあなたが、群・環・体・多様体・位相全部いけるぜイェイイェイな人間だとすると、私からあなたにするアドバイスはありませんが、数学を一通り学ばれて、ちょっと数学きついなと感じたら、違うアプローチからやり直すことをおすすめします。
例えば、数学と呼ばれていない分野にも数学は沢山登場します。でも証明は完璧スルーだったりする訳です。でもそこを、数学科出身の人間にとっては物凄い苦痛だと思いますが、とにかくコードを書いて覚えるとかする方向に持っていけば、(もしあなたが数学の才能に関して秀でていないならば)QoLは格段に向上すると思います。
2 追記しました(2018/1/1 10:11)

anndonut

anndonut score 250

2018/01/01 10:11  投稿

数学は、出る何処勝負です。統計も信号解析もアルゴリズム論も暗号理論も、案件に携わってから勉強なさるのがよいのではないでしょうか。基礎的な素養を付けたいのでしたら、AOJと「アルゴリズムイントロダクション」の組み合わせがおすすめです。
逆に、数学科の人は、転職活動をかけまくって、自分が専攻していた分野を丁度やっている企業を調査するのがよろしいかと思います。多くの人に、自分の職務経歴書を見てもらうのです。そうすれば、自分が得意な分野の仕事に就くことができるかと思います。
逆に、数学科の人は、転職活動をかけまくって、自分が専攻していた分野を丁度やっている企業を調査するのがよろしいかと思います。多くの人に、自分の職務経歴書を見てもらうのです。そうすれば、自分が得意な分野の仕事に就くことができるかと思います。
--- 2018/1/1 10:11 追記
まあ、20代前半の人には分からないかもしれないんですけど、10代から20代の間って勉強が結構できたりするんですよ。だけど30過ぎると、自分の得意分野で勝負をかけていくというほうがメインになっていくので、今後どういう学習をしたらいいですか?という質問はまっとうだと思います。しかし回答は難しいですね。容易さという点では、AOJと「アルゴリズムイントロダクション」の組み合わせが圧倒的に優位です。数学には、「証明」と「定理の応用」の2つの観点がありますが、システム開発で求められるのは圧倒的に「定理の応用」です。つまり、証明ができるかよりも、定理をどれだけ知っているかのほうが重要なのです。あとは現状のトレンドとかですね。Udacityとか、AIの勉強ができておもしろいですよ。
1 先行→専攻、に直しました

anndonut

anndonut score 250

2017/12/31 22:58  投稿

数学は、出る何処勝負です。統計も信号解析もアルゴリズム論も暗号理論も、案件に携わってから勉強なさるのがよいのではないでしょうか。基礎的な素養を付けたいのでしたら、AOJと「アルゴリズムイントロダクション」の組み合わせがおすすめです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る