点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

近日,外媒上的一篇文章震惊了我,它赤裸裸地写道:你们这些程序员们,真得每天都在读代码吗?多数人阅读代码的数量远远不够。

文中提到,在Peter Seibel撰写的“Coders at Work”一书中描述了这样一个矛盾的现象:“几乎所有的程序员都建议他人通过多读代码获得乐趣,但自己却往往做不到。”甚至他还直接向麻省理工学院计算机科学系教授 Hal Abelson寻求答案:

“我想更深入了解一下。像很多人一样,您也常常建议程序员应该多读代码。然而,当我问到您是因为读了哪部分代码而受到启发或感到娱乐时,您同其他人一样,回答说‘是因为您阅读了学生的代码’,而这是您的工作,‘在谷歌review代码’,而这同样是您的工作。从头到尾,这都听起来不像是您在某个夜晚心情愉悦地读一段代码的样子。”

为了搞清楚这种现象产生的原因,Seibel几人展开一番讨论,并给出了精彩见解,不过,或是由于过于聚焦“读”这个词,使得他们的思考局限于某一个框架,考虑的问题跟着带跑偏了。

实际上,我们都读过代码,但基本是需要编辑的时候才会选择读代码,而只有当遇到复杂问题时,读代码这件事才变得异常重要。毕竟,有程序员就曾抱怨:“一坨几千行的代码,整个业务逻辑都放在里面,注释也不写全,谁能看懂?”

而为了养成这种读代码的好习惯,作者Kartik Agaram从另外一个角度给出了自己的见解——破解程序法读代码。

这种破解程序法比“被动地”、“线性”阅读能产生更好的理解,且基本满足以下三个特点:

  1. 主动探索当你想要破解一款程序时,你最终希望要对代码库进行修改,恰恰是这个欲望引导着你一步一步读着代码;

  2. 大幅修改同样,此时你会根据想要进行的修改对现有代码进行评估。决定用什么和删除什么迫使你对现有系统保持一副排斥的态度。而如果你以线性的思维读代码,你会发现:你基本无法批判性地检查代码;

  3. 合:为了改变你想要的程序,你可以将新代码与现有代码进行组合。

通过破解程序的方式学习代码,还可以调用某一个代码库的自然结构。一本好书就是通过一系列问题和答案来引导读者的,而代码库本质上是非线性的,像地图一样,你可以不停地向地图寻找答案,但你不能指望地图告诉你要问什么问题,因为从左到右、从上到下地线性读取地图是没有意义的。

此外,过度沉迷于干净代码和整洁界面的讨论,使得我们忽略了一件事:对不熟悉的代码愈加避而远之。对于程序员而言,整洁,意味着有据可循,但如果我们想要另辟蹊径时,反倒是累赘。

所以,或许只有当你再也听不到老大review代码的声声抱怨时,就说明已经你已经进步了~

快来投票

scrolling="no" frameborder="0" class="vote_iframe js_editor_vote_card" data-display-style="height: 504px;" data-display-src="/cgi-bin/readtemplate?t=vote/vote-new_tmpl&__biz=MjM5MjAwODM4MA==&supervoteid=450663733&token=134550035&lang=zh_CN" data-src="/mp/newappmsgvote?action=show&__biz=MjM5MjAwODM4MA==&supervoteid=450663733#wechat_redirect" data-supervoteid="450663733" allowfullscreen=""/>

参考链接:http://akkartik.name/post/comprehension

招聘

新的一年已经到来,「CSDN」公众号的目标更加明确,有更多的想法需要落地,不过目前对于小姐姐来说是“现实跟不上灵魂的脚步”,因为缺人~~


所以,「CSDN」公众号要壮大队伍啦,现招聘业界与技术资深编辑记者、资深新媒体运营,有意者请将简历投至:tangxy@csdn.net,期待你的加入!


如果你暂时不能加入我们的队伍一起并肩战斗,也欢迎加入「CSDN」作者大家庭,与所有「CSDN」的朋友们分享你的精彩文章,投稿邮箱:yangli@csdn.net


除了以上两项,如果你热爱技术分享,想要获得更广的视角和更前沿的技术探索,你还可以加入「CSDN」的译者群,利用业余时间,在尊重版权的前提下,翻译对中国开发者极有价值的文章,有意者请将简历投至:guorui@csdn.net

————— 推荐阅读 —————

点击图片即可阅读

你们这些程序员,真得每天都在读代码吗?相关推荐

  1. 程序员真香!IT 业 2020 年平均工资最高

    整理 | 王晓曼 出品 | 程序人生 (ID:coder _life) 5月19日,国家统计局发布2020年平均工资数据,随后,相关话题便冲上微博热搜. 程序员真香! 据国家统计局发布的数据显示,20 ...

  2. OSChina 周五乱弹 ——程序员睡不着都在想啥

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2017)请戳(这里) [今日歌曲] @斑马_   :早早早,分享首歌曲给你们.南城. <南城>- ...

  3. 我猜,每个程序员对着电梯都想过调度算法吧

    转载自 我猜,每个程序员对着电梯都想过调度算法吧 传统电梯调度算法 1.1 先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它 ...

  4. 为什么大学计算机老师不去大公司当程序员说出来你都很难敢相信

    大学中的老师,人们的印象一般都是学识渊博.谈吐优雅的儒士,其实他们也是为了名利奔波,忙忙碌碌的.既然是为了赚钱,大学里面的计算机老师为什么不去大公司去做一名程序员呢?这样的话,赚的钱一定会比大学那点工 ...

  5. 程序员们逢年过节初一十五都应该祭拜哪些神仙?

    程序员们逢年过节初一十五都应该祭拜哪些神仙? 发信人: RosejQue (苦人), 信区: Programming 标  题: 全球最杰出的14位程序员 发信站: 水木社区 (Thu Dec 18 ...

  6. 全世界的程序员们,为什么都不在意“穿衣”这档事?

    戳蓝字"CSDN云计算"关注我们哦! 十月份我去北京出差,来到后厂村走了一圈,想看看现实中的北京程序员是否真的像之前刷屏的<互联网公司时尚穿搭指南>中所述,存在&quo ...

  7. 哎呦,最近流行校内体哦--每个用 power shell 的程序员,上辈子都是折翼的天使

    话说最近流行这种校内体,请看: 每个用 power shell 的程序员,上辈子都是折翼的天使. 他们说,请珍惜用 awk 写脚本的程序员. 到处是 goto 的程序员,你伤不起! 长期在 Windo ...

  8. 招聘java是什么意思_java程序员,一般招聘都要求些啥

    原标题:java程序员,一般招聘都要求些啥 java程序员,一般招聘都要求些啥?某位企业领导说,他不能确认什么样的人一定是他想要的,因为优秀的程序员精通的点并不完全相同,项目也千差万别,但至少要有几个 ...

  9. 程序员真香定律:我永不加班!困扰了程序员20年的10大难题

    程序猿最艰巨的任务跟编写代碼没得几个关系.编码是逻辑构思的一种实践,这跟程序猿日常工作中的其他任务比起来相对简单.如果你觉得自身還是1个技术水平普通的程序猿,在你真正的能进入到顶尖高手行列前,请保证你 ...

最新文章

  1. Java -Inverse covariance
  2. spring-wind 搭建过程问题记录
  3. xshell有大量打印时,显示信息不全
  4. ad域管理与维护_AD域管理员账号下发
  5. 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码
  6. iOS开发人员不容错过的10大工具
  7. 架构设计 | 异步处理流程,多种实现模式详解
  8. delete请求怎么传参数_postman第2讲-核心功能一:Request(请求)
  9. 【kafka】Kafka leader -1
  10. 基于Spring Security的认证授权_WEB授权_Spring Security OAuth2.0认证授权---springcloud工作笔记132
  11. php object 对象不存在。增加对象_PHP开发自己的框架,这些知识点不能错过
  12. Codeforces Round #565 (Div. 3) B
  13. java web流量阀值_Javaweb应用使用限流处理大量的并发请求详解
  14. 古董电脑室:2019日记簿(一)
  15. HTML5 drag属性
  16. ToneChip反馈降噪抑制器的UI设计
  17. win10误删的注册表能还原吗_教你手动还原Win10注册表?
  18. idea+win10+chrome+jAceJump的快捷键使用
  19. 任天堂3D掌上游戏机3DS正式发布
  20. 计算机类SCI与EI收录的外文期刊

热门文章

  1. anaconda环境中使用sudo python报错
  2. 中国水溶性PVA薄膜行业市场供需与战略研究报告
  3. 中国双槽超声波清洗机市场趋势报告、技术动态创新及市场预测
  4. 2021年中国仪表球轴承市场趋势报告、技术动态创新及2027年市场预测
  5. oracle last_day比较,Oracle的LAST_DAY函数
  6. 在 Web 级集群中动态调整 Pod 资源限制
  7. kaggle比赛语言java_Kaggle调查:2018年数据科学家最常用(和最推荐)的编程语言榜单...
  8. 从内存布局上看,Rust的胖指针到底胖在栈上还是堆上?
  9. 假如我来发明编程语言
  10. 春运能不能抢到票就看他了!开源的Python抢票神器