web-dev-qa-db-ja.com

論理的思考スキルを向上させるために、デザインパターンやアルゴリズムを学ぶ必要がありますか?

重複の可能性:
どうすれば問題解決能力を向上させることができますか?

プログラミングタスクを開始するとき、私はそれをステップに分割し、それを解決する方法を理解するのに苦労しています。

もっと上手になりたいです。データ構造/アルゴリズムに焦点を当てるべきですか?それとも、もっとデザインパターンを勉強する必要がありますか?

より論理的に考え、物事を段階的に分割できるようになるには、何が役立つと思いますか?

4
Crystal

コードでロジックを見るのが難しい

これはよくあることであり、心配する必要はありません。慣れていないコードを理解することは、他の人の考えを理解しようとすることに似ています。通常、システムアーキテクチャのその部分全体(システム全体が十分に大きい場合に頭が爆発する可能性があるため、システム全体ではない)のウォークスルーを取得すると、非常に役立ちます。包括的なソリューションを理解すると、特定のコードチャンクのロジックがかなり意味をなすようになります。

システムアーキテクチャの練習が必要なように思えます。次に問題に取り組むときは、コードを忘れるです。まず、あなたが扱っている問題を完全に理解する。もちろん、特定の問題を完全に理解していない場合、ソリューションのエンジニアリングはせいぜい困難になります。次に、その問題の実装がすぐに利用できるか(OS)、またはそれに適用できるデザインパターンがあるかどうかを確認します( Wikipedia 適切なリストがあります)。そうでない場合は、ソリューションの設計を開始します(まだコードについてさえ考えていません-これはすべて抽象的な設計であるべきです).

設計が完了したら、thenコーディングを開始します。

もちろん、設計パターンとアルゴリズム(およびアルゴリズム設計/分析)を研究することは、間違いなくhelpここでの征服ですが、実践は同じくらい重要です(実際に設計を実装するかどうかは別ですが)ポイント)。

これを十分に行うと、問題を抱えているように見える抽象的な問題解決思考に拍車をかけるのに役立ちます。

そして、忘れないでくださいever忘れてください:これでどれだけ上手くいくと思っても、alwaysより速く/より良い/人(または多くの人)がいるでしょうあなたより明るい。 使用あなたが良くなるのを助けるために-彼らの能力があなたを苛立たせないようにしてください。

7
Demian Brecht

私はそれは非常に単純だと思います:コードをもっと!

あなたの問題は私がプログラミングを始めたときに私が持っていたものとまったく同じように聞こえます。そして、それを回避する唯一の方法は、ますますコードを書くことでした!そうして初めて、あなたはそれを実際に把握することができます。

小さなことから始めて、最初に大きなプロジェクトに進まないでください。

5
kaino

現在、「アルゴリズム分析」というコースを受講しています。このクラスはすべて、問題をステップに分解して解決することを目的としています(最適化に重点を置いています)。

アルゴリズムを研究する必要があります。アルゴリズムを勉強した後、目を閉じて、自分でアルゴリズム全体を再現してみてください。さまざまな例に適用できるように、各ステップを単なる暗記よりも高いレベルで理解することが重要です。練習すれば、より速くなります。

1
Casey Patton

誰かがすでに同様の機能上の問題に遭遇し、それをWeb上で説明している可能性があります。どこから始めればよいかわからない場合は、Webで質問するのが有効な解決策です。

とにかくがらくたコードを書くよりはましだ。

何語を使いますか? algorythmsは、APIを知ることに関するものです。

しかし、あなたが正しいです。実際にデザインパターンを学ぶことで、あなたはより優れたプログラマーになるでしょう。そのため、業界でそれらを知る人はほとんどいません。

0
xsace