単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?[閉まっている]


82

本物のプログラマは1週間以内にどんな言語でも簡単に学べるとよく耳にします。言語は物事を成し遂げるための単なるツールである、と私は言います。プログラミングは、習得して習得しなければならない究極のスキルです。

単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?また、1つだけではなくすべての言語に適用できるプログラミングスキルをどのように開発できますか?


25
別の言語を学びましょう。新しい言語で母国語で解決する方法を既に知っている問題を解決してください。最初は簡単ではありません。ただし、古い問題を新しい方法で解決することを著しく容易にすると、学習していることがわかります(注:これには少し時間がかかる場合があります)。
FrustratedWithFormsDesigner

42
また、1週間で言語を学べると主張する人は、「学ぶ」と言うときの意味を定義する必要があります。"What do you mean you're not an expert in LanguageX?!? I can learn a language in a Week!"。1週間後:"See, I've learnt the language, and here's a Hello World example I copied from Wikipedia to prove it!"
JohnL

9
1つの質問をする必要があります。構文でロジックを構築しますか、またはより高速で効率的なメンタルモデルを使用しますか?初心者プログラマーは構文を使用することを考える傾向があることがわかります。
ChaosPandion

10
@PaulR:自転車の乗り方を学ぶのに1万時間もかかりませんでした。または、泳ぐ、ということです。
ロバートハーベイ

7
@PaulRことわざは、スキルを習得するのに1 万時間かかることであり、単に「学習」するだけではありません
トビアスキンツラー

回答:


96

次のような声明でよく耳にする「スキル」のとんでもない概念に出会う心配はありません。

  • すべてのプログラミング言語は基本的に同じです。
  • 1つの言語を適切に選択したら、他の言語をすばやく簡単に選択できます。
  • 言語は単なるツールであり、実際にソフトウェアを作成する包括的な脳の魔法があります。

これらの記述はすべて欠陥のある前提に基づいており、幅広いプログラミング言語の経験不足を裏切っています。それらは非常に一般的な声明であり、プログラマーの大群によって強く信じられています。私はそれについて異議を唱えませんが、彼らの正確性について異議を唱えます。

これは簡単に証明されています:HaskellProlog、またはAgdaの基礎を学ぼうとして1週間(または実際には2、3日以上の時間)を費やしてください。古いセサミストリートの歌を頭で聞くとすぐに「これらのことの1つは他のものとは違います...」。

結局のところ、プログラミング言語、技術、アプローチの全体があり、私たちの95%がこれまでやったこととはまったく異なるものです。多くの人は、これらの他の概念が存在することすらまったく知らず、これは素晴らしいことであり、これらの概念は雇用された有能なプログラマーである必要さえありません。

しかし、事実は残っています:これらのテクニックとアプローチは存在します、それらは多くの異なる事柄に適していて非常に有用です

さらに、プログラミング言語などの複雑なことを1週間ほど迅速に習得できる、または習得できると主張する場合の大半は、Dunning Kruger Effect、Wikipedia(強調鉱山)に苦しんでいます。

Dunning–Kruger効果は、未熟な個人が幻想的な優位性に苦しみ、誤って能力を平均よりもはるかに高く評価する認知バイアスです。このバイアスは、未熟な人が自分の間違いを認識できないメタ認知的能力に起因しています

Peter Norvigによるプログラム学習の概念に関するこの経験豊富な視点を人々に紹介します。10年でプログラムを学ぶ

研究者(Bloom(1985)、Bryan&Harter(1899)、Hayes(1989)、Simmon&Chase(1973))は、チェスや音楽を含む幅広い分野の専門知識を開発するのに約10年かかることを示しています作曲、電信操作、絵画、ピアノ演奏、水泳、テニス、神経心理学とトポロジーの研究。重要なのは審議の練習です。何度も何度もやり直すだけでなく、現在の能力を超えたタスクに挑戦し、それを試し、その実行中および実行後のパフォーマンスを分析し、間違いを修正します。繰り返します。繰り返します。


確かに、すべての言語を習得しやすくする包括的な原則のセットがあります!

おそらく、しかし、私はこの原則のセットが非常に大きいので、あなたの1週間の範囲外にほとんど常に言語があると主張するでしょう。慣れ親しんでいるリストに新しい概念を追加すると、すぐに手の届かない言語のこのリストは縮小する可能性がありますが、それがなくなることは信じられません。物事に対する概念コンピューティングアプローチのリストは、連結言語からベクトルベースの言語AIメタプログラミングに特化した言語(または正規表現を完全にサポートするために存在する言語)まで、非常に広範です。

10年後、あなたは一般的にプログラムすることができます。これは、ある程度の適切なコードを特定の言語または言語スタイルで記述できることを意味します。だから、10年後、あなたはあなたの人生の残りのためにこれらの無数の幅広い横断的な概念に取り組むことを始める準備ができています、そしてエドガー・W・ダイクストラドナルド・クヌースジョン・D・カーマックであるに足りません、あなたはすべてに到達するつもりはありませんそのうちの。


11
えー 言語を「知る」ことと、言語の小さなバグを発見して修正するのに十分な能力があることには違いがあります。優れたプログラマーは、古風な言語であっても、後者を非常に迅速に行うことができます。
テラスティン

5
@ CharlesE.Grantあなたは、大多数が大学で学んだこと、またHaskellやPrologのような言語に半熟するまでにどれくらいかかるかを過大評価していると思います。関数型プログラミングの経験がない熟練した業界経験のあるエンジニアが、Haskellプログラムの最初のバグを修正できるようになるには1週間以上かかると主張します。
ジミー・ホッファ

11
私はまだ非常に基本的な概念のセットはかなりコンパクトであると主張します。用語の書き換えを理解すると、ラムダ計算、SK計算、チューリングマシン、マルコフアルゴリズムなどを定義するためのツールが手に入ります。少数の真に基本的なアイデアで、ほとんどのコンピューターサイエンスをカバーできます。しかし、もちろん、一見複雑なものの単純なパターンを見るには経験が必要です。
SKロジック

4
「プログラミング言語」=「cスタイルのプログラミング言語」と単純に仮定するのと同様に、これはそれほどDunning–Kruger効果ではないと思います。まともな量のc ++、まともな量のC#、およびいくつかのperlとpythonを知った後、私は1週間でJava、PHPなどにかなり堪能になると期待しています。必ずしもエキスパートではありませんが、少なくともかなり流です。私数日でjavascriptを拾いました。その時点で、それは主にそれらの違いを学習することです。注:最も一般的な実世界の言語 cに似ています。同じことは、必ずしもプロローグにも当てはまるとは限りません。
ネミネム

2
@WayneWerner真剣に、HaskellまたはPrologとalgol言語の違いは構文よりはるかに大きいため、神話を永続させているだけです。上記のテストを受けてください。Haskellを学習し、それがどのように機能するかを確認しようと1週間お過ごしください。正直なところ、それはあなたにとって良いことであり、そうすることから多くを学ぶことができます。
ジミー・ホッファ

51

... 1つだけではなく、すべての言語に適用できるプログラミングスキルをどのように開発できますか?

この質問の鍵は、言語を超越し、あなたがコーディングしている言語ではなく考えることです。

ワット?

経験豊富な多言語プログラマーは、言語のメンタルモデルの抽象構文ツリー(AST)で考えます。「ここにforループが必要」とは思わず、「何かをループする必要がある」と考えて、その言語の適切なfor、while、または反復子または再帰に変換します。

これは、話し言葉の学習で見られるものに似ています。多くの言語を話す人々はその意味を流thinkに考え、それは与えられた言語で出てきます。

このASTの手がかりは、アイトラッキングビデオとアイトラッキングアイトラッキングコード実験(初心者)のペアで、初心者と経験豊富なプログラマーの目の動きを見ることができます。経験豊富なプログラマーは、コードをメンタルモデルに「コンパイル」して頭の中で「実行」しますが、初心者はキーワードごとにコードを反復処理する必要があります。

したがって、すべての言語に適用するプログラミングスキルを開発する問題の鍵は、複数の言語を学習して、1つの言語のメンタルモデルを持つことから距離を置き、自分で問題のASTを生成する能力を開発することです特定の言語に翻訳される主要言語。

頭の中でASTを使用するこの能力が得られると、同様の考え方の学校内で別の言語を学習する(Befungeに行くことはJavaからのジャンプですが、Forthからではなく)はるかに簡単になります-「ただ」 ASTを、新しい言語に翻訳します。新しい言語は、3回目、4回目、5回目(など)に、より簡単になります。


古典的な記事、Real Programmers Do n't Use Pascalがあります。この一部は次のとおりです。

...決定した本物のプログラマは、Fortranプログラムを任意の言語で書くことができます

また、メンタルASTだけを使用することはできない部分もあります。言語でも考える必要があります。これを達成するには少し時間がかかります(私はまだPythonでPerlコードを書いていると非難されており、私の最初のLispコードは「これは非常に良いCプログラムです」と言ってレビューされました)。

これには、ACMが発行した記事「Fortranを任意の言語で記述しない方法」を指摘する必要があります。記事の3番目の段落(先行する引用符ではありません)は、当面の質問に直接対処します。

すべての汎用プログラミング言語を超える優れたコーディングの特性があります。自分に適用すれば、ほとんどすべてのコードに優れたデザインと透明なスタイルを実装できます。プログラミング言語が悪いコードを書くことができるからといって、それをしなければならないという意味ではありません。そして、コーダーが十分に創造的であれば、優れたスタイルとデザインを促進するように設計されたプログラミング言語を使用して、ひどいコードを書くことができます。少しの水が入ったバスタブに浸ることができます。また、例外処理とジェネリック型、ガベージコレクションを使用して、gotoや行番号のない言語で完全に読み取り不可能で維持できないプログラムを簡単に書くことができます。Fortran、Java、C ++、Smalltalkのどれを書いていようと、悪いコードの代わりに良いコードを書くことを選択することができます。

ASTを持っているだけでは十分ではありません。他の言語に翻訳できるASTが必要です。Fortran ASTを頭に入れ、JavaでFortranコードを書くのは良いことではありません。また、言語で考えることができるように、言語とそのイディオムに十分に精通している必要があります(一番上で言ったことにもかかわらず)。

私は、Cコードの作成をやめなかった誰かによって書かれたJavaコードを見てきました。mainメソッドを持つオブジェクトが1つありました。このオブジェクトには、によって呼び出される静的メソッドの束とmain、パブリックフィールドを持つ(したがってストラットによく似た)プライベート内部クラスがありました。Javaで書かれたCコードでした。行われたのは、ある言語の構文を別の言語に翻訳することだけでした。

この点を乗り越えるには、コードを設計するときにそれらの言語で考えるのではなく、言語イディオムで正しく動作するようにデザインをコードに変換するときにそれらの言語で考える、複数の言語でコードを書き続ける必要があります。

そこに到達する唯一の方法-すべての言語に適用できるプログラミングスキルを開発できる-は、言語を学び続け、その精神的なプログラミング言語を1つの言語にリンクするのではなく柔軟に保つことです。

彼が提示たアイデアから多額の借り入れをしてくれたChaosPandionに謝罪します。)


3
謝る必要はありません。あなたは印象的な答えを書いたと思います。
ChaosPandion

その方向に考えさせてくれた人にその答えを書いてもらいたいと思いました。

3
これは非常に良い答えです。二度投票できたらいいな。
ウェインワーナー

2
実際、これがあなたが最初にOOを学ぶべきでない理由です。これは想像できる最悪のASTの1つであなたの脳をフォーマットするからです。
モルグ。

1
@JimmyHoffa-あなたは正しいかもしれません。私は常に最初は1つの言語を使って教えていましたが、後で少しずつ紹介してきました。それでも、私は常にブレーキをかけ、1つの言語に集中させることができるので、探索する価値があると思います。(SMLは実際にはかなり良い選択のようです。)
ChaosPandion

12

言語を選択して、コーディングを開始します。Pythonは初心者にとっては良い選択であり、オンライン利用できるチュートリアルがあるので、適切に行う方法を学ぶことができます。

それからすべてが続きます。あなたの興味は、あなたのプログラムに洗練を加えるフレームワークと設計概念にあなたを導きます。基礎と理論の基礎となるオンラインコースがあり、探索できるさまざまなプログラミングパラダイムなどがあることがわかります。

そして、はい、あなたは基礎のしっかりした基礎を持っているならば、あなたはあなたに新しい何かを教えるHaskellのような言語を発見するでしょう。

一部のプログラマーはおそらく、すべての言語が同じであると考えています。なぜなら、彼らは異なる考え方をするものにさらされていないからです。最も一般的に使用されるすべての言語は、アルゴル(本質的に手続き型言語)から派生したものであり、それらのほとんどはCに似た中括弧言語です。それらはすべて、本質的に同じことを行います。


2
しかし、これは本当ではありませんか?一部のプログラミング言語は、すべてを純粋な関数(決定+ループを含む)としてエンコードします。その他は、セットなどからオブジェクトをプッシュおよびポップすることでモデル化できます。
jozefg

1
本当ではないことは何ですか?歩いたり走ったりする前に、クロールする方法を学ぶ必要があります。
ロバートハーベイ

1
ああ、私は最後の段落を意味するように指定する必要があります、私は残りの答えに同意します
-jozefg

1
最後の段落を、私の感情をよりよく反映したものに置き換えました。
ロバートハーベイ

5

プログラミングとは、ソリューションをプログラミング言語で実装できるような制限された文法で表現できるように解決する問題のことです。したがって、プログラミングの技術は問題を解決する技術です。

特定の言語は、オブジェクト指向、イベント駆動、マルチスレッド、MVCフレームワークベースなど、他のプログラミングパラダイムを招きます。これらはすべて単なるモデルとパターンであり、実装とはまったく関係ありません。

問題をコードに簡単に変換でき、プラットフォームに適したモデルに関連付けられるような方法で、紙に座って問題を解決できるなら、あなたはプログラマーです。できることすべてがこれらのソリューションを取り、選択した言語で実装する場合、それは別の問題です。

私は30年(OMFG!)プログラミングを行っていphp.netますが、PHPでコマンドを検索するために使用しています。

言語の専門知識は、マニュアルまたはスタックオーバーフローを見る頻度に反比例すると思います。プログラミングの専門知識は、コンピュータープログラミング言語と互換性のある方法で問題をどれだけ簡単に解決できるかということです。

関連ニュースで、先週Rubyを学びました。私は「専門家」ではありませんが、Perlで書くことができる問題を解決することができます。


あなたのコメントは、私がモデルとパターンについて読んだ最初のコメントです!私はあなたのコメントに100%賛成です。一つのことは、言語を得て、プログラムを作り始めることです。別の方法は、問題を熟考し、問題を解決するための適切なツールを見つけることです。その後、言語を探してプログラミングを開始します。

3

何でもそうだが、練習は完璧だと思う。常に同じことをしたり、常に同じ言語を使用したりして、すべてのプロジェクトで物事を学び続けないでください。

ギターを弾くことを学ぶようなものに似たものを簡単に描くことができると思います。優れたミュージシャンは、非常に短い期間で新しい曲を演奏することを学ぶことができます。なぜなら、彼らはすでにすべての和音と和音がそのまま演奏される理由の背後にあるすべての理論を知っているからです。彼らはどうやってそれを良くするのですか?彼らは多くの曲を演奏して、すべてのパターンが融合したばかりでなく、同時に、それらのパターンもサブスクライブする実際の文書化された理論で彼らの知識を補った。

そのため、いくつかの曲を非常に上手に演奏できるかもしれませんが、すぐに逸脱したり、新しい曲を拾ったりすることはできません。これはおそらく、同じCRUDアプリケーションを何度も繰り返し作成し、ある時点で何か新しいことを試して、いくつかのWebサービス呼び出しまたは高度なUIを追加するか、まったく新しい言語で作成する.NETプログラマーに相当します。物事がそのように起こる理由をよく見たら、Stack Exchangeで質問するなどしてください。最終的には、継続的に出現するすべてのパターンが表示され、基礎となる理論の一部がわかり、新しい言語を学ぶことはできません恐ろしいほどに思えます。


1

言語を習得するのにかかる時間や言語を習得することの意味については説明しませんが、代わりに実際の問題に対処します。プログラミングを学んだか、プログラミング言語を学んだかを判断する方法です。 。

問題を個別のプロセスに分解し、それらのプロセスを使用して問題を解決することを学んだ場合、プログラミングを学びました。言語の構文を学び、その言語で実装されたときにプロセスの動作を調整する方法を知っていれば、プログラミング言語を学びました。

これは、Lispを使用する場合にFortanでプログラムする必要がある、またはカーソルを使用してdbのテーブルの列の値を加算する必要があるという意味ではありません。言語が実装の詳細であるというだけです。必要なプロセスを変更できるものの、プロセスを特定して作成する必要はありません。最終的には、入出力と望ましい結果を備えた現実世界の実装があります。


1

私の戦略は、常に特定のスキルではなく純粋なスキルに集中することでした。

Python(または任意の言語)の目的に合わせて特別な構文を学習する代わりに、そのカテゴリのすべての問題を最適に解決する方法など、抽象的な問題の解決に頭脳サイクルを費やします。

そうすれば、言語に関係なく何をすべきかを知ることができ、ほとんどの場合、あらゆる言語でのプログラミングに使用できる不朽のスキルを習得できます。

特に、MySQLのような落とし穴やJavaのような独断的な言語でいっぱいのツールは避けてください。これらのツールを使用して学んだことは、ツール固有の知識のかなりの部分を占め、無駄になってしまうからです。

多くの答えで言われたことに反して、他のプログラマーの話を聞いてはいけません、あなたは初心者であり、本当の取引から偽物を伝えることができないので、あなたは塩のスプーンですべてを取った方が良いです。

常に質問し、解決策が高速でエレガントで信頼できる場合にのみ受け入れたいと考えています。


1
「他のプログラマーの話を聞いてはいけない」 -そうだね。「-読みやすく、保守が容易なコードを書いたことをどうやって知るのでしょうか?-コードをレビューした後、あなたの同僚があなたに伝えます。絵画が芸術であるかどうかを見分けることができないのと同じ理由で、あなたに伝えることはできません。したがって、あなたが書いたものを見て、彼または彼女の意見を述べるために、ソフトウェアを維持できる別の人間が必要です...」 (引用元
-gnat

@gnatは好きなことをします。ほとんどのプログラマーはたわごとをコーディングできないため、フィードバックは潜在的に有害であり、それに対処するために袋と塩の袋を持ってくるべきだと言っています。また、「バカが編集可能で読みやすい」ということは、品質のサインではありません。あなたが望むものを信じますが、人々があなたのビジョンに同意しないという理由だけで、-1を回避しないでください。
モルグ。

私の投票は、私が賛成か反対かではなく、投稿の質の評価を示しています(完全な一致、むしろここにポイントがあると思います)。別の意見を引用したのは、それが反対だからではなく、確固たる説明があるからです(「根拠」を参照)。あなたの意見を
裏付ける

なんでも。内容>フォーム。フォームを保持し、コンテンツを保持します。
モルグ。

0

理論的なアプローチがあります。コンピュータが実際にどのように動作するのかを学習します。基本的なプロセッサの命令をどのようにつなぎ合わせて、高度なプログラミングの分野で当たり前のようになっている、より複雑な操作と構造を作成するか。

次に、より実用的なプログラミングアプローチがあります。「良くないプログラマー」と通常ラベル付けされている人々を悩ませている主なこだわりは、彼らが本当に一つの言語しか知らないということです。そして、たとえ他人を知っていても、彼らは母国語で行うのと同じ方法で彼らにプログラミングします。彼らが本当にプログラミングの方法を学びたいなら、それは壊れなければならないサイクルです。それに対するデフォルトの答えは、各プログラミングパラダイムから少なくとも1つの言語を学習することです。だから、OOP言語、関数型言語、スクリプト言語などを学びましょう。そして、学習することによって、構文を学ぶことを意味しません。言語を実際に使用して何かを作成することにより、言語を学びます。

個人的に、新しい言語を学びたいときは、プロジェクトオイラーパズルを使用します。私はすでにOOP言語で解決したパズル(例として)に行き、新しい言語のベストプラクティスに従うようにしながら機能的なものを使用して解決しようとします。2つの根本的に異なるアプローチを使用して同じ問題を解決すると、実際の違いがわかるだけでなく、共通の領域がどこにあるかがわかります。すべての言語で共有されるこれらの共通領域は実際のプログラミングであり、違いはそれを達成するための異なる方法にすぎません。


4
私はコンピューターの物理的挙動について学ぶことを「理論的アプローチ」とは呼びません。「理論的アプローチ」は理論を学び、教会チューリングの論文を読み、カレー・ハワード同型について学び、ラムダ計算と数論の基礎、これらは理論的基盤です。あなたの答えが正しいか間違っているかを言うのではなく、私はそれを理論に欠けているので理論的ではない具体的なアプローチと呼ぶだけだと言っています。
ジミーホッファ

@JimmyHoffa-良い点!
システムダウン

1
「基本的なプロセッサ命令がどのように結び付けられているか(...)」は、初心者にとってはひどいアイデアのように思えます(OPは彼が1人であるとは言いませんでしたが、議論のために仮定することができます。誤解しないでください-CAの魅力的-しかし、「適切な」評価には「アウトオブオーダー」や「マルチスカラー」などの言葉が必要です。おそらく、基本的なプログラミング経験の後に来るでしょう。
Maciej Piechotka

0

さて、私が言いたかったことのほとんどはすでに述べられています。追加したいのは、非常に単純な例えです。

プログラミング言語が単なるツールと見なされる場合でも、一方が得意であること、他方が得意であることの論理はまったくありません。

有名な剣士の束を考えてみてください。7日間の訓練の後、突然剣を置き、槍との戦いに出かけました。どうなるの?彼らは虐殺されるでしょう。

言語は習得するのが難しいことではありませんが、それを上手にするには忍耐と運動が必要です。さらに、プログラミングを学ぶ正しい方法はありません。

プログラミングを学ぶことは、RPGゲームをプレイするようなものです。時には剣、時には槍、時には盾を使います。敵を倒すたびに、経験値が得られます。十分な経験値を獲得したら、レベルアップします。剣を習得しても、弓矢で優秀になることはありません。しかし、以前に得た経験の一部は、スタミナとスピードを向上させます。

ここでは、言語を学習するときにしたいことがいくつかあります。

  • 言語について読んでください。おもしろい場合は、自分でhello worldアプリを試してみてください。
  • いくつかのチュートリアル、トリック、ブログを読んでください。
  • 単純なアプリを作成してお楽しみください。
  • さまざまな機能をテストします。
  • 本当に気に入ったら、本やビデオチュートリアルを購入してください。
  • 適切なライブラリを検索します。
  • 回答を検索し、回答が見つからない場合にのみ尋ねます。
  • 他の人が答えを求めるのを助けます(ここよりも良いところはどこですか?)
  • 何か役に立つものを作りましょう。電卓アプリを作成するのは良い練習かもしれませんが、TO-DOリストアプリを作成し、実際にPC /電話で使用する場合、その感覚は100倍満足です。

新しい言語を体験し、新しいライブラリを探索し、自由時間に新しいトリックを学びます。あなたがそれを知る前に、あなたはあなた自身のスキルであなた自身を驚かせるでしょう。


0

私の場合、実際にプログラムする方法は次のとおりです。

  1. マスターから学びましょう。プログラミングポッドキャストを聴いたり、選択したプログラミングトピックのプロのブログを読んだり、ウェブ全体に散らばる達人による素晴らしいチュートリアルを読んだり、最後にThe Pragmatic Programmerのような叙事詩の本を読んだりします。この本には、著者のキャリアを通じて蓄積された多くのプログラミングの宝石があります。実際にコーディングする方法を学ぶための確実な方法の1つは、他の成功したプログラマーがどのようにコーディングするかを知ることです。
  2. 体験して それについて読んで知ることは一つのことであり、実際にそれを実践しそれを機能させることは別です。経験以上に優れた教師はいないので、コーディングの上限を設定して始めましょう。
  3. 知っている人に聞いてください。今やっているように、チームの先輩からベストプラクティスや物事を行うためのより良い方法について質問することを恐れないでください。それから、スタック交換とインターネットの残りがまだ残っています。

また、コメンターが言ったように、ツールもマスターすることを忘れないでください。すべてのベストプラクティスと最大の理論を学習することはまったく役に立たないか、ツール(この場合はプログラミング言語)について十分に知らないと実装が不十分になります。


0

分析的に考えることができれば、良いスタートが切れたと思います。

プログラミングを教えるほぼこれまでの本で紹介されているように、必要な言語を学習し、一連の例を通して自分で作業します。

次に、自分の問題を解決してください。さまざまなソリューションを見つけて比較してみてください。速度とメモリ使用量は、一般的に重要な要素です。ソリューションを他のプログラマーと話し合ってください。

他のプログラマーのコードを読んで、なぜ彼らがこの方法で問題を解決したのかを理解してください。

また、アルゴリズムに関するいくつかの本を読んで、標準的なアプローチの概要を把握してください。多くの場合、新しい問題は古い問題の修正です。

チームでも多くの練習とコードの操作は、スキルを段階的に向上させるのに役立ちます。

私の意見が少なくとも部分的な質問に答えることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.