私はかなり熟練したソフトウェアエンジニアですが、あまり理論を知りません。もっと理論を学びたいです。私が興味を持っている特定のトピックは、計算の複雑さ、形式言語、および型理論です。しかし、これらの分野について学び始める方法については、私は途方に暮れています。
自習を通してより多くの理論を学びたい人に、どのリソースを勧めますか?ソフトウェアエンジニア向けの理論的なコンピューターサイエンスの自習ガイドはありますか?
私はかなり熟練したソフトウェアエンジニアですが、あまり理論を知りません。もっと理論を学びたいです。私が興味を持っている特定のトピックは、計算の複雑さ、形式言語、および型理論です。しかし、これらの分野について学び始める方法については、私は途方に暮れています。
自習を通してより多くの理論を学びたい人に、どのリソースを勧めますか?ソフトウェアエンジニア向けの理論的なコンピューターサイエンスの自習ガイドはありますか?
回答:
それはいくつかの全く異なる領域を持つ広い分野です。
まず、コンピューターとは何かについての最も基本的なアイデアから始めます。HopcroftとUllman、「Automata理論の紹介、言語と計算」。
特にお勧めする理由は、証拠に重点を置いていることです。彼らはあなたを厳密な考え方で導きます。それはプログラムを書くことと科学的であることの違いです。
型理論について学ぶにはいくつかの方法があります。働くプログラマーにとって、 B。Pierceによる型とプログラミング言語は良い出発点です。 R. Harperによるプログラミング言語の実用的な基礎も良いかもしれません。操作上のセマンティクスの背景を少し読みやすくしたい場合は、G。Winskelの「プログラミング言語の形式的セマンティクス:はじめに」をお勧めします。T. Nipkow、G。Klein、コンクリートセマンティクスます。この(または任意の)本だけで証明者を把握するのは本当に難しいと思うので、近くの専門家に質問してもらいたいと思います。型理論により数学的なアプローチが必要な場合は、JR Hindley、JP Seldin、Lambda-Calculus and Combinators:An Introduction、またはH. Barendregt'sをご覧ください。型付きラムダ計算。Barendregtから始めることはお勧めしませんが。
単一の推奨事項が必要な場合は、パートVI(高次システム)を除くすべてのPierceを読み、本で説明しているおもちゃの言語を実装してください。型理論の強力な基礎になり、おそらくより優れたプログラマーになるでしょう。
私は理論とアルゴリズムの大ファンです。インドのマドラスにあるインド工科大学(IIT-M)で理論計算機科学を訪問する機会がありました。IIT-Mには多くの理論家がいます。私がそこに行ったとき、私は理論が何であるかについて何も知りませんでしたが、今日私はそれが大好きです。
ポインターの@Kate Fのおかげで、はい、HopcroftとUllmanは開始するのに最適な場所です。
しかし、ここに私が始めた方法があります、
Cormenによるアルゴリズムの紹介をお読みください。<\ br>開始するのに最適な場所です。勉強するときは、各証明をできるだけ長く理解するようにしてください。証明をよく理解している場合は、選択した言語で同じロジックをコーディングしてください。(少し時間がかかりますが、試してみる価値があります)
以下のような理論のトップ会議フォロー
FOCS
SODA
STOC
EC(電子商取引)を-アルゴリズムゲーム理論
COLT(学習理論上の会議) -学習理論
CRYPTO -暗号
SOCG(計算幾何学シンポジウム) -計算幾何学
CCC(会議に計算の複雑さ)-複雑さの理論
あなたが読んでために多くの試みを理解していない場合でも、THINKできるだけ。できるだけ多くの証拠を作成する必要があります。