我需要了解编程语言的内在知识吗?


11

我是Python的初学者,到目前为止我真的很喜欢。我经常想到的一个问题是,我是否需要了解并学习编程语言的内在知识(例如Python)。您可能知道,Python本身是用C编写的。

所以我的问题是:必须精通一种语言才能熟练或熟练使用该语言。我将此问题与“自然”语言进行比较。我不知道我的母语语法的每一个细节,但我能够用该语言毫无问题地表达自己。这是我说我的语言很流利的时候。那也适用于编程语言吗?


4
当您必须担心性能时,内部结构变得很重要。

7
我对CPython和PyPy内部有相当的了解,但是80%的时间对我的Python编程毫无用处(甚至在分散注意力方面是有害的)。我很高兴我知道剩下的20%,这不仅是为了提高性能,还在于理解愚蠢的错误消息并避免不可移植的行为。


2
不,不。绝对不是任何一个的重复。

1
这取决于您所指的“内部”,但是我知道,专业C#和Java程序员至少对CLI或JVM有一定了解并不罕见。
user16764 2013年

Answers:


8

您无需了解任何编程语言的内部知识,就可以使用该语言编写程序。但是,您越了解该语言,您的程序就会越好。

  1. 数据结构和算法的知识将帮助您选择最适合您的特定任务的数据结构。一些语言在内部拥有这些数据结构。

  2. 理解语言的“文化”有助于您遵循“最佳实践”编写程序,使它们更易于理解,更易于维护且性能更好。

  3. 为该语言编写一个编译器(或为该语言编写另一种语言的编译器)可以使您对这种语言有深刻的理解,并使您的程序超越普通水平。

  4. 精通其他语言(尤其是其他范式的语言)会使您成为主要语言的更好的程序员,因为您可以将这些技能和工具带入主要语言。

因此,您不需要了解计算机就可以在其上编写程序。但是,了解计算机的工作方式会使您更好地为其编写程序。


7

我不知道我的母语语法的每一个细节,但我能够用该语言毫无问题地表达自己。这是我说我的语言很流利的时候。那也适用于编程语言吗?

简单地说,是的。只要您能很好地表达自己(并理解他人),那么您就会被认为能说流利的语言。

就是说,仅仅流利并不足以胜任某些工作。某些类型的作者,需要出色的公共演讲技能的工作以及一些专注于该语言的学者都需要“比流利更好”来了解它。同样,某些程序员专业要求了解语言内部知识,但对于大多数人来说,了解与如何询问其编号或订购芝士汉堡等价的编程语言就足够了。


0

我用以下语言定义“熟练”:

  • 了解大多数语法,以及足够的知识来研究在他人代码中发现的任何新功能。
  • 任何标准库和/或框架的工作知识,以及能够查找,阅读和理解有关需要使用的任何新内容的正式文档的能力。
  • 理解并有能力使用该语言的常用习语和命名约定。

请注意,该语言的工作方式不在此列表中,但是有很多“学习能力”。至少对内部结构有一个粗略的了解可能会有所帮助,但不一定要精通。但是,对它们的了解足够多,您将能够理解您正在阅读的文档中的所有参考文献,这是一个非常好的主意。

例如:我知道VB.NET和C#都被编译为.NET的IL(中间语言),然后针对目标框架进行编译。我对IL的了解不多,但我了解的知识足以让我在看到它时就认识到它,并从一般意义上理解它如何处理某些事情。我认为自己精通C#,但不精通VB.NET,即使“内部”相同,而且我对它们的理解也不深。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.