プログラミング言語の内部を理解する必要がありますか?


11

私はPythonの初心者で、これまでのところ本当に気に入っています。よく頭に浮かぶ質問の1つは、プログラミング言語の内部構造を理解する必要があるかどうかです(したがって、私の場合はPythonです)。ご存知かもしれませんが、Python自体はCで書かれています。

だから私の質問は次のとおりです。この言語に堪能であるか流であるためには、プログラミング言語にどのくらい深く潜らなければならないのか。この質問を「自然な」言語と比較します。私は母国語の文法のすべての詳細を知りませんが、その言語で問題なく自分を表現することができます。これは私が言語に堪能だと言うときです。それはプログラミング言語にも当てはまりますか?


4
パフォーマンスを心配する必要がある場合、内部構造が重要になります。
ロボット

7
私はCPythonとPyPyの内部についてはかなり知っていますが、80%の時間は私のPythonプログラミングにとって役に立たない(あるいは気を散らすような有害なものですら)。ただし、他の20%がそのことを知っていてうれしいです。パフォーマンスのためだけでなく、愚かなエラーメッセージを理解し、移植性のない動作を避けるためでもあります。


2
いや、いや。確かにそれらのいずれかの複製ではありません。

1
「内部」の意味に依存しますが、プロのC#およびJavaプログラマーが少なくともCLIまたはJVMをある程度理解していることは珍しくありません。
user16764

回答:


8

その言語でプログラムを作成するために、プログラミング言語の内部について何も知る必要はありません。ただし、言語を理解すればするほど、プログラムは良くなります。

  1. データ構造とアルゴリズムの知識は、特定のタスクに最適なデータ構造を選択するのに役立ちます。一部の言語は、これらのデータ構造を内部に持っています。

  2. 言語の「文化」を理解することは、「ベストプラクティス」に従うプログラムを作成するのに役立ち、理解しやすく、保守しやすく、パフォーマンスが向上します。

  3. その言語のコンパイラー(またはその言語の別の言語のコンパイラー)を作成すると、その言語を深く理解し、プログラムを単なる平均以上に改善することができます。

  4. 他の言語(特に、異なるパラダイムの言語)に習熟していると、その言語のスキルとツールを主要言語で活用できるため、主要言語のプログラマーとして優れています。

当然の結果として、プログラムを作成するためにコンピューターについて何も知る必要はありません。しかし、お使いのコンピューターがどのように機能するかを知っていると、そのためのプログラムを書くのが上手になります。


7

私は母国語の文法のすべての詳細を知りませんが、その言語で問題なく自分を表現することができます。これは私が言語に堪能だと言うときです。それはプログラミング言語にも当てはまりますか?

簡単に言えば、はい。自分をうまく表現できる(そして他の人を理解できる)限り、あなたはその言語に流consideredであるとみなされます。

とは言っても、単に流forであることだけでは、仕事によっては十分ではありません。特定の種類の著者、典型的な人前で話すスキルを必要とする仕事、および言語に焦点を当てる一部の学者は、「流fluentよりも優れている」ことを知る必要があります。同様に、一部のプログラマーの専門分野では言語内部の知識が必要ですが、プログラミング言語を知っているほとんどの人にとっては、彼女の番号を要求する方法やチーズバーガーを注文する方法と同等です。


0

私は次のように言語で「熟練」を定義します。

  • 構文の大部分と、他の人のコードで見つけた新しい機能を研究するのに十分な知識を理解してください。
  • 標準ライブラリおよび/またはフレームワークの実用的な知識、および使用する必要がある新しいものに関する公式ドキュメントを検索、読み取り、理解する能力。
  • 言語の一般的なイディオムと命名規則の理解と使用能力。

言語がどのように機能するかはこのリストにはありませんが、「学習する能力」が非常に高いことに注意してください。少なくとも内部の大雑把な理解があれば役立ちますが、熟練している必要はありません。ただし、それらについて十分に理解しているので、読んでいるドキュメントの参照を理解することは非常に良い考えです。

たとえば、VB.NETとC#の両方が.NETのIL(中間言語)にコンパイルされ、その後、ターゲットフレームワーク用にコンパイルされることを知っています。ILについてはあまり知りませんが、ILを見たときにそれを認識するのに十分な知識があり、特定の事柄を扱う方法を一般的な意味で理解しています。「内部」は同じであり、それらに対する私の理解は深いものではありませんが、VB.NETではなくC#に習熟していると考えています。

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