似乎必须记住各种语法才能进行编程。如果没有足够的记忆力来记住名字,学习编程会更困难吗?
似乎必须记住各种语法才能进行编程。如果没有足够的记忆力来记住名字,学习编程会更困难吗?
Answers:
如果您正在谈论短期记忆,那么可以。程序员在编程/解决问题时必须能够同时处理多个信息。
如果您在谈论长期记忆,那不是真的。有许多手册和参考资料+工具可以极大地帮助您回忆信息。当然,记住这些长期信息将使您成为一个更快的开发人员(总体而言),但这不是前提条件。
良好的记忆是绝对必要的,但并非出于显而易见的原因。
记住有关特定算法,库,变量名等的详细信息非常方便,但并不是很重要。您拥有Google,DuckDuckGo,手册页,特定于语言的文档以及智能编辑器,可以为上述所有方面提供帮助。如果您不需要依靠这些拐杖,那么它会有所帮助,但是如果您确实不时需要它们,您会感觉很好。
内存必不可少的地方在于将活动的细节保持在活动的短期内存中。能够可视化设计,数据流,算法,数据结构以及它们如何相互作用以完成产品的一切工作,这可以将OK程序员与出色的程序员区分开。当您积极进行这项运动时,感觉就像您在骑独轮车时成功地处理了许多球一样。
这通常称为在区域中。中断,愚蠢的问题,需要TPS报告的老板都把您从这个区域震撼了。
您的记忆力越好,越容易进入该区域,就越容易停留在该区域,并且在中断后越容易回到该区域。
如果您对这种记忆有疑问,我建议您学习冥想技巧和记忆技巧,因为记忆变得越容易,作为程序员的成功就越大。
我要顺其自然,说是。良好的记忆力是程序员的宝贵财富。我的记忆力一直被视为编程方面的责任,因此我选择了一些技巧来弥补自己的弱点:
您应该能够记住该变量(之前使用3行)的拼写方式。如果您不能学习使用Intellisense(或在编辑器或IDE中使用任何形式的自动完成功能)。
您应该能够快速记住上次进行此项目时的工作。这可能是几天前的事,可能是午餐之前。如果不能,请学习写下来。随身携带一本笔记本,写下您(正在做的)工作,TODO项目以及您需要记住的有关正在使用的当前代码如何组合在一起的内容。
调试和质量检查很困难。理想情况下,您应该保留一个非常详细的笔记本,其中包含尝试重现错误或调试某些东西时所采取的步骤。我知道这是我应该做的事情,但仍在努力。
希望这可以帮助!
《游击面试指南》(3.0版)是常见的参考资料,指出聪明和干事是编程的重点。Smart确实具有一些记忆技巧,但不一定像您想象的那样多。
如果在语法方面需要帮助,Intellisense可以在语法方面提供很多帮助。知道自己的学习方式,以便可以有意义的方式快速运用所学知识,比能够回答琐事问题更为重要。
我相信记住名字与记住过程的记忆功能完全不同,后者与记住词汇的方式不同。曾经有一些人遭受了脑部受伤,这完全消除了记住名字的能力,而本来可以很好地发挥作用。
所以我想说,记住名字的能力与学习编程语言无关。
但是,记住逻辑模式,规则和词汇会有所帮助。
我同意,普通程序员可能会了解各种各样的事情来完成其任务,只需考虑所有基本构建一个简单网站所应控制的单词,语法和技术(在前端:html,css, javascript(在后端也可以将一些Js框架视为jquery),ajax:Php或ASP或ASP.Net,并且不要忘记数据库,mySql或SqlServer或Oracle或MongoDB等。语言,范式,语法,模式等种类繁多,不可能记住所有内容。
它认为,使一个好的程序员成为实践的基础,是使用算法而不是使用语言进行实践,并且最终您将记住您最常使用的东西,其余的总有google = P
美好的记忆可以双向发展。
如果您可以一次在头脑中处理数十个信息,那么您将有更轻松的时间来理解(并希望重写)那段对项目至关重要的可怕的旧代码,但它是如此复杂,以至于其他所有人都害怕触摸它。
另一方面,那段对项目至关重要的可怕代码,却是如此复杂,以至于其他所有人都不敢触摸它,这可能是由具有超强能力处理许多信息的人编写的。如果您有出色的记忆力,请加倍努力以培养对简单优雅的欣赏。
学习编程语言的语法不需要太多的记忆。正如其他人所说的那样,语法在您的内存中得到了极大的增强,以至于它很快就成为了第二天性。您是否忘记了应该在道路的哪一边行驶?哪些算术符号表示加法和减法?否则,您将掌握所选语言语法中最常见的部分,而不会遇到太多麻烦,并且可以在出现不太常见的位时查找它们。
一些库具有成百上千的函数,类和/或方法。局外人似乎很难学习使用所有功能。但是,图书馆几乎总是有一些底层结构。聪明的程序员没有尝试记住所有这些功能,而是试图了解库的组织方式和功能。完成此操作后,通常很容易在需要时找到所需的功能。
简而言之,记忆远没有理解重要。
这取决于。在Java和.NET中,标准库处于某种层次结构中,并且有据可查。因此,如果您知道要处理网络,则可以使用C#进入system.net,然后从那里深入到所需的特定对象/调用。因此,从这一方面来说,您无需记住细节。
在您自己的程序中,这与您如何组织/命名事物有关。如果您使用的是诸如Basic之类的a $,b $,c $ ...或g $之类的名称,那么祝您好运。如果您以诸如FirstName,LastName之类的方式命名事物,它会容易得多。许多语言都有命名标准,也有帮助。例如,在Java中,有setX约定,用于获取/设置类的特定属性的getX以及大写约定。因此,如果您知道一个人有名字,那么它可能称为firstName,而getter / setter可能是getFirstName和setFirstName .....所以这些约定很有帮助...
此外,较短的方法/功能可帮助您一次减少脑筋。并且使用专有名称可以帮助您无需查找。例如,如果您为事物的功能命名,那么在读取一个调用getMaximumValue的过程时,您可能无需读取getMaximumValue即可确定其作用...但是随着函数/方法变得越来越长且嵌套得更多,则可以得到更好的内存绝对有帮助。
通过快速阅读,我没有看到任何人在一般的编程意义上谈论内存,而不是在编写程序的单一任务中谈论内存。
内存对于两件事很有用:
记住基本的语义/库:
这很容易被重复和Google取代。IOW,您所生来的内存量必须低得离谱,才能克服这个问题。
在大型程序中记住上下文:
这就是诀窍所在。随着程序的变大(并且您变得更高级),您做出的决定完全取决于您对系统的了解以及能否在项目讨论,调试,应对紧急情况等时,一切努力将无济于事,文档/ Wiki条目也无济于事-团队“向导”将是您唯一的选择。这就是为什么首席工程师被如此高估/报酬的原因之一。他们中的大多数人此时可能并不会花所有时间进行实际编码,他们会花更多时间与全貌保持同步,并将其应用于任何问题/改进。好的代码只是通过做大量的CR和在此处和那里/对新修订版进行原型更改来保持联系。
IOW,您可能是一个仅凭#1就能成为一名合理的程序员,但是如果您要成为下一个Linus,则最好拥有很多内存,至少足以容纳您要解决的问题。
根据我的观察,我什至可以说工作记忆几乎与人的价值成正比。
总结一下免责声明:如果您拥有理想的记忆力,但在应用该逻辑时知识力量为零/低,那么对项目而言,对照相机而言,这将是没有好处的。
我说是肯定的!
目前,我正在学习JAVA和C#。所有的测试都是封闭式的,因此对于JAVA来说,所有100%的内容都来自内存,用于编码考试中的所有应用程序。
而且,它变得越来越难。现在,我需要开始使用助记符等记忆技巧。
我想说,高智商,良好的常识,良好的词汇量,综合能力,较高的数学知识,触摸打字和良好的记忆力对于程序员来说都是财富。
我知道非常聪明的程序员不会接触类型或做更高的数学等。他们做到了,他们会变得更好。