如何正确有效学习大学计算机
如何正确有效学习大学计算机
很多同学想要学习计算机,但是怎么都学不会,为了帮助同学们更好的学习计算机,以下是学习啦小编分享给大家的学习大学计算机的方法,希望可以帮到你!
学习大学计算机的方法
专注并着重于基础
经常有同学向小蒜抱怨编程难学,但是他们的状态总是今天看 C 语言课程,明天又看 Java,后天又看 Python,东搞西搞!看到别人做网页,自己兴趣了来了,学学学……这是几乎所有初学者的通病。多学一些知识并不是坏事,但是如果你今天想学这个,明天又想学那个。这样你就只能永远徘徊在技术的门外。
学习计算机科学,最重要的是要打下扎实的基础,先专注于一门语言,然后再拓展到其他语言,养成快速学习新语言的能力。然后是算法和数据结构,这些都是超出语言的,就是说不管是学 C 学 Java 学 Python 还是别的什么,这一部分都是一致的。因此学习这部分的知识可以说是事半功倍的事情。
学会使用搜索
学会正确使用搜索将会帮助你在学习道路上更快地解决问题,有很多同学一遇到问题自己也不思考就急于找人问。在 github、google 和在线网站上面有大多数现成的解决方案。买本老教授的书学编程的日子已经过去了。现在的代码来得快去得也快,而至关重要的事情是培养自己快速学习新知识的能力。掌握一些使用搜索引擎的技巧,如学会使用搜索语法、布尔检索等方法,能让你在学习的道路上事半功倍。
坚持写代码
就像运动员每天锻炼一样,经常练习写代码其实也是学习计算机科学必须要做的。这不仅适用于写代码,事实上,这句话可应用于任何行业。骑自行车,打篮球,读书,烹饪等等等等。你做的越多,你就会越擅长,熟能生巧就是这个道理。
这也是计算机领域的真理。如果你想擅长编程,那么你就必须每天写代码。代码写得越多,你才会觉得它越容易,并且越擅长于编程。每天写代码,每天学一点新的东西。随着时间的积累,你不但能学到很多,你也会变得更为优秀。
让代码错落有致
错落有致,使用空格,代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好的基础。在课程中小蒜再三提到了养成良好的代码便携风格的重要性,但是仍有同学写的一塌糊涂,既不利于自己检查找错,也不利于别人帮助查看。在这里小蒜推荐大家阅读 Robert C. Martin 写的《Clean Code》,作者给出了一系列行之有效的整洁代码操作实践。
学会检查与提问
难以有效地自我检查一直是初学者最大的弊端。小蒜经常会遇到有同学因为一个非常小的失误导致在一个问题上卡壳好久,而发生这一切只是因为他不愿意回头去检查。所以,在你责怪别人之前,先检查自己的代码,想一想福尔摩斯的这条建议,“一旦你排除了种种不可能,剩下的不管有多么难以置信,一定就是真相”。
在遇到问题上同理,有很多问题并不是问题本身很难,小蒜遇到的多数提问者的根本原因是:“没有明白这个问题究竟是怎样的问题。”可想而知,当提问者都不清楚自己所面对的问题,回答问题的人也就只能爱莫能助了。
减少熬夜
随着学得越深,很多同学也染上程序员的恶习——熬夜。虽说有时晚上夜深人静的时候工作效率奇高,但是放弃睡眠就像是高利贷借款,第二天所要付出的代价非常高昂。当真的累了的时候,往往更容易走上偏执的道路,而不是反思路线是否正确。当我们累了的时候,创造力极容易急剧下降以致于想不出创造性的解决方案。而且当你疲倦的时候,你的耐心和忍受力就会受到严重的影响,就像炮仗一样一点就着。
软件开发很少是短途冲刺,大多是马拉松。而且是多场马拉松。所以,试图今天压榨出 110% 的性能而明天只有 70% 的性能可用,绝对是一个坏主意。
学习大学计算机的好处
1.英语为技术插上翅膀
搞计算机的同学应该都知道英语的重要性,至少如果你英语好一些,写程序不至于捉襟见肘用拼音给变量命名。同时,因为很多先进的技术理念都会以英文形式出现,如果你要等到翻译的版本,一方面要晚一大步,另外一方面,也要忍受翻译腔的伤害。
至于为什么翻译的文献不能尽如人意,一方面是技术人才在翻译领域的训练不够,翻译也是一门语言转换的技术;另外一方面是纯粹的翻译往往是外语背景出身,在技术领域的积累也不足,同时翻译尤其是笔译行业的低价,也会造成译文质量的低下。
但是如果你的英语好一些,可以为你省去大量的精力和时间。只要你搭好梯子就能接入一个无限游弋的世界。当你的思想不会被语言所束缚的时候,你的视野也随之开阔起来。
我在微软亚洲研究院实习的时候,有幸和微软总部研究院的研究员共同完成一项研究课题。在前期和我的导师大量地做文献调研,制作研究计划方案,中期远程会议商讨方案,后期完成论文写作,全部用英语完成。该聊的天,该扯的淡,该争的观点,该抠的细节,都不能说中文……虽然我是在国内长大并完成学业,我也没有出国留学交流,但是我相信我的英文,还是能让我和领域最好的科学家对话,我觉得这是对我学习成果的肯定。
整个过程最大的感受是,英语的积累的确为我后期工作节省了大量的看不见的时间,这些看不见的时间是在对比之下才意识到的。在早期读论文的时候,由于基本上没有生词语法障碍,能把关注点放在学术层面,而我是直到见到其他同学拿着字典查论文上的单词才意识到,我的英语帮助我避开了许多语言的坑。当你在用英语学技术的时候,千万不要把技术材料学成英语教材,因为这完全是关注点不同的两件事情。
所以对技术从业者们,尽管技术的熟稔也许早已让我们获得一个不错的安身立命的技能,以至于我们可以骄傲地说,老子英语不好能看懂文档说不出又咋样,不是照样年薪XX万?但是我想说,让英语为你的技术插上翅膀,技术能飞得更远。至少你搞定了发音的问题,就不会读错一些技术里的单词,而光是这一点,就已经足够胜出许多技术侪辈了,起码你可以在一些国际会议的报告上,谈笑风生。
2. 技术让英语如虎添翼
我在业余时间学习英语和口译,接触了许多英语专业的同学以及英语专业背景出身的朋友。以英语等外语为基础并且衍生出的翻译、口译等行业有一个显著的特点,从业者多为文科相关背景。人文社科领域虽然也有逻辑相关的训练,但是整体上在逻辑严密性以及定量分析上,较工科或者理科会有一些差距。
这表现在,许多英语学习者包括口译学习者对于学习和训练的节奏,只停留在多练多听多看的定性层次,但是以我目前接触到的思考方式,采用系统化、逻辑化、步骤化、数量化的方法来思考,并且用于指导行动的,少之又少。
而这些恰恰又是计算机专业训练的强项,不管是系统流程还是白盒黑盒,不管是算法步骤还是输入输出,借鉴计算机构造的体系和世界,映射到英语或者口译的世界中,定量分析,定性调整,不论是对于英语学习还是口译训练,都会有极大的推动作用。
借助这个思想,我发起了口译100小时训练训练,十万字笔译/视译训练计划,以及1000天持续行动框架计划……引入量化机制,设定步骤,强化落地执行。同时,也采用一些简单的程序,做一些关于词的分析和处理,编写一些小工具,以更好地辅助英语和口译的训练。我还成立了一个社群叫ScalersTalk成长会,用行动和成长的视角,以“从英语初阶到同声传译”的成长框架,规划并执行整体的英语技能提升。
大数据时代,计算机技术可以让计算机做一些粗略的翻译,有的人甚至扬言要代替同声传译,但是如果你介入到口译的训练中,你会发现,以计算机的智能,在一段时间内,还真是无法替代人的作用;而倘若你把技术代入英语,却能起到奇效,让英语更加如虎添翼。
3.两个领域的相通性提供对世界更本质的理解
计算机要编程,编程有程序语言,这是用于和计算机沟通的工具。英语是自然语言,人类交流沟通的媒介,也是人类文明传承的重要方式。从语言的角度,两者具有很强的相通性。
当我们学习计算机技术,从计算机组成原理高性能计算,到计算机程序语言编译原理,再到数据结构与算法分析设计,到数据库系统以及所谓的大数据,再到密码学网络信息安全……这是一套几十年工程师以及计算机科学家工作积累演进的成果。每一代计算机行业从业者在前人的基础上开拓创新,才推动了整个社会信息技术的发展,才有了今天的移动互联网时代的大潮流。
当我们学习英语以及在此之后的口译,我们从盎格鲁撒克逊到莎士比亚,从日不落的大不列颠再到美利坚合众国,英语的演化伴随着日耳曼民族的发展,伴随着英国统领全球的辉煌,伴随着美国成为全球最强国的崛起……从纽伦堡国际军事法庭第一次同声传译,到联合国大会多语言同传接力工作,再到每年两会总理记者会的亮眼高翻……不管是英语,还是依托英语之上的口译,都是和世界连接的重要渠道,一种让声音变得具有全球兼容性的解决方案。
两个领域的有自己的特点,又有自己的相通性。你可以理解,英语和计算机技术都是工具,一个承载文明的演进,一个以比特形式承载信息的流动,而后者也将以一种更基础的方式承载我们的一切生活。我们关于未来的想象,可以由这两项重大工具,通往全球各地,通往各往各业。
把握好这种相通性,你可以获得一种自信。这种自信可以给你一种淡然,让你面对困难时自如,面对挑战时淡定。因为二者都可以让你和整个世界相连,当你能连上这个最大资源,视野更开阔,内心也更富足。
当然驾驭好二者的差异性,你又能获得一种游走的自如。写程序很烧脑,但是你可以刷刷口译;如果算法让你思维堵住,你不妨来一段奥巴马在联大演讲的口译训练。左脑右脑交替使用,神清气爽,相当于提高了一倍的使用效率,带宽翻倍。
有的人说,你的语言的边界就是你的世界的边界,在我做ScalersTalk微信公众号的日子里,有幸结识了学习英语、俄罗斯语、法语、德语、西班牙语、葡萄牙语、日语、韩语等的朋友,我发现真的就是这样,一个语言就是一片天地,就是一个世界。
但是我还是要补充一下,当你在这个基础上,把计算机技术纳入考虑,这岂止是打开了一个新世界,这就是增加了一个新维度。
学习大学计算机必看书籍
《深入理解计算机系统》
(原书第3版)
书籍简介
ISBN:978-7-111-54493-7
作者:兰德尔 E.布莱恩特、大卫 R. 奥哈拉伦
译者:龚奕利 贺莲 译
定价:139.00
出版时间:2016/11
计算机系统入门的经典书籍,从程序员视角全面剖析的实现细节,使读者深刻理解程序的行为,将所有计算机系统的相关知识融会贯通。第3版相较上一版内容上最大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下:
基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。
处理器体系结构修改为支持64位字和操作的设计。
引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。
扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩)。
增加了对信号处理程序更细致的描述,包括异步信号安全的函数等。
采用新函数,更新了与协议无关和线程安全的网络编程。
《计算机系统概论》
(原书第2版)
书籍简介
ISBN:978-7-111-21556-1
作者:[美]派特、派特尔
译者:梁阿磊,蒋兴昌,林凌译
定价:49.00
出版时间:2007/07
计算机系统的另一本经典著作,作者是与Donald E. Knuth齐名的美国计算机界泰斗级专家Yale N. Patt。本书站在计算机整体系统的高度将软硬件连贯起来进行阐述,强调对软硬件结合的理解,从硬件的基本构件一直讲到软件的高级程序设计与构造,使读者在学习过程中能够将软硬件融会贯通、相互印证。
本书最大的特点是其提倡的层次转换概念,即从问题开始到计算机运算出结果可以分为七个层次。通过七个层次的转换,即可完成从问题到结果的转变。
《计算机系统》
系统架构与操作系统的高度集成
书籍简介
ISBN:978-7-111-50636-2
作者:阿麦肯尚尔·拉姆阿堪德兰、小威廉 D. 莱希
译者:陈文光 等译
定价:99.00
出版时间:2015/07
美国佐治亚理工学院的教材。与《深入理解计算机系统》从程序员视角来讲解计算机系统,内容偏向系统软件(特别是操作系统)不同,本书在计算机系统结构和操作系统的内容基本平衡,旨在让读者了解计算机体系结构和系统软件之间的关系,为进一步深入学习计算机体系结构、操作系统和网络的高级课程打下基础。
《计算机系统》
核心概念及软硬件实现(原书第4版)
书籍简介
ISBN:978-7-111-50783-3
作者:J. 斯坦利·沃法德
译者:龚奕利 译
定价:79.00
出版时间:2015/07
本书用一个虚拟的计算机系统Pep/8系统展示了计算机系统的7个抽象层次:应用层、高级语言层、汇编层、操作系统层、指令集架构层、微代码层和逻辑门层,最大的特色就是着眼于计算机软件和硬件系统背后的设计原理,而这些原理数年来都未曾改变过。而且,去除那些眼花缭乱的新技术的表象,能够更好地看清和理解系统的本质。
计算机系统基础
袁春风 编著
书籍简介
ISBN:978-7-111-46477-8
作者:袁春风 编著
定价:49.00
出版时间:2014/07
作者对美国麻省理工学院、加州大学伯克利分校、斯坦福大学、卡内基梅隆大学等著名大学与计算机系统有关的课程进行了深入的对比分析后,结合我国学生的基础和需求编写的本土化教程。
猜你喜欢: