程序员忘记语法


17

好的程序员在编写代码时是否需要掌握语法?如果他们在网上搜索简单的商品,您会怎么看?他们是好是坏(也许他们知道在哪里寻找)?程序员应该有一个美好的记忆吗?这是一个好的程序员的特质吗?


1
取决于如何“简单”。一些例子/背景将是有用的。这可能与他们正在编程的语言/环境不一致。
rwong 2010年

1
我认为这将是一个好的程序员的定义的一部分,因为它属于快速\高效的范畴。如果您无法通过咨询参考来编写一行代码,那么您将无法及时完成任何工作。另一方面,这并不是要记住事情。
stonemetal 2010年

在C ++中,由于我使用它的频率不高,通常我必须查找指向函数指针的语法(无论是否为成员)……也许有时语法只是很奇怪
Matthieu M. 2010年

Answers:


25

我的编程哲学是,这是一种“心态”,其余的是“仅语法”。(即不重要)

也就是说,不必查找简单的内容。至少不是您经常使用的语言。需要复习并没有错,知道如何查找信息无疑是一项很好的技能。但是,核心语法绝对应该是众所周知的。否则,您将花费太多时间进行搜索,而花费的时间却很少。


8
确实,就像口头语言一样:您必须知道如何说,但是字典是很大的帮助。通常,您在掌握词汇表之前就知道要表达什么!
凯文·坎图

@Kevin-的确如此-但是您还可以根据某人的引用频率来判断某人的流畅程度。我们大多数人会不时使用它们,但是您会问一个人,他们说他们会说一种语言,但觉得有必要不断引用字典。
乔恩·霍普金斯

@jon精确地。继续使用口头/书面语言的隐喻,我们可以付出一些努力来增加对这种语言的了解并提高词汇量。因此,我对于阅读和继续寻找良好的iPhone闪存卡应用程序的需求旺盛。同样,对于编程语言,当我对某个特定的习惯用法有疑问时,我会创建一个片段来演示它,并将其放在手边以便于参考。而且,我当然会偶尔重温这些问题区域。花了一些时间,但我终于以这种方式记住了讨厌的switch语句。
乔治·玛丽安

我认为,更“先进”的开发人员也可能会使用多种语言,有时会使他们感到困惑。我仍然不时地在C#和C ++之间混淆多维数组的声明(是“ arr [] []还是arr [,]”),必须查找它。
史蒂文·埃弗斯

28

这取决于您的意思,但是简短的答案是肯定的。

程序员会在这里和那里忘记分号或花括号吗?当然。他们是否会因为可能很少使用switch语句而查找它的语法?好吧,我知道。我是否可以使用ActionScript,但可以像Java一样编写它?绝对是 习惯于使用一种新的语言可能会花费一些时间,特别是如果您使用另一种语言已经多年。

真正值得关注的是,即使在没有IDE的帮助下,程序员也无法做到语法的首尾。如果该人不知道分号是什么意思,或者那些花哨的花括号是什么,那么他们还有更多的工作要做。


8
呵呵,switch语句的确切语法通常也使我感到悲伤。
乔治·玛丽安

这就是我坚持使用Python脚本的相同原因,即使我更喜欢Ruby。我必须在工作中使用Python进行编码,来回地太混乱了。
LennyProgrammers 2010年

+1为switch语句语法-由于某种原因其难以捉摸
billy.bob 2010年

5
更不用说人们知道的多种语言和语法有时可以融合在一起。
Josaph

@dave我认为问题在于符号的混合。通常是switch,其后是括号中的内容,然后是一个中括号,然后是case带有一个不在括号中的标签的内容,然后是一个冒号,然后这些语句通常以分号结尾。而且,请不要忘记这些break声明。我终于通过努力和绝对的意志力来记住了它,我仍然不得不偶尔仔细检查一下。只想确认一下。
乔治·玛丽安

10

如果一个本来不错的程序员不得不例行地查询他们能熟练使用的一种语言的语法,我一定会感到惊讶。对于一个优秀的程序员来说,他们并不了解它们,但通常来说,一个熟练的程序员不必查找语法。他/他必须从库中查找函数和类:)


+1。我会认为自己精通C ++,并且每天都会查询函数名称和参数。例如,我永远不会记住的每个成员std::string
克里斯多

8

如果您处于定期更改语言或同时使用3种或4种语言的位置,那么您无能为力。一段时间之后,我结束了需要不断切换的项目的工作,并开始将自己称为“参考程序员”,不得不查找比我更喜欢的东西。


4
+1完全同意。以不同速度在各种语言之间跳动的编码器(我每天可以在许多项目中每天有10种语言或更多种语言)确实难以记住相似语言之间的晦涩差异,尤其是在标准库函数中。我注意到,随着年龄的增长,情况会变得更糟。
2010年

这是我的问题,我们在工作中经历了很多事情,有时甚至连基本都记不起。特别是由于通常只能使用上下文,因此有人在附近编写了for循环或函数,因此我只复制了该语法。我最近一直在强迫自己学习语法,仅靠练习让我记住它是不够的。我选择了一种语言(JavaScript)将语法磨入我的大脑。这很有帮助,特别是在白板面试练习中。
Jemmeh

5

我从事C ++的开发已经超过15年了,但是我仍然不了解它的某些奥秘的语法方面。
如何再次显式实例化功能模板?那么,部分专用于带有template-template参数的模板的语法是什么?而且,不要让我开始声明一个函数,该函数返回一个指向指针数组的指针,该指针数组指向要指向的指针数组的函数...

我怀疑这个世界上最多只有一两个人(如果有的话)真正地真正了解C ++的所有语法。这些可能都是通过编写C ++编译器前端来赚钱的。


4

我对这里的谷歌搜索“语法”感到好奇。

我的怀疑(和担心)是,我们不是在谈论调用采用什么参数(因为大多数IDE都会在此处提示您,所以您不会在Google上看到它们),而是实际的“如何做X”类型的事情。

IDE不再需要像以前那样记住精确的名称和参数列表,这使许多人对此有些懒惰,但这很好。

但是您需要Google提供的服务吗?对我来说,这通常不是语法,这只是您不是很了解或者只是非常熟悉而已。

当然,这并不是说必须使用Google的东西是不对的-如今,语言可能非常广泛,很少有人知道所有内容,但是我想说,如果您声称自己能胜任某种语言,那么Google应该是例外而不是规则。

对我而言,除非您做的是相对不寻常的事情,或者在做完一些不同的事情后对语言感到生疏,否则如果您声称“知道”一种语言,那么您不应谷歌搜索超过10%的内容最多,这应该是非常具体的东西。

关于这是关于拥有良好记忆力的想法,并非如此。这是关于某种您真正(而非表面上)知道的东西获得的本能感觉。我不认为我会在没有食谱的情况下烹制Melanzane Parmigiana的事实并不能说明我有很好的记忆力,这表明我了解如何烹制这道菜-它们是完全不同的事情。

此外,问问自己,您是否希望进入餐厅厨房并发现厨师不断查看食谱?还是希望看到您的汽车修理工正在为该模型浏览Hayes手册?如果我看到这些事情中的任何一个,我都会对那个人的好坏感到不安。


评论否决票?真正对分歧有兴趣。
乔恩·霍普金斯

+ syntax != api
1-

3

我的看法是不。它不是很重要的语法,而是您解决问题或达成目标的逻辑。如果您打算使用多种语言,那自然会在某个时候忘记确切的语法。


0

语法只是在语言的基础语义之上的视图,因为编程全部是关于使用基础语义砖来构建内容的。如果您不了解该语言使用的基本概念,那么您记忆语法的能力如何都无关紧要,您的代码将是一团糟。就像有人曾经说过的那样:“好的程序员脑子里有一个解释器和一个编译器。” 请注意,这里没有提及语法,因为这并不是真正的工作所在。

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.