構文を忘れているプログラマ


17

優れたプログラマーは、コードを書くときに舌の先に構文を持つ必要がありますか?彼らがオンラインで簡単なものをグーグルで検索した場合、あなたはそれらをどうしますか?彼らは良いのか悪いのか(たぶんどこを探すべきか知っている)?プログラマは良いメモリを持っているべきですか?これは優秀なプログラマーの特徴ですか?


1
「シンプル」に応じて。いくつかの例/背景が役立ちます。また、プログラミングしている言語/環境との矛盾の問題である可能性があります。
rwong

1
私はそれが優れたプログラマーの定義の一部になると思うでしょう。参照を参照してコード行を記述できない場合、タイムリーに何かを実行することはできません。一方、それは物事を暗記するための呼び出しではありません。
ストーンメタル

C ++では、私は通常、時には構文はちょうどであるかもしれないことを...私がいないので、頻繁にそれを使用すると、ポインタ・ツー・機能(会員またはしない)のための構文を見ている奇妙な
マチューM.

回答:


25

プログラミングに関する私の哲学は、それが「心の状態」であり、残りが「単なる構文」であるということです。(つまり、重要ではない)

そうは言っても、単純なものを調べる必要はありません。少なくとも、定期的に作業している言語についてはそうではありません。復習が必要であり、情報を見つける方法を知ることは間違いなく良いスキルです。ただし、コア構文は間違いなくよく知られている必要があります。そうしないと、検索に時間がかかりすぎ、プログラミングに時間がかかりすぎます。


8
正確には、話された言語のように:あなたはそれを話す方法を知っている必要がありますが、辞書は大きな助けになります。多くの場合、語彙を習得する前に何を表現したいかを知っています。
ケビンCantu

@Kevin-まさに-しかし、誰かがそのような参照を行う頻度によって、誰かの流さを判断することもできます。私たちのほとんどは時々それらを使用しますが、あなたは彼らは言語を話すことができるが、辞書を継続的に参照する必要性を感じたと言った誰かに質問するでしょう。
ジョンホプキンス

@jon正確に。話された/書かれた言語のメタファーを継続し、ある程度の努力で、言語への露出を増やし、語彙を改善することができます。したがって、読みたいという私の貪欲な欲求と、優れたiPhoneフラッシュカードアプリケーションの検索を続けました。プログラミング言語についても同様に、特定のイディオムに問題がある場合は、それを示すスニペットを作成し、簡単に参照できるように手元に置いておきます。そして、もちろん、私は時折これらの問題領域を再訪することを強調します。少し時間がかかりましたが、ようやく厄介な切り替え文をこのように覚えました。
ジョージマリアン

私は、より「高度な」開発者も複数の言語を使用している可能性があり、時にはそれらを混乱させると思います。私はまだC#とC ++の間の多次元配列の宣言を時々混乱させ(「arr [] []またはarr [、]」だった)、調べなければなりません。
スティーブンエバーズ

28

それはあなたの言いたいこと次第ですが、短い答えはイエスです。

プログラマはあちこちでセミコロンやブレースを忘れるでしょうか?承知しました。おそらくめったに使用しないため、switchステートメントの構文を検索しますか?まあ、私は。ActionScriptで作業しますが、代わりにJavaのように記述しますか?間違いなく。特に別の言語で何年も働いている場合は特に、新しい言語での入力に慣れるまでに時間がかかる場合があります。

本当に心配なのは、プログラマーがIDEで支援しても構文の先頭または末尾を作成できない場合です。人がセミコロンが何のためであるか、またはそれらの派手な中括弧が何であるかを知らない場合、彼らはもっと勉強する必要があります。


8
まあ、switchステートメントの正確な構文は、通常私にも悲しみを与えます。
ジョージマリアン

それは、Rubyを好む場合でも、Pythonスクリプトにこだわるのと同じ理由です。私は仕事でPythonでコーディングする必要があり、やり取りが複雑になりすぎます。
LennyProgrammers

何らかの理由でそのわずかとらえどころ- switch文の構文については、1
billy.bob

5
言うまでもなく、時として構文が混ざり合うことのある無数の言語は言うまでもありません。
ジョサフ

@dave問題は記号の組み合わせにあると思います。これは通常だswitch、その後、開口部ブラケット、その後、括弧の中で何かが続き、caseあるラベルがない、その後、その後の括弧内に、コロン、通常セミコロンでtermimanted文。そして、breakステートメントを忘れないでください。私は最終的にそれを暗記したのは努力と意志の力であり、それでも時折ダブルチェックする必要があります。念のため。
ジョージマリアン

10

それ以外の優秀なプログラマーが、流languageな言語の構文を定期的に調べる必要がある場合、私は間違いなく驚くでしょう。もちろん、実際にはあまり使用されないコーナーケースがあり、完全に受け入れられる場合があります。優れたプログラマーがそれらを知らないようにするには、原則として、流fluentなプログラマーは構文を調べる必要はありません。S / heはライブラリから関数とクラスを検索する必要があります:)


+1。私は自分がC ++に堪能であると考えており、関数名と引数を毎日調べています。std::stringたとえば、のすべてのメンバーを記憶することはありません。
クリスト

8

言語を定期的に変更したり、同時に3つまたは4つの言語で作業している立場にいる場合、それについてできることはあまりありません。しばらくの間、私は絶え間ない切り替えを必要とするプロジェクトに取り組み、自分を「参照プログラマー」と呼び始めました。


4
+1完全に同意します。ノットの割合で言語間を飛び回るコーダー(多くのプロジェクトにまたがる1日で外出先で10以上の言語を持つことができます)は、特に標準ライブラリー関数で、類似した言語のあいまいな違いを覚えるのに苦労します。あなたが年をとるにつれて、これは悪化します。
10

これが私の問題です。私たちは職場で非常に多くのことを進めているので、基本的なことすら覚えていません。特に、通常はコンテキストだけを使用できるため、誰かが近くにforループまたは関数を書いたので、その構文をコピーするだけです。私は最近構文を学ぶことを強制されてきましたが、それを覚えさせるための練習を期待するだけでは十分ではありません。シンタックスを脳の中に挽くための1つの言語(Javascript)を選びました。特にホワイトボードのインタビューの練習で、それは多くを助けています。
ジェム

5

私は15年以上にわたってC ++を書いてきましたが、その難解な構文上のコーナーのいくつかを心からまだ知りません。
関数テンプレートを再度明示的にインスタンス化するにはどうすればよいですか?そして、template-template引数を持つテンプレートを部分的に特殊化する構文は何ですか?そして、ポインタの配列を受け取る関数へのポインタの配列へのポインタを返す関数を宣言することから始めないでください...

この世界には、C ++の構文のすべてを心から知っている人が、せいぜい1〜20人いると思います(もしあれば)。そして、これらはすべて、C ++コンパイラのフロントエンドを作成することでお金を稼いでいるでしょう。


4

ここでグーグルの「構文」に興味があります。

私の疑い(および恐怖)は、呼び出しがどのパラメータを取るかについて話しているのではなく(ほとんどのIDEはそこにプロンプ​​トを出すので、Googleではないでしょう)、実際の「Xの実行方法」タイプのことです。

IDEにより、以前は必要だった方法で正確な名前とパラメーターリストを記憶する必要がなくなり、多くの人がそれについて少し面倒になりましたが、それで問題ありません。

しかし、Googleに必要なものは何ですか?私にとって、それは通常構文ではありません。それは、あなたが本当に知らないか、またはなかなか馴染みのないものです。

もちろん、それはグーグルのものを持たなければならないということではありません-言語は最近非常に広く、ほとんどの人はすべてを知っていませんが、あなたが言語に堪能であると主張するなら、Googleはルールではなく例外であるべきだと言います。

比較的珍しいことをしている場合や、何か別のことをしてから言語にさびている場合を除いて、私にとっては、言語を「知っている」と主張する場合、10%を超えてググリングするべきではありませんせいぜい、それは本当に非常に具体的なものでなければなりません。

これは良い記憶を持つことだという考えに関連して、そうではありません。それは、あなたが本当に(表面的にではなく)知っている何かに対して得られる本能的な感覚のようなものです。私はレシピなしでメランザネパルミジャーナを調理する方法を知っているという事実を、私が良い記憶を持っているという兆候、それは私がその料理を調理する方法を理解しているという兆候です-それらは微妙に異なるものです。

それに、これを自問してください。レストランのキッチンに行って、シェフが料理本を絶えず見ているのを見つけるでしょうか?それとも、そのモデルのHayesマニュアルをめくってメカニックがあなたの車に取り組んでいるのを見るには?それらのいずれかを見た場合、私はその人がどれだけ良いかについてかなり不安になるでしょう。


反対票にコメントしますか?不一致が何であるかに本当に興味を持っています。
ジョンホプキンス

+ syntax != api
1-

3

私の意見はノーです。重要な構文ではありませんが、問題を解決したり目標を達成するためのあなたのロジックです。


0

プログラミングは、基礎となるセマンティックブリックを使用して何かを構築することがすべてであるため、構文は、言語の基礎となるセマンティクスの単なるビューです。言語が使用する基本概念を理解していない場合、構文をどれだけ覚えても問題ありません。コードは恐ろしい混乱になります。かつて誰かが言ったように、「優秀なプログラマーは頭にインタープリターとコンパイラーを持っています。」実際の作業が行われる場所ではないので、構文に言及していないことに注意してください。

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