程序员需要良好的记忆力吗?[关闭]


16

似乎必须记住各种语法才能进行编程。如果没有足够的记忆力来记住名字,学习编程会更困难吗?


20
有一个名字可以很好地记住名字,但我忘了它是什么。
麦克两次

3
如果语法有问题,请选择语法最少的语言。Lisp / Clojure?
凯龙

1
这些天我不花一整天的编程时间,但我确实每天花一些时间进行编程。我用一堆彼此不同的语言编程。我使用C,Java,Javascript,Lisp,VBA,PL / SQL,Ruby,Python,Perl,Smalltalk甚至不时使用Prolog进行编程。我只是查找语法。
Mike Sherrill'Cat Recall'

4
如果他们这样做,我已经伪造了大约13年。
ElGringoGrande 2011年

1
大学当然会像您需要良好的记忆一样教它,这真是愚蠢的。Mine因要求CS期末考试价值至少50%(总是闭卷)而期中考试通常至少30-40%而臭名昭著。
宫坂丽

Answers:


34

如果每天使用一种语言,语法就不会像您想起来的那么难。最终,它变得非常容易。记住所有各种库函数可能要困难得多,而且我认为大多数人都无法记住他们所使用的最常用的函数,但是如果您可以访问网络,书籍或其他类似的东西,也可以为您记住所有其他详细信息。


+1。它确实成为了第二天性。我回头看代码,甚至都不记得我遵循的任何格式化规则了……
Reid

1
奥莱利(O'Reilly)的袖珍指南可帮助我跟踪事情。很有用。
世界工程师

17

似乎必须记住各种语法才能 编程说出自然语言。

如果没有足够的记忆力来记住名字 单词,学习编程语音会更困难 吗?

人们拥有语言的“自然”设施是真的吗?

我们拥有低级的神经硬件只是为了获取语言是不可能的,是吗?

编程使用遵循自然语言许多规则的人工语言。

自然语言有一点点比编程语言更具灵活性。

语法仍然严格。有很多规则

如果您会说,则可以学习编程而无需记住任何东西,而不仅仅是记忆。


13

是:

如果您正在谈论短期记忆,那么可以。程序员在编程/解决问题时必须能够同时处理多个信息。

没有:

如果您在谈论长期记忆,那不是真的。有许多手册和参考资料+工具可以极大地帮助您回忆信息。当然,记住这些长期信息将使您成为一个更快的开发人员(总体而言),但这不是前提条件。


1
+1用于在与问题相关的短期和长期记忆的有用性之间进行有益的比较。等着看有人这样做。
KChaloux 2012年

8

良好的记忆是绝对必要的,但并非出于显而易见的原因。

记住有关特定算法,库,变量名等的详细信息非常方便,但并不是很重要。您拥有Google,DuckDuckGo,手册页,特定于语言的文档以及智能编辑器,可以为上述所有方面提供帮助。如果您不需要依靠这些拐杖,那么它会有所帮助,但是如果您确实不时需要它们,您会感觉很好。

内存必不可少的地方在于将活动的细节保持在活动的短期内存中。能够可视化设计,数据流,算法,数据结构以及它们如何相互作用以完成产品的一切工作,这可以将OK程序员与出色的程序员区分开。当您积极进行这项运动时,感觉就像您在骑独轮车时成功地处理了许多球一样。

这通常称为在区域中。中断,愚蠢的问题,需要TPS报告的老板都把您从这个区域震撼了。

您的记忆力越好,越容易进入该区域,就越容易停留在该区域,并且在中断后越容易回到该区域。

如果您对这种记忆有疑问,我建议您学习冥想技巧和记忆技巧,因为记忆变得越容易,作为程序员的成功就越大。


1
我实际上是说,如果您更好地模块化程序并命名正确的话,将会减少内存需求。如果您有一个包含20个变量的两页方法,那么与拥有一个5行方法并调用其他命名方法来执行子任务的方法相比,您要记住的要多得多。同样,每次您想修改一些复杂的东西时,都必须进入“区域”来进行。如果它更简单,那么您只需进行更改即可。我会说“区域”是一种责任。
Cervo

1
@Cervo-是的,当您对单个模块和较小的代码单元进行编码时,我上面所描述的实际上不是必需的。但是,当您调试整个系统并尝试查找问题所在的哪个模块时,它会记住尽可能多的状态。
2011年

为什么世界上只有一票?如果不记得代码如何适合周围的内容,就无法正确设计代码。许多现代编程都是要减少所需的细节,但这只是减少了您必须记住的数量,而不是您在执行工作时必须记住的细节。
罗伦·佩希特尔

5

我要顺其自然,说。良好的记忆力是程序员的宝贵财富。我的记忆力一直被视为编程方面的责任,因此我选择了一些技巧来弥补自己的弱点:

  • 您应该能够记住该变量(之前使用3行)的拼写方式。如果您不能学习使用Intellisense(或在编辑器或IDE中使用任何形式的自动完成功能)。

  • 您应该能够快速记住上次进行此项目时的工作。这可能是几天前的事,可能是午餐之前。如果不能,请学习写下来。随身携带一本笔记本,写下您(正在做的)工作,TODO项目以及您需要记住的有关正在使用的当前代码如何组合在一起的内容。

  • 调试和质量检查很困难。理想情况下,您应该保留一个非常详细的笔记本,其中包含尝试重现错误或调试某些东西时所采取的步骤。我知道这是我应该做的事情,但仍在努力。

希望这可以帮助!


4

《游击面试指南》(3.0版)是常见的参考资料,指出聪明和干事是编程的重点。Smart确实具有一些记忆技巧,但不一定像您想象的那样多。

如果在语法方面需要帮助,Intellisense可以在语法方面提供很多帮助。知道自己的学习方式,以便可以有意义的方式快速运用所学知识,比能够回答琐事问题更为重要。


2

我相信记住名字与记住过程的记忆功能完全不同,后者与记住词汇的方式不同。曾经有一些人遭受了脑部受伤,这完全消除了记住名字的能力,而本来可以很好地发挥作用。

所以我想说,记住名字的能力与学习编程语言无关。

但是,记住逻辑模式,规则和词汇会有所帮助。


2
我很确定你是对的。Myers-Briggs类型指示器表示,INTP(特别适合成为程序员)很难记住人们的姓名。我知道我的情况是对的。我可以记住您的宠物的名字,您的汽车的牌照,以及我在上面放了您给我的堆栈跟踪记录的打印输出,该记录具有怪异的换行符,如0x0D0A0D。不过,您自己的名字,我会在10分钟后忘记。(年轻时,我花了三年时间才获得足球队所有人的名字。)
Mike Sherrill'Cat Recall'

2

不能。与人类记忆相比,工具(Intellisense,Google,编译器,代码生成器)的记忆深度是无限的。因此,具有良好记忆力的程序员并不比在头部有孔的程序员好得多。

程序员真正需要的是在抽象级别之间切换时的“焦点获得峰值速度”。越快越能成为一名程序员。有些人的心跳速度大约为500毫秒,随着第一波血流到达大脑,您就会集中精力。有些人的吸烟时间大约为2小时左右。有些需要早上淋浴,大约需要24小时。好的程序员和坏的程序员之间的区别曾经在1年前被声明为1:80,而这种差距在不断扩大。


1

不,您只需要了解Google如何工作即可获得想要的东西

我的记忆力很差,但是我的谷歌搜索技能很棒^ _ ^

认真地说,只要您知道在哪里可以找到语法,就无需记住它。这就是智能感知,帮助文件,参考指南,互联网等的用途。


1

首先,每个人都很难学习编程。我确信拥有良好的记忆力会有所帮助。但是,奉献精神和热爱终身学习更有价值。学习语法就像其他任何东西一样,重复。

编程技巧没有什么神奇或超人的。只需花费大约10,000个小时,它就会像其他技能一样成为大师。当然,这是10,000个小时的培训,不会盲目而又麻木地重复过去的错误。


1

您使用正确的语法以英语撰写了这篇文章。显然,您能够记住如何使用语言。您只需要学习一种新的语言并经常使用它就可以始终保持正确。与以人为本的语言不同,计算机编程语言将始终在使用不正确的语法时通知您,因此实际上更容易。:-)


1

我同意,普通程序员可能会了解各种各样的事情来完成其任务,只需考虑所有基本构建一个简单网站所应控制的单词,语法和技术(在前端:html,css, javascript(在后端也可以将一些Js框架视为jquery),ajax:Php或ASP或ASP.Net,并且不要忘记数据库,mySql或SqlServer或Oracle或MongoDB等。语言,范式,语法,模式等种类繁多,不可能记住所有内容。

它认为,使一个好的程序员成为实践的基础,是使用算法而不是使用语言进行实践,并且最终您将记住您最常使用的东西,其余的总有google = P


1

美好的记忆可以双向发展。

如果您可以一次在头脑中处理数十个信息,那么您将有更轻松的时间来理解(并希望重写)那段对项目至关重要的可怕的旧代码,但它是如此复杂,以至于其他所有人都害怕触摸它。

另一方面,那段对项目至关重要的可怕代码,却是如此复杂,以至于其他所有人都不敢触摸它,这可能是由具有超强能力处理许多信息的人编写的。如果您有出色的记忆力,请加倍努力以培养对简单优雅的欣赏。

学习编程语言的语法不需要太多的记忆。正如其他人所说的那样,语法在您的内存中得到了极大的增强,以至于它很快就成为了第二天性。您是否忘记了应该在道路的哪一边行驶?哪些算术符号表示加法和减法?否则,您将掌握所选语言语法中最常见的部分,而不会遇到太多麻烦,并且可以在出现不太常见的位时查找它们。

一些库具有成百上千的函数,类和/或方法。局外人似乎很难学习使用所有功能。但是,图书馆几乎总是有一些底层结构。聪明的程序员没有尝试记住所有这些功能,而是试图了解库的组织方式和功能。完成此操作后,通常很容易在需要时找到所需的功能。

简而言之,记忆远没有理解重要。


0

这取决于。在Java和.NET中,标准库处于某种层次结构中,并且有据可查。因此,如果您知道要处理网络,则可以使用C#进入system.net,然后从那里深入到所需的特定对象/调用。因此,从这一方面来说,您无需记住细节。

在您自己的程序中,这与您如何组织/命名事物有关。如果您使用的是诸如Basic之类的a $,b $,c $ ...或g $之类的名称,那么祝您好运。如果您以诸如FirstName,LastName之类的方式命名事物,它会容易得多。许多语言都有命名标准,也有帮助。例如,在Java中,有setX约定,用于获取/设置类的特定属性的getX以及大写约定。因此,如果您知道一个人有名字,那么它可能称为firstName,而getter / setter可能是getFirstName和setFirstName .....所以这些约定很有帮助...

此外,较短的方法/功能可帮助您一次减少脑筋。并且使用专有名称可以帮助您无需查找。例如,如果您为事物的功能命名,那么在读取一个调用getMaximumValue的过程时,您可能无需读取getMaximumValue即可确定其作用...但是随着函数/方法变得越来越长且嵌套得更多,则可以得到更好的内存绝对有帮助。


我省略了JB King提到的智能感知,但是对于C#来说,它确实也有帮助。我倾向于使用不带Java的编辑器:(尽管如此,其余的方法仍然适用,如果您保留较短的方法,坚持使用命名约定,则intellisense效果更好。如果您的方法中有50个变量,则intellisense可能仍会保留您有点不知所措
Cervo

Cervo我主要是C#开发人员,但是最近在Java中做的越来越多。试用IntelliJ Idea。他们的最新版本具有很好的智能感知能力。不是Visual Studio不错,但很接近。
阿德里安

0

记忆并不是那么重要。如果您对此感到担心,我经常会在早上忘记我的钱包或钥匙。我至少给每个人打了一个错误的名字(包括我的家人和女友)。我简直忘记了一直在房子周围做事。

归根结底,编程的宗旨仍然像“您永远不会忘记如何骑自行车”一样摆在您的脑海中。具体细节和实现细节并不那么重要。您可以随时通过Google搜索这些内容。


0

来自Joel On Software关于程序员生产力的信息-

生产力取决于能否一次兼顾短期记忆中的许多小细节。

因此,短期内存对于承担关键任务的程序员非常重要。
但是我认为长期记忆并没有那么重要。


0

通过快速阅读,我没有看到任何人在一般的编程意义上谈论内存,而不是在编写程序的单一任务中谈论内存。

内存对于两件事很有用:

  1. 记住基本的语义/库:

    这很容易被重复和Google取代。IOW,您所生来的内存量必须低得离谱,才能克服这个问题。

  2. 在大型程序中记住上下文:

    这就是诀窍所​​在。随着程序的变大(并且您变得更高级),您做出的决定完全取决于您对系统的了解以及能否在项目讨论,调试,应对紧急情况等时,一切努力将无济于事,文档/ Wiki条目也无济于事-团队“向导”将是您唯一的选择。这就是为什么首席工程师被如此高估/报酬的原因之一。他们中的大多数人此时可能并不会花所有时间进行实际编码,他们会花更多时间与全貌保持同步,并将其应用于任何问题/改进。好的代码只是通过做大量的CR和在此处和那里/对新修订版进行原型更改来保持联系。

IOW,您可能是一个仅凭#1就能成为一名合理的程序员,但是如果您要成为下一个Linus,则最好拥有很多内存,至少足以容纳您要解决的问题。

根据我的观察,我什至可以说工作记忆几乎与人的价值成正比。

总结一下免责声明:如果您拥有理想的记忆力,但在应用该逻辑时知识力量为零/低,那么对项目而言,对照相机而言,这将是没有好处的。


0

如果您难以记住遇到的人的名字,您仍然可以成为一名出色的程序员。

我一直都忘记人们的名字。我是一位拥有近十年经验的高级程序员。就我而言,巨大的视觉记忆弥补了我可怕的听觉记忆。

即使这样,一个好的程序员的基本要求还是要具有抽象能力。无论您记得多少,如果您不了解变量的概念以及如何在程序中使用它,您都不会成为一名优秀的程序员。

我的建议是,您可以尝试一门编程短期课程,或者完成Python教程以了解自己的喜好。

那应该使您对编程是否是您可能感兴趣的职业有所了解。


-1

我说是肯定的!

目前,我正在学习JAVA和C#。所有的测试都是封闭式的,因此对于JAVA来说,所有100%的内容都来自内存,用于编码考试中的所有应用程序。

而且,它变得越来越难。现在,我需要开始使用助记符等记忆技巧。

我想说,高智商,良好的常识,良好的词汇量,综合能力,较高的数学知识,触摸打字和良好的记忆力对于程序员来说都是财富。

我知道非常聪明的程序员不会接触类型或做更高的数学等。他们做到了,他们会变得更好。


现实世界不是封闭的书。在几乎所有情况下,封闭式书本测试表明老师不知道如何进行良好的测试。
罗伦·佩希特尔
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.