学习代码是要多记还是要多敲?

wobushinv


作为一个写了十几年程序的老码农,写代码靠的是逻辑思维,加上稳固的编程语言基础。编程其实和学习英语有一定的相同之处,但又有不同之处,英语的学习可能夹杂着记忆成分,编程百分90以上靠的是逻辑思维加上强大的实践动手能力,很多人觉得先把理论掌握透彻了再去学习编程会快很多,有过几年编程经验的人可能对自己刚入行的时候多少都会有点记忆,真正让自己彻底能开始写代码绝对不是从一次次理论得来的,主要还是经历一次项目实战而且开始都有一种无形的压力,随着时间的推移发现特别是项目进行到一半的时候,发现编程没有想象的那么难,还是完全可以搞定的,甚至对于自己来讲也是能负担一部分的自信,这就是实战的威力,很多人基础很差但是经历了一次这种项目的磨练,成长的也会快速很多。

编程玩的就是逻辑思维,很多人说学习编程数学好的会占据点优势,这句话本身是有道理的,因为数学逻辑强直接切入到编程学习中具有天然的优势,这都不是主要的,编程入门学习的过程其实是培养编程语感的过程,一旦有了感觉写代码或者设计模块就会变得快很多了,编程能力的提升只靠多记是不可能有多大进步,在软件企业里面会有这样一种现象,培训出来的学生遇到在机构里面学过的就会做的非常快,有新的模块出来就容易变得手足无措,自学出来的会好很多,毕竟自学的过程就是一种自我寻找编程语感的过程,培训大部分属于灌输性质的,甚至很多极端的企业直接对参加培训的学生排除在外。

代码的学习在没有项目的情况下,要找一些练手题目,练手的时候不要在纸上谢谢而已,还要在电脑上形成真正的代码实现,不能仅仅是做一些模拟代码,要强迫自己拿出最好的学习状态,才能真正突破,只是学习理论只会在水上漂着永远学不到真正的编程能力,很多理论学的很棒的学生在考试的时候成绩很高,一旦上机就抓瞎,因为在真正实现代码的感觉和直接理论的学习是完全两码事,曾经有个同事写代码特别费劲,后来觉得自己真的不适合写代码就去复习考研去了,结果真考上计算机系的硕士成绩还特别好,写代码就是不停在机器上实践操作。

还真见过背诵常见的代码的大学生,后来发现稍微一变通就不行了,最后选择了放弃代码从来不是背诵出来的,编程代码的变化概率太高了,没有逻辑变通系统很难掌握的全面,但不能因此走极端放弃理论的学习,直接上机乱搞一通,这也不是学习代码的好习惯,首先有理论基础然后构建自己的理论体系,然后带着自己的想法去用代码实现,越是有经验的程序员在花写代码的时间长越短,主要在前期的设计上以及后期调试,最后是不断的代码的优化重构。

反而是一些刚入行的程序员就是担心自己不能实现功能,花费大量时间研究如何实现代码,一般过了几年的时间之后基本功上来之后,就会回归到设计和调试上来,到了这个层面更加和以及没有什么关系了,优秀的程序员就是在不断的提升编程基本功,修炼自己的编程思想和实际解决问题的能力,每个人都会经历这个过程。

希望能帮到你。


大学生编程指南


有人认为,学习代码一定要多敲代码,这当然是没错的,但是我认为【多记】也很重要,下面请听我的详细分析。


学习代码是一个不断循环的过程

不管你是一个新手,还是一个有着多年经验的老鸟,在学习代码/新技术的时候,都要经历这样的过程:

  1. 学习理论知识,对你要学的内容一定要有个基础的概念。

  2. 照着别人的代码敲,特别是新手在入门的时候,甚至可以“抄袭”别人的代码,一行一行地敲到电脑里面(不是大段代码的复制粘贴),并调试通过,加深对理论的理解。

  3. 等熟练了以后,才是可以根据自己的理解,把代码敲出来。

  4. 当遇到问题的时候,再反复地做1、2、3步,不断加深理解,迭代完善自己的代码。

【多记】,到底是记什么

有人认为【多记】,就是背别人的代码,这个观点是错误的,除非你能做到过目不忘、脑容量无限,不过就算这样,需求稍加变化,你就可能就“歇菜”了。那么【多记】到底要记哪些内容呢?


  • 上面提到的理论知识,这个一定要记忆。比如一项技术的概念、优缺点、适用场景,这些需要记忆。

  • 不要记具体的代码,可以记住方法的知识点、伪代码的步骤。例如你要记忆单例模式的写法,那么就要记住:单例模式有几种写法;每种写法各自有什么弊端;比较推荐使用哪种写法,例如饿汉式的写法,构造函数不暴露、提供一个方法让客户端可以获得、定义一个静态变量来存储创建好的类实例(直接创建,因为构造函数不暴露,所以只会创建一次);但是缺点也显而易见:没有懒加载的效果,从而降低内存的使用率。

  • 【多记】不是【只记】,最后依然是在反复敲代码的过程中,加深记忆。

为什么要多敲代码

学习代码和唱歌、做饭一样,只听歌、背歌词不一定能唱好;只会吃、背菜谱不一定会做饭,道理都是一样的;理论重要,实践更为重要。

那么【敲代码】就是学习代码的最佳手段么?

  • 看书、听音频、看视频、听讲座这些都是被动学习,通常来说被动学习的知识,最终留在记忆中的会比较少,大部分都被遗忘掉了;

  • 敲代码属于主动学习,效果会比以上的途径好很多;

  • 比敲代码更优的途径是什么?写书、录音频、录视频、做讲座,这些看起来是知识输出,但实际上都是主动学习,这些途径和被动学习相比,效果会好很多,另外一方面,当你的技术能力达到了可以做“输出”的水平时,说明你对其细节已经了解地非常透彻了;或者说,你为了能做知识输出,“逼不得已”让自己更深入的学习。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


在学习编程的过程中,早期需要记的内容会比较多,越往后学习越要注重实验,也就是说需要多敲代码。

学习编程可以按照以下步骤进行:

第一:首先建立一个基本的编程思想。编程思想的建立需要一个系统的过程,首先要从概念的理解开始,然后再一步一步深入,这个过程首先就是要多看和多记。所以,对于初次学习编程的人来说,首先要做的事情就是把编程语言的基本概念记住,进而理解编程语言处理问题的基本思路。在这个过程中,也要辅助一定的实验,这样可以加深对于概念的理解。

第二:实验加总结。当对编程语言的基本概念有了一定的认知之后,接下来要做的事情就是通过大量的实验来加深对于概念的理解,并逐渐建立相应的编程思想。实验应该循序渐进,同时要注重对于实验的总结,总结的过程对于理解编程语言是非常重要的。做实验最好制定一个阶段性的目标,通过不断完成阶段性目标来增强自己的学习信心。

第三:选择一个主攻方向。不少编程语言都有较多的应用方向,比如Java语言可以从事Web开发、大数据开发、Android开发和后端服务开发等,而Python语言可以从事Web开发、大数据开发、人工智能开发、嵌入式开发和后端开发等。不同的开发方向需要具备不同的知识结构,所以学习编程语言一定要选择一个主攻方向。有了主攻方向就可以制定系统的学习计划,同时也可以在某个领域进行深耕,从而提升自己的就业竞争力。

最后,学习编程一定要多交流,交流的过程本身也是学习的过程,目前不少编程语言都有较为活跃的开发社区,通过开发社区能够获得大量的编程经验,同时也会提升自身的眼界。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网方面的问题,也可以咨询我,谢谢!


IT人刘俊明


在学习初期,毫无疑问应该多记,在有了一定的基础之后,就应该多敲了。

这其实已经跳出了代码学习的局限性,进而体现了一种学习理念。

在学习初期,我们要通过多吸收信息来巩固自己的基础知识体系,同时伴随着练习来辅助理解,也就是要保证足够的输入。到了学习中后期,我们就要学会利用已有知识开始自我发挥,也就是我们常说的可以开始输出了。

落实在代码学习上,我们来举例帮助大家理解。

比如你要学习Java编程。

首先,一定要做的是学习Java的基础知识,这个过程可以通过读书,也可以通过上视频课的方式来进行,此时也不着急立刻敲代码。但是,仅仅看过一次书或者视频是不够的,无数经验表明,只看不反复咀嚼是无法真正掌握知识的。这个时候就需要你在寻找一些练习,从最初的开卷测试,到闭卷测试。现在一些教编程语言的网站,通常都会提供这种随堂quiz,比如w3cschool,菜鸟教程一类的,它们在讲完一章节之后,会有针对性的练习供你去自我测试是否真的掌握了这些知识。

当你对Java有了一定的了解后,你就要开始编写属于你的public static void main(String[] args)函数了,这就是输出的第一步。第一次,你也许仅仅用了System.out.println(1+9*3+Math.sqrt(4)),但是当程序正确执行之后,也是对你的学习的一种肯定。

在学习初期,你需要大量的吸收各种Java的api,比如StringUtil.isBlank(), List.add,

Map.put

,Calendar.getInstance等等。在这个时候,想要走每一步可能都需要查阅资料,才能找到正确的前进姿势。但是前进的过程,就是记录姿势的过程。

在你记住了各种api,各种走路姿势之后,就可以自由的行走,自由的实现你想要做到的功能了。这个时候,就应该抛弃多记,转而开始多敲代码,从而锻炼自己的逻辑能力。这是凌驾于代码能力之上的另一种能力。

如果您有兴趣,欢迎到我的主页,查看我之前的回答。

我是苏苏思量,来自BAT的Java开发工程师,每天分享科技类见闻,欢迎关注我,与我共同进步。


苏苏思量


学软件开发?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?

不知道LZ看没看过圣斗士星矢这部动漫,首先你得问问自己,想学编程,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质,没有?你说我开玩笑逗你,那好,下面的不用看了,因为你确实不适合学。

如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP, JSP,ASP.NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。

程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆孩子睡觉了,你还在工作中,是不是很崩溃?

第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要百度,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。

第3. 程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...

综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了


呆呆座的小宇宙


毫无疑问,多敲,代码是敲出来的


坚守63395981


不是你敲出来的代码,是你的吗?


AngryRED


多敲,我建了一个交流群,平时有问题都可以问我的,学习方面的问题我觉得我可以帮助到你们。


小页说情感


要多敲代码,不能重复的敲。

通过书籍,网络学习到了新知识,新框架,新想法要多实践,时间久了,信手拈来。


HTT8888


程序语言是有严格语法定义的语言。

如果你理解不了语法定义,你可以尝试通过示例去体会一下。不过敲代码不是必须的。


分享到:


相關文章: