プログラムできるようにするには、あらゆる種類の構文を覚えておく必要があるようです。名前を思い出すための良い記憶を持っていない場合、プログラミングを学ぶことはより困難になりますか?
プログラムできるようにするには、あらゆる種類の構文を覚えておく必要があるようです。名前を思い出すための良い記憶を持っていない場合、プログラミングを学ぶことはより困難になりますか?
回答:
プログラムが自然言語を話すためには、あらゆる種類の構文を覚えなければならないよう です。
名前の単語を思い出すのに十分な記憶がない場合、 話すことをプログラムすることを学ぶのはより困難ですか?
人々が言語を備えた「自然な」施設を持っているというのは真実ではありえないでしょうか?
言語を習得するためだけに低レベルのニューラルハードウェアを持っているというのは、本当ではないでしょうか?
プログラミングでは、自然言語の多くの規則に従う人工言語を使用します。
自然言語は、プログラミング言語よりも少し柔軟性があります。
まだ厳しいの文法。ルールは非常にありますが、
話すことができれば、話すことを学んだときに覚えたものよりも何も記憶せずにプログラミングを学ぶことができます。
良いメモリは絶対に不可欠ですが、明白な理由ではありません。
特定のアルゴリズム、ライブラリ、変数名などの詳細を覚えておくことは非常に便利ですが、それほど重要ではありません。Google、DuckDuckGo、manページ、言語固有のドキュメント、および上記のすべてを支援するスマートエディターがあります。これらの松葉杖に頼る必要がない場合に役立ちますが、時々必要な場合はうまくいきます。
メモリが不可欠なのは、作業中の詳細をアクティブな短期メモリに保持することです。設計、データフロー、アルゴリズム、データ構造、およびそれらがどのように相互作用して製品が何をするかを視覚化できることで、OKプログラマーは偉大なプログラマーから切り離されます。積極的にやっているときは、一輪車に乗っている間に巨大な数のボールをうまくジャグリングしているように感じます。
これはしばしばゾーンにいると呼ばれます。中断、愚かな質問、TPSレポートを必要とするボスはすべて、このゾーンからあなたを驚かせます。
メモリが優れているほど、ゾーンに簡単にアクセスでき、そこにとどまりやすくなり、中断後に簡単に元のゾーンに戻ることができます。
この種の記憶に問題がある場合は、記憶が容易になるほど、瞑想のテクニックと記憶のトリックを学ぶことをお勧めします。
流れに逆らって、「はい」と言います。良いメモリは、プログラマーとして素晴らしい資産です。私の記憶は常にプログラミングの責任だと思っていたので、ハンディキャップを補うためにいくつかのトリックを取り上げました。
その変数(以前に3行使用した)がどのようにスペルされたかを覚えているはずです。Intellisenseの使用方法を学べない場合(またはオートコンプリートの形式がエディターまたはIDEにあるもの)。
このプロジェクトで最後に作業したときに何をしていたかをすぐに思い出せるはずです。これは数日前かもしれませんが、昼食の直前かもしれません。できない場合は、書き留めることを学びます。ノートを手元に置いて、自分がやっていること(またはしていること)、TODOアイテム、現在作業中のコードがどのように適合するかについて覚えておく必要のあることを書きます。
デバッグとQAは困難です。理想的には、バグを再現したり、何かをデバッグしようとしたときに行った手順について、非常に詳細なノートを保持する必要があります。これは私がやるべきことはわかっているが、それでも苦労している。
お役に立てれば!
Guerrilla Guide to Interviewing(バージョン3.0)は、スマートで物事を成し遂げることがプログラミングの重要なポイントであるという一般的なリファレンスです。スマートにはいくつかの記憶スキルが含まれていますが、必ずしもあなたが思うほど多くはありません。
IntelliSenseは、構文に関しては、その面で何か助けが必要な場合に大いに役立ちます。学んだことを有意義な方法ですばやく適用できるように学習方法を知ることは、トリビアの質問に答えることができるよりも重要です。
名前を記憶することは、語彙を記憶することとは異なるプロセスを記憶することとはかなり異なる認知機能であると思います。脳損傷を受けて、名前を覚える能力が完全に失われ、それ以外の場合は完全に機能することができた人々の事例がありました。
ですから、プログラミング言語の学習とは無関係に名前を覚える能力があると思います。
ただし、論理的なパターン、ルール、語彙を覚えておくと便利です。
いいえ。ツール(Intellisense、Google、コンパイラ、コードジェネレーター)のメモリ深度は、人間のメモリに比べて無限です。したがって、優れたメモリを備えたプログラマは、頭に穴があるプログラマほど優れたものではありません。
プログラマが実際に必要とするのは、抽象化のレベルを切り替えるときに「フォーカス獲得のピーク速度」です。速くできるほど、プログラマとしてのあなたはより良くなります。ある人は500ミリ秒のような心拍速度を持ち、あなたが集中している脳に最初の血液波が到着します。いくつかは、喫煙サイクルに丸められた約2時間の集中時計を持っています。朝のシャワーが必要な人もいるので、約24時間です。等。良いプログラマと悪いプログラマの違いは、かつて1:80倍前に宣言されましたが、その差はますます大きくなっています。
まず、プログラミングを学ぶことは誰にとっても難しいことです。良いメモリを持っていると確信しています。しかし、生涯学習への献身と愛はより価値があります。構文の学習は、他の繰り返しと同じです。
プログラミングのスキルについて、魔法や超人的なものは何もありません。それに約10,000時間を費やすだけで...他のスキルと同様にマスターになります。もちろん、これは1万時間のトレーニングであり、盲目的にかつ気が散って過去の過ちを繰り返すわけではありません。
平均的なプログラマーがそのタスクを達成するために知っている可能性のある非常に多様なものがあることに同意します。単純なWebサイトを構築するために基本的に制御する必要があるすべての単語、構文、テクニックを考えてください(フロントエンド:html、css、 javascript(いくつかのJsフレームワークもjqueryとしてカウントできます)、バックエンドのajax:PhpまたはASPまたはASP.Net。データベース、mySqlまたはSqlServerまたはOracleまたはMongoDBなどを忘れないでください。言語、パラダイム、シンタックス、パターンなどの膨大なリストがありますが、それらすべてを思い出すことは不可能です。
優れたプログラマーになるのは、実践であり、言語よりもアルゴリズムで実践することであり、最終的には、最も頻繁に使用するものを覚えることになると思います。
素晴らしい記憶は、両方の方法を削減できます。
頭の中の何十もの情報を一度に操作できるなら、プロジェクトにとって重要であるが、他の誰もが恐れているような恐ろしいレガシーコードの意味を理解する(そして願わくは書き換える)のがはるかに簡単になりますそれに触れる。
一方、プロジェクトにとって重要であるが、誰もが触れるのを恐れるほど複雑なその恐ろしいコードは、おそらく数十の情報をジャグリングする素晴らしい能力を持つ誰かによって書かれました。素晴らしい思い出を持っているなら、シンプルさの優雅さに感謝するために一生懸命働いてください。
プログラミング言語の構文を学習するのに大きなメモリは必要ありません。他の人が言ったように、構文はあなたの記憶の中で非常に強化され、すぐに第二の性質になります。道路のどちら側で運転することになっているのか忘れたことがありますか?どの算術記号が加算と減算を表しますか?そうでない場合は、選択した言語の構文の最も一般的な部分をあまり面倒なことなく習得し、あまり一般的ではない部分を調べて調べることができます。
一部のライブラリには、数百または数千の関数、クラス、メソッドがあります。部外者には、すべての機能を使用することを学ぶことは不可能なタスクのように思えます。ただし、ライブラリには基本的な構造がほとんど常にあります。これらすべての機能を覚えようとする代わりに、賢明なプログラマーは、ライブラリがどのように構成され、何ができるかを理解しようとします。それが完了すると、通常、必要なときに必要な関数を見つけるのは非常に簡単です。
要するに、記憶は理解よりもはるかに重要ではありません。
場合によります。Javaおよび.NET内では、標準ライブラリはある種の階層にあり、十分に文書化されています。したがって、ネットワーキングを扱っていることがわかっている場合は、C#でsystem.netにアクセスし、そこから必要な特定のオブジェクト/呼び出しにドリルダウンできます。そのため、その点から詳細を暗記する必要はありません。
あなた自身のプログラムでは、物事を整理/命名する方法がすべてです。Basic of oldのa $、b $、c $ ...、g $などの名前を使用している場合は、幸運を祈ります。FirstName、LastNameのように、それらについて考える方法で名前を付けると、はるかに簡単です。多くの言語には、同様に役立つ命名基準があります。たとえば、Javaには、クラスの特定の属性を取得/設定するためのsetX、getX、および大文字の表記規則があります。だから、もしあなたが人の名前を知っているなら、それはおそらくfirstNameと呼ばれ、ゲッター/セッターはおそらくgetFirstNameとsetFirstNameである。
また、メソッド/関数を短くすると、一度に頭を抑えることができます。適切な名前を使用すると、探しに行く必要がなくなります。たとえば、何をするかという名前を付けた場合、getMaximumValueを呼び出す1つのプロシージャを読み取るときに、おそらくgetMaximumValueを読み取ってそれが何であるかを理解する必要はありません。間違いなく役立ちます。
ざっと目を通すだけで、プログラムを書くという特異なタスクではなく、プログラミングの一般的な意味でメモリについて話す人は誰もいませんでした。
メモリは次の2つのことに役立ちます。
基本的なセマンティクス/ライブラリを覚えている:
これは、繰り返しとGoogleによって簡単に置き換えられます。IOW、あなたが生まれた記憶の量は、この問題を乗り越えることができないために途方もなく低くなければなりません。
大きなプログラムのコンテキストを記憶する:
ここにトリックがあります。プログラムが大きくなると(そして上級になると)、あなたが行う決定は、システムに関する知識の量と、プロジェクトの議論、デバッグ、操作上の緊急事態などに対応する。プッシュが迫ってきたとき、ドキュメンテーション/ウィキエントリの量はあなたを助けません-あなたのチーム「ウィザード」があなたの唯一の選択肢になるでしょう。これが、プリンシパルエンジニアが非常に高く評価される理由の1つです。彼らのほとんどは、この時点で実際にコーディングに全時間を費やしているわけではなく、全体像を把握し、問題や改善に適用するのにより多くの時間を費やしています。良いものは、あちこちで大量のCRとコーディングの変更を行い、新しいリビジョンをプロトタイピングすることで連絡を取り合っています。
IOW、あなたは#1だけで合理的なプログラマーになることができますが、あなたが次のLinusになるつもりなら、少なくともあなたが解決している問題を包含するのに十分なメモリを持っている方が良いです。
私の観察から、作業記憶はその人の価値にほぼ正比例するとさえ言えます。
最後に少しの免責事項:Eideticのメモリを持っているが、そのロジックを適用する際の知的力がゼロ/低い場合、カメラよりもプロジェクトにふさわしくないでしょう。
出会った人の名前を思い出せない場合でも、優れたプログラマになることができます。
私はいつも人々の名前を忘れます。私は10年近くの経験を持つ上級プログラマーです。私の場合、私の恐ろしい聴覚記憶は素晴らしい視覚記憶によって補われています。
それでも、優れたプログラマーに不可欠な要件は、抽象化する能力です。どれだけ覚えていても、どれだけ覚えていなくても、変数の概念と、それをプログラムで使用する方法を理解できないと、優秀なプログラマーになることはできません。
私の提案は、プログラミングの短いコースを1つ試すか、Pythonチュートリアルを完了して、どのように気に入ったかを確認することです。
それは、プログラミングがあなたが追求することに興味があるかもしれないキャリアであるかどうかについて良い考えを与えるはずです。
強調するYES!
現在、私はJAVAとC#を学んでいます。すべてのテストはクローズドブックであるため、JAVAの場合、試験中のすべてのアプリケーションをメモリコーディングすることにより、すべて100%になります。
さらに、それはますます難しくなっています。ニーモニックなどのメモリトリックの使用を開始する必要があります。
高IQ、優れた一般知識、優れた語彙、多数学、高等数学の知識、タッチタイピング、優れた記憶はすべてプログラマーにとっての財産です。
タイプに触れたり、高等数学を行うことができない非常に賢いプログラマーを知っています。