プログラマーには良いメモリが必要ですか?[閉まっている]


16

プログラムできるようにするには、あらゆる種類の構文を覚えておく必要があるようです。名前を思い出すための良い記憶を持っていない場合、プログラミングを学ぶことはより困難になりますか?


20
名前のための良い記憶を持つための名前がありましたが、私はそれが何であるかを忘れました。
マイク2

3
構文に問題がある場合は、最小限の構文を持つ言語を選択してください。Lisp / Clojure?
カイロン

1
最近はプログラミングに一日中費やしていませんが、毎日プログラミングに時間を費やしいます。そして、私は互いに似ていない言語の束でプログラムします。私はC、Java、Javascript、Lisp、VBA、PL / SQL、Ruby、Python、Perl、Smalltalk、そして時々Prologでプログラムします。構文を調べるだけです。
マイクシェリル 'キャットリコール'

4
もしそうなら、私はそれを約13年間偽造してきました。
-ElGringoGrande

1
大学は確かにあなたが良い記憶を必要とするようにそれを教えます、それは全く愚かです。私の場合、CSの最終試験が少なくとも50%(常に非公開)であり、中間試験が通常少なくとも30-40%であることが要求されることで有名です。
宮坂

回答:


34

言語を毎日使用する場合、言語の構文は覚えているほど難しいものではありません。最終的には非常に簡単になります。さまざまなライブラリ関数をすべて覚えるのははるかに難しく、ほとんどの人が使用する最も一般的なものよりも多くを覚えることはできないと思いますが、Web、書籍、またはあなたのために他のすべての詳細を覚えています。


+1。それは本当に第二の性質になります。私は...コードを振り返るとさえ私は従う書式設定ルールのいずれかをやって覚えていない
リード

1
O'Reillyのポケットガイドは、物事を追跡するのに役立ちます。非常に便利です。
世界エンジニア

17

プログラムが自然言語を話すためには、あらゆる種類の構文を覚えなければならないよう です。

名前の 単語を思い出すのに十分な記憶がない場合、 話すことをプログラムすることを学ぶのはより困難ですか?

人々が言語を備えた「自然な」施設を持っているというのは真実ではありえないでしょうか?

言語を習得するためだけに低レベルのニューラルハードウェアを持っているというのは、本当ではないでしょうか?

プログラミングでは、自然言語の多くの規則に従う人工言語を使用します。

自然言語は、プログラミング言語よりも少し柔軟性があります。

まだ厳しいの文法。ルールは非常にありますが、

話すことができれば、話すことを学んだときに覚えたものよりも何も記憶せずにプログラミングを学ぶことができます。


13

はい:

短期記憶について話しているなら、はい。プログラマーは、問題のプログラミング/解決時に複数の情報を同時に処理できる必要があります。

番号:

長期記憶について話しているなら、そうではありません。情報の呼び出しに非常に役立つ多くのマニュアルとリファレンス+ツールがあります。確かにこれらの長期的な情報を覚えておけば、より速い開発者(全体)になりますが、それは前提条件ではありません。


1
+1質問に関する短期記憶と長期記憶の有用性の有用な比較を描画するため。誰かがそうするのを見るのを待っていた。
KChaloux

8

良いメモリは絶対に不可欠ですが、明白な理由ではありません。

特定のアルゴリズム、ライブラリ、変数名などの詳細を覚えておくことは非常に便利ですが、それほど重要ではありません。Google、DuckDuckGo、manページ、言語固有のドキュメント、および上記のすべてを支援するスマートエディターがあります。これらの松葉杖に頼る必要がない場合に役立ちますが、時々必要な場合はうまくいきます。

メモリが不可欠なのは、作業中の詳細をアクティブな短期メモリに保持することです。設計、データフロー、アルゴリズム、データ構造、およびそれらがどのように相互作用して製品が何をするかを視覚化できることで、OKプログラマーは偉大なプログラマーから切り離されます。積極的にやっているときは、一輪車に乗っている間に巨大な数のボールをうまくジャグリングしているように感じます。

これはしばしばゾーンにいると呼ばれます。中断、愚かな質問、TPSレポートを必要とするボスはすべて、このゾーンからあなたを驚かせます。

メモリが優れているほど、ゾーンに簡単にアクセスでき、そこにとどまりやすくなり、中断後に簡単に元のゾーンに戻ることができます。

この種の記憶に問題がある場合は、記憶が容易になるほど、瞑想のテクニックと記憶のトリックを学ぶことをお勧めします。


1
プログラムをモジュール化し、名前を正しく付けると、メモリ要件が削減されると実際に言います。20個の変数を持つ2ページのメソッドがある場合、サブタスクを実行する他の適切な名前のメソッドを呼び出す5行のメソッドがある場合よりも多くのことを覚えておく必要があります。また、複雑なものを変更するたびに、それを行うために「ゾーン」に入る必要があります。単純な場合は、変更を加えることができます。「ゾーン」は不利だと思います。
チェルボ

1
@Cervo-はい、個々のモジュールと小さなコード単位をコーディングする場合、上記で説明したことは実際には必要ありません。しかし、システム全体をデバッグし、問題が存在するきれいできれいなモジュールを見つけようとするとき、できるだけ多くの状態を念頭に置くことができます。
-unpythonic

なぜ世界でこれが1票しかなかったのですか?コードが周囲のものにどのように適合するかを覚えていなければ、コードを適切に設計することはできません。現代のプログラミングの多くは、これに伴う詳細の量を削減することですが、仕事をするために覚えなければならないという事実ではなく、覚えなければならない量を単純に減らします。
ローレンペクテル

5

流れに逆らって、「はい」と言います。良いメモリは、プログラマーとして素晴らしい資産です。私の記憶は常にプログラミングの責任だと思っていたので、ハンディキャップを補うためにいくつかのトリックを取り上げました。

  • その変数(以前に3行使用した)がどのようにスペルされたかを覚えているはずです。Intellisenseの使用方法を学べない場合(またはオートコンプリートの形式がエディターまたはIDEにあるもの)。

  • このプロジェクトで最後に作業したときに何をしていたかをすぐに思い出せるはずです。これは数日前かもしれませんが、昼食の直前かもしれません。できない場合は、書き留めることを学びます。ノートを手元に置いて、自分がやっていること(またはしていること)、TODOアイテム、現在作業中のコードがどのように適合するかについて覚えておく必要のあることを書きます。

  • デバッグとQAは困難です。理想的には、バグを再現したり、何かをデバッグしようとしたときに行った手順について、非常に詳細なノートを保持する必要があります。これは私がやるべきことはわかっているが、それでも苦労している。

お役に立てれば!


4

Guerrilla Guide to Interviewing(バージョン3.0)は、スマートで物事を成し遂げることがプログラミングの重要なポイントであるという一般的なリファレンスです。スマートにはいくつかの記憶スキルが含まれていますが、必ずしもあなたが思うほど多くはありません。

IntelliSenseは、構文に関しては、その面で何か助けが必要な場合に大いに役立ちます。学んだことを有意義な方法ですばやく適用できるように学習方法を知ることは、トリビアの質問に答えることができるよりも重要です。


2

名前を記憶することは、語彙を記憶することとは異なるプロセスを記憶することとはかなり異なる認知機能であると思います。脳損傷を受けて、名前を覚える能力が完全に失われ、それ以外の場合は完全に機能することができた人々の事例がありました。

ですから、プログラミング言語の学習とは無関係に名前を覚える能力があると思います。

ただし、論理的なパターン、ルール、語彙を覚えておくと便利です。


2
あなたが正しいと確信しています。Myers-Briggs Type Indicatorは、INTP(プログラマーになるのに特に適している)が人々の名前を覚えるのに苦労していると言います。私の場合はそうです。私はあなたのペットの名前、あなたの車のナンバープレート、0x0D0A0Dのような奇妙な改行のある去年のスタックトレースのプリントアウトをどこに置いたかを覚えています。あなた自身の名前は、しかし、私はそれを10分忘れます。(私が若かったとき、私のサッカーチームのすべての人々の名前を得るのに3年かかりました。)
マイクシェリル 'キャットリコール'

2

いいえ。ツール(Intellisense、Google、コンパイラ、コードジェネレーター)のメモリ深度は、人間のメモリに比べて無限です。したがって、優れたメモリを備えたプログラマは、頭に穴があるプログラマほど優れたものではありません。

プログラマが実際に必要とするのは、抽象化のレベルを切り替えるときに「フォーカス獲得のピーク速度」です。速くできるほど、プログラマとしてのあなたはより良くなります。ある人は500ミリ秒のような心拍速度を持ち、あなたが集中している脳に最初の血液波が到着します。いくつかは、喫煙サイクルに丸められた約2時間の集中時計を持っています。朝のシャワーが必要な人もいるので、約24時間です。等。良いプログラマと悪いプログラマの違いは、かつて1:80倍前に宣言されましたが、その差はますます大きくなっています。


1

いいえ、必要なものを取得するためにGoogleがどのように機能するかを理解する必要があります

私は恐ろしい記憶を持っていますが、グーグルのスキルは素晴らしいです^ _ ^

すべての深刻さにおいて、構文の場所を知っている限り、覚えておく必要はありません。それが、インテリセンス、ヘルプファイル、リファレンスガイド、インターネットなどの目的です。


1

まず、プログラミングを学ぶことは誰にとっても難しいことです。良いメモリを持っていると確信しています。しかし、生涯学習への献身と愛はより価値があります。構文の学習は、他の繰り返しと同じです。

プログラミングのスキルについて、魔法や超人的なものは何もありません。それに約10,000時間を費やすだけで...他のスキルと同様にマスターになります。もちろん、これは1万時間のトレーニングであり、盲目的にかつ気が散って過去の過ちを繰り返すわけではありません。


1

この投稿は英語で、適切な構文で書いています。明らかに、言語の使用方法を思い出すことができます。新しい言語を習得し、常に適切に使用するのに十分な頻度で使用するだけです。人間指向の言語とは異なり、コンピュータープログラミング言語は、間違った構文を使用したことをいつでも通知するため、実際には簡単です。:-)


1

平均的なプログラマーがそのタスクを達成するために知っている可能性のある非常に多様なものがあることに同意します。単純なWebサイトを構築するために基本的に制御する必要があるすべての単語、構文、テクニックを考えてください(フロントエンド:html、css、 javascript(いくつかのJsフレームワークもjqueryとしてカウントできます)、バックエンドのajax:PhpまたはASPまたはASP.Net。データベース、mySqlまたはSqlServerまたはOracleまたはMongoDBなどを忘れないでください。言語、パラダイム、シンタックス、パターンなどの膨大なリストがありますが、それらすべてを思い出すことは不可能です。

優れたプログラマーになるのは、実践であり、言語よりもアルゴリズムで実践することであり、最終的には、最も頻繁に使用するものを覚えることになると思います。


1

素晴らしい記憶は、両方の方法を削減できます。

頭の中の何十もの情報を一度に操作できるなら、プロジェクトにとって重要であるが、他の誰もが恐れているような恐ろしいレガシーコードの意味を理解する(そして願わくは書き換える)のがはるかに簡単になりますそれに触れる。

一方、プロジェクトにとって重要であるが、誰もが触れるのを恐れるほど複雑なその恐ろしいコードは、おそらく数十の情報をジャグリングする素晴らしい能力を持つ誰かによって書かれました。素晴らしい思い出を持っているなら、シンプルさの優雅さに感謝するために一生懸命働いてください。

プログラミング言語の構文を学習するのに大きなメモリは必要ありません。他の人が言ったように、構文はあなたの記憶の中で非常に強化され、すぐに第二の性質になります。道路のどちら側で運転することになっているのか忘れたことがありますか?どの算術記号が加算と減算を表しますか?そうでない場合は、選択した言語の構文の最も一般的な部分をあまり面倒なことなく習得し、あまり一般的ではない部分を調べて調べることができます。

一部のライブラリには、数百または数千の関数、クラス、メソッドがあります。部外者には、すべての機能を使用することを学ぶことは不可能なタスクのように思えます。ただし、ライブラリには基本的な構造がほとんど常にあります。これらすべての機能を覚えようとする代わりに、賢明なプログラマーは、ライブラリがどのように構成され、何ができるかを理解しようとします。それが完了すると、通常、必要なときに必要な関数を見つけるのは非常に簡単です。

要するに、記憶は理解よりもはるかに重要ではありません。


0

場合によります。Javaおよび.NET内では、標準ライブラリはある種の階層にあり、十分に文書化されています。したがって、ネットワーキングを扱っていることがわかっている場合は、C#でsystem.netにアクセスし、そこから必要な特定のオブジェクト/呼び出しにドリルダウンできます。そのため、その点から詳細を暗記する必要はありません。

あなた自身のプログラムでは、物事を整理/命名する方法がすべてです。Basic of oldのa $、b $、c $ ...、g $などの名前を使用している場合は、幸運を祈ります。FirstName、LastNameのように、それらについて考える方法で名前を付けると、はるかに簡単です。多くの言語には、同様に役立つ命名基準があります。たとえば、Javaには、クラスの特定の属性を取得/設定するためのsetX、getX、および大文字の表記規則があります。だから、もしあなたが人の名前を知っているなら、それはおそらくfirstNameと呼ばれ、ゲッター/セッターはおそらくgetFirstNameとsetFirstNameである。

また、メソッド/関数を短くすると、一度に頭を抑えることができます。適切な名前を使用すると、探しに行く必要がなくなります。たとえば、何をするかという名前を付けた場合、getMaximumValueを呼び出す1つのプロシージャを読み取るときに、おそらくgetMaximumValueを読み取ってそれが何であるかを理解する必要はありません。間違いなく役立ちます。


JBキングが言及したインテリセンスは省略しましたが、C#にとっても同様に役立ちます。私はそれを持たないJava用のエディタを使用する傾向があります:(それでも残りは適用されますが、短いメソッドを保持する場合は、命名規則に固執すると、インテリセンスはさらに良く機能します。あなたのビットは圧倒。
チェルボ

Cervo私は主にC#開発者ですが、最近Javaでますます多くのことをしています。IntelliJ Ideaを試してください。彼らの最新バージョンはかなり良いインテリセンスを持っています。Visual Studioには適していませんが、近いです。
エイドリアン

0

メモリはそれほど重要ではありません。あなたがそれについてまったく心配しているなら、私は朝に私の家の財布や鍵を定期的に忘れます。全員に少なくとも1回は間違った名前で電話をかけます(私の家族やガールフレンドを含む)。いつも家の周りで何かをするのを忘れてしまいました。

結局のところ、プログラミングの教義は「自転車に乗る方法を決して忘れない」のと同じようにあなたの頭の中に残ります。特定の詳細と実装の詳細はそれほど重要ではありません。それらはいつでもGoogleで検索できます。


0

Joel On Softwareからプログラマの生産性について-

生産性は、短時間の記憶で多くの小さな詳細を一度に処理できることにかかっています。

そのため、重要なタスクを与えられたプログラマーにとって短期記憶は非常に重要です。
しかし、長期記憶はそれほど重要ではないと思います。


0

ざっと目を通すだけで、プログラムを書くという特異なタスクではなく、プログラミングの一般的な意味でメモリについて話す人は誰もいませんでした。

メモリは次の2つのことに役立ちます。

  1. 基本的なセマンティクス/ライブラリを覚えている:

    これは、繰り返しとGoogleによって簡単に置き換えられます。IOW、あなたが生まれた記憶の量は、この問題を乗り越えることができないために途方もなく低くなければなりません。

  2. 大きなプログラムのコンテキストを記憶する:

    ここにトリックがあります。プログラムが大きくなると(そして上級になると)、あなたが行う決定は、システムに関する知識の量と、プロジェクトの議論、デバッグ、操作上の緊急事態などに対応する。プッシュが迫ってきたとき、ドキュメンテーション/ウィキエントリの量はあなたを助けません-あなたのチーム「ウィザード」があなたの唯一の選択肢になるでしょう。これが、プリンシパルエンジニアが非常に高く評価される理由の1つです。彼らのほとんどは、この時点で実際にコーディングに全時間を費やしているわけではなく、全体像を把握し、問題や改善に適用するのにより多くの時間を費やしています。良いものは、あちこちで大量のCRとコーディングの変更を行い、新しいリビジョンをプロトタイピングすることで連絡を取り合っています。

IOW、あなたは#1だけで合理的なプログラマーになることができますが、あなたが次のLinusになるつもりなら、少なくともあなたが解決している問題を包含するのに十分なメモリを持っている方が良いです。

私の観察から、作業記憶はその人の価値にほぼ正比例するとさえ言えます。

最後に少しの免責事項:Eideticのメモリを持っているが、そのロジックを適用する際の知的力がゼロ/低い場合、カメラよりもプロジェクトにふさわしくないでしょう。


0

出会った人の名前を思い出せない場合でも、優れたプログラマになることができます。

私はいつも人々の名前を忘れます。私は10年近くの経験を持つ上級プログラマーです。私の場合、私の恐ろしい聴覚記憶は素晴らしい視覚記憶によって補われています。

それでも、優れたプログラマーに不可欠な要件は、抽象化する能力です。どれだけ覚えていても、どれだけ覚えていなくても、変数の概念と、それをプログラムで使用する方法を理解できないと、優秀なプログラマーになることはできません。

私の提案は、プログラミングの短いコースを1つ試すか、Pythonチュートリアルを完了して、どのように気に入ったかを確認することです。

それは、プログラミングがあなたが追求することに興味があるかもしれないキャリアであるかどうかについて良い考えを与えるはずです。


-1

強調するYES!

現在、私はJAVAとC#を学んでいます。すべてのテストはクローズドブックであるため、JAVAの場合、試験中のすべてのアプリケーションをメモリコーディングすることにより、すべて100%になります。

さらに、それはますます難しくなっています。ニーモニックなどのメモリトリックの使用を開始する必要があります。

高IQ、優れた一般知識、優れた語彙、多数学、高等数学の知識、タッチタイピング、優れた記憶はすべてプログラマーにとっての財産です。

タイプに触れたり、高等数学を行うことができない非常に賢いプログラマーを知っています。


現実の世界は閉じた本ではありません。ほとんどすべての場合、クローズドブックテストは、良いテストの作り方を知らない教師を示しています。
ローレンペクテル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.