那些年,我们在学习编程的过程中可能会走的弯路!

学习编程可能没有捷径,但一定是有弯路的,按危害程度,依次为:

1、不上机。

2、死磕“经典”。

3、玩鄙视链。

“不上机”

这个毛病我都不想多说了,野生程序员 - 收藏夹 - 知乎 里多个回答都已经说过很多遍了。不管你是看书还是看视频,正确的姿势都是左边翻开教科书,右边就同时打开电脑——把代码敲进去,把程序跑起来啊!在书上画叉叉圈圈有个毛用!?

@姚冬 的说法我觉得特别到位:编程本质上是门手艺。三天不练手生,手艺是练出来的。你当然要看书,但绝对不是只看书就够了。

自己上机过个手,首先能发现问题,别以为书上代码写得明明白白,视频里人家演示得清清楚楚,你照着做就没问题了——试过之后你才知道里面有多少坑,而填了这些坑,就是你长了功力的地方。

其次,还能加深理解。“书读百遍,其义自见”,但这话不适合编程,你得把代码整出来撸,调试、设断点、调堆栈,不断的改不断的试,在这个过程中不断的折腾,才能领悟出代码的真义。

死磕“经典”

挺有意思的是:很多不喜欢上机的同学,就喜欢死磕“经典”(那种既不上机又不看书的同学我们就不用说他们了)。这里的“经典”是加了引号的,因为我认为真正的经典应该是深入浅出,雅俗共赏的。

当然,这种书很少。大部头的书厚重权威,但看不懂,怎么办?我的建议是那就先看“小部头”的,碎片化的都行。碎片化阅读的危害是什么? - 知乎,我一直想去回答:没什么危害。但想想算了,一些闲书而已,想怎么读就怎么读,我也不去讨人嫌了。但专业书籍,看着有的同学“钻牛角尖”,还是有点可惜的。

想起我那时候读书:

我来到图书馆,因为这里的书够多。比如数据结构,这本书我看不懂, 我就再找一本,还看不懂,我就再找一本……总有一本书,能用我懂的语言,告诉我这究竟是怎么一回事!一本不行就两本,两本不行就三本……空荡荡的图书馆里,我有一种进入了金庸武侠世界,博采众长,修炼高深武学的感觉。这种感觉不断的刺激着我的肾上腺素分泌,那种日夜不止的亢奋,直到今日,我都再也没有能体验到过。

关于书,我印象最深刻的就是程杰的《大话设计模式》,里面用“雕版/活字”印刷术做例子,唉呀!困惑了好久好久的问题一下子迎刃而解,真的是神清气爽。但我看直到今天,大家对这本书的评价都不高,一说设计模式就是要“四人帮”的那本经典、原著、英文版……看不懂,那就是你蠢你笨不会读书回头再看一篇!其实啊,后来才发现,说这话的人,他自己除了能拽几个名词以外,对设计模式的理解也是云里雾里的——所以他们才什么“经典”啊“膜拜”啊,其实不就是不明觉厉么?

关于“碎片化阅读”,我最想举的例子是

@金旭亮 老师的《金旭亮 一个IT人的十年》,我甚至可以说,就这么一篇回忆随记,再一次重塑了我的价值观和世界观。时至今日,重温此文,仍然止不住的热泪盈眶。我写《折腾》 - 知乎专栏,我做 一起帮,难说根子就在这里。同样的,我也有技术上的收获:一个人如果没写过一万行以上的程序,他看软件工程书就同看政治书差不多,每句都对,呵呵,就不知道为什么对 。

就这么一句就够了,这讲的就是技术的真谛。

你看,又回到“多练”“多实践”这条路子上去了。

玩鄙视链

哎哟,我真是转到IT行业里来了,才知道还有“鄙视链”这么个东西!人家说“文人相轻”,看来理工男也不甘人后啊,哈哈。

但我真得说一说,这东西真的只能“玩”:玩一玩可以,乐呵一下当个笑话听听说说都可以,认真你就输了。

不管是语言也好,算法也罢,前端后台……没有高低贵贱之分,“术业有专攻”而已。而一味的“抠”底层,想学什么“别人学不会”的语言,说明你根本就还没入门。没入门不要紧,要命的是你还自以为是沾沾自喜。

我为什么敢这么说?

“抠”底层,说明你还没懂“封装”,你没有理解“封装”的精髓,你辜负了这几十年来前辈们的一片苦心,你这是在逆历史潮流而动啊!(呵呵,稍有夸张,但矫枉必须过正嘛)做汽车是要了解发动机,但做汽车的人用不着自己去造发动机啊……那做发动机还需要钢材,炼钢还需要采矿,采矿还需要勘探,勘探还需要……你要“底层”到什么时候?

想学,或者想写“别人看不懂”的代码——这,这,本来想说这得多幼稚的,但很多初学者,尤其是“有追求”的初学者,很容易掉这个坑里。代码是写给人看的,要“通俗易懂”才是好才是美。把代码写得让人看不懂,是在犯“孔乙己”一样的错误,这和知乎上的文青吹捧推荐所谓“小众”的书籍一样可爱。写上一年的代码,你就会知道,把代码写得让别人看得懂,才是最难的!

我总觉得,这些误区,都源自于心智的不成熟。学习编程,想的不是解决问题,而是“炫技”“耍酷”;不肯日复一日的在平凡的学习工作中锤炼自己的技艺,而总是想找一个秘籍大法终南捷径。

不想走弯路,往往才会总是走弯路。

博主是一个有着7年工作经验的架构师,对于c++,自己有做资料的整合,一个完整学习C语言c++的路线,学习资料和工具。可以进我的Q群7418,18652领取,免费送给大家。希望你也能凭自己的努力,成为下一个优秀的程序员!另外博主的微信公众号是:C语言编程学习基地,欢迎关注!

原文地址:https://www.cnblogs.com/L928/p/10648310.html

时间: 2024-11-06 18:31:31

那些年,我们在学习编程的过程中可能会走的弯路!的相关文章

学习编程的过程中可能会走哪些弯路?

整理自知乎问题:学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? @Crossin 回头看学生时代,最大的弯路就是怕走弯路.想不走弯路. 纠结该学什么语言.该研究哪个方向.该做项目还是啃算法,生怕一失足成千古恨,踏上一条不归路. 很久之后才发现,与其纠结选择,不如找个点坚持下去.好比爬山,你在山脚下纠结该从哪条路上去,而实际上,每一条都能通往山顶,每一条都不会是笔直平坦的.你怕错过另一条路的风景踟蹰不前,却不知道只要登上山顶就可以一览众山小. 如果一定要说个经验教诲,那就是尽可能多地写代码

学习编程的路该怎么走?

网上看到有人问:自学javase也有段时间了,看过些基础视屏,但是现在自己还是什么都不会,一点方向也没有!之前发过贴也说过这个问题,很多前辈知道说去做小项目,可是自己在网上找的那些小项目,源码都看的稀里糊涂的! 以下是我的回复 从看到你的问题,我就在想怎么说明白这件事. 有的人真心想帮像你这样的人, 但并不知道怎么明白告诉你,给你指明白这条路. 像我这样的人都是第一天摸到电脑编程就兴奋得要死, 发现电脑能以另一种方法解决"课堂上学习数学时面对抽象符号不容易理解"的问题, 兴奋得每天都在

学习webpack3.x过程中遇到的问题

这篇博客主要记录的是本人在学习webpack3.x的过程中遇到的问题(虽然这几天4.0刚出来,但是我还是先学一下3.x吧) 1.配置文件可以用webpack启服务和热更新,步骤如下: ① 先下载:webpack-dev-server cnpm install webpack-dev-server --save-dev ② 配置webpack.config.js module.exports = { // 配置入口文件 entry:{}, // 配置出口文件 output:{}, // 配置模块:

RPA实施过程中可能会遇到的14个坑

RPA的实施过程并非如我们所想的那样,总是一帆风顺.碰坑,在所难免.但也不必为此过于惊慌,因为,我们已经帮你把RPA实施之路上的坑找了出来.RPA实施过程中,将会遇到哪些坑? [不看全文大纲版]●组织层面:1-缺乏当地团队的时间承诺2-缺乏领导力支持3-缺乏IT支持4-缺乏分析/数据功能的支持5-缺乏人力资源支持6-责任划分不明确●流程层面:7-选择了对业务影响微不足道的流程8-选择了涉及更高层次认知任务的流程9-选择了一个子流程很简单但流程本身很复杂的流程10-选择了存在更好自定义解决方案的流

编程面试过程中常见的10大算法(转)

以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 Arrays.sort() // 数组排序 Arrays.toString(char[] a) // 数组转成字符串 charAt(int x) // 获得

汇总篇--学习及练习过程中遇到过的问题

1. 报不可见异常Element is not currently visible and so may not be interacted with(单选题的答案设置) 就是元素的样式或父级及以上元素含有不可显示属性,以致在有些浏览器中(FirefoxDriver)不能操作,但在正常的浏览器中它是可见和可用的.可通过元素对象的方法isDisplayed()检测元素是否可显示的 在定位的时候前端里看到了是隐藏的样子,但是没意识到,报错后,去掉定位里最后一段隐藏的那个标签,就可以操作了 2. 日期

数据结构笔记01:编程面试过程中常见的10大算法(java)

以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 Arrays.sort() // 数组排序 Arrays.toString(char[] a) // 数组转成字符串 charAt(int x) // 获得

编程面试过程中常见的10大算法

?1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 Arrays.sort()  // 数组排序 Arrays.toString(char[] a) // 数组转成字符串 charAt(int x) // 获得某个索引处的字符 length() // 字符串长度 length // 数组大小 2. 链表 在Java中,链表的实现非常简单,每个节点Node都有一个值val和指向下个节点的链接next. cl

在学习nodejs的过程中遇到的问题小结

1.全局安装包(以下内容为window7环境下) 大家都知道,Node的包安装分为全局安装和本地安装. 本地安装的位置就是在你输入命令的当前目录下node_modules文件内. 全局安装的位置是在C盘目录下的.C:\Users\YJua\AppData\Roaming\npm\node_modules. 当我们全局安装完包之后,在新创建的项目中直接require该包,会报错,提示没有找到该包.主要的原因是没有配置环境变量. 我们可以在环境变量中配置node_path,该变量的值为全局安装目录,