11 | 三阶段进化:调试,编写与运行代码
该思维导图由 AI 生成,仅供参考
阶段一:调试代码 Debugging
- 深入了解
- 翻译
- 解释
- 总结
编程的进化过程可以分为三个阶段:调试代码、编写代码和追求“信、达、雅”。在调试代码阶段,编程者需要不断查阅资料、调试代码,验证变量和执行结果是否符合预期。这是编程学习中的磕磕绊绊时期,需要逐渐降低使用Debug功能的频率。在编写代码阶段,程序员需要深刻理解用户的原始需求,同时追求程序的可读性、可理解性和可维护性。最后,追求“雅”则是从技艺上升到了艺术的追求,要求选用的词语得体,追求文章本身的古雅、简明优雅。文章通过对翻译经历的类比,生动地描述了编程初学者的困惑和摸索过程,为读者呈现了编程学习的真实情景。在编程实践中,程序员需要在一个行业长期沉淀,才能慢慢搞明白用户的真实需求。此外,文章还提到了编程规范和风格的约束,以及如何让程序在未来的生命周期内更优雅地演变。通过这些阶段和实践经验,程序员可以逐渐提升自己的编程水平,实现更高质量的编程作品。文章还强调了程序员需要深刻记住并理解程序运行各环节的效率数据,以便准确评估程序运行的最终效果。基准测试是开发人员自己做来帮助准确理解程序运行效率和效果的方式,对于程序员来说,这是一个重要的环节。文章通过实例说明了如何进行基准测试,以及在真实生产环境中如何分析和思考运行数据与预期之间的差距。整体而言,本文深入探讨了编程的不同阶段和实践经验,为程序员提供了宝贵的学习和成长指导。
《程序员进阶攻略》,新⼈⾸单¥68
全部留言(22)
- 最新
- 精选
- third心得如下: 1.我对三个阶段的理解是,调试代码-独立,编写代码-合作,运行代码-事业 2.独立,你需要掌握编程的知识,并熟练掌握(一个人) 2.合作,你要需求与他人的合作,并降低合作成本。(一群人) 3.主要方法是,信达雅 4.信:理解真实的用户需求 5.达:方便维护和使用 6.雅:有一种美的感受和体验 7.事业,所有的道理和方法,都需要在现实中得到验证,同时保持进步(一群人和事物) 8.老实说,我觉得我在第一段的前边,属于刚入门的新手,要努力学习。 顺便请问一下老师,一个相对比较模糊问题。 以一个普通人的资质,编程2500小时左右,成为一个基本合格的新手程序员,是否是一件大概率事件呢?
作者回复: 2500小时应该很熟练了,应该跨过新手阶段了
2018-08-2714 - 钱恩,现在处在一个什么阶段还真定位不好,我们现在的开发模式,基本是先弄清楚整体流程再动手,每天必开早会,代码开发完了自测、测试、review、完善这么个流程。 就个人而言,也比较喜欢将所有代码都搞定再验证,有问题再调整和优化。 编程之于翻译,确有异曲同工之妙。 业务-将现实问题翻译成需求 产品-将业务的需求翻译成PRD 研发-将产品的PRD翻译成代码 测试-验证研发的翻译工作信否 压测-验证研发的翻译工作性能好不 架构-检查研发的翻译工作达否 编译器-将Java源码翻译成Java字节码 JVM-将Java字节码翻译成机器码 cpu-将机器码指令执行起来,真正去解决现实的问题
作者回复: 你们有个不错的流程^_^
2018-08-289 - 维维理清思路,行云流水的敲完代码,一气呵成。然后第一个闪念就是我的代码根本不会出问题。😄😄😄
作者回复: 哈哈😄
2018-08-2923 - Franklin.du在第二阶段,到第三阶段还有好远的距离!!
作者回复: 2,3阶段不是完全串行的,只是为了方便写作表达,可以是穿插迭代进化的
2018-08-272 - Tachone老师文中的latency图有链接吗?
作者回复: 有,Google一下图上的英文你就能找到
2019-05-031 - helloworld关于基准测试部分的经验不错,不过工作中真有真多时间为了使用一个来源工具,先研究其源码的时间吗?直接压测看效果不就行了?
作者回复: 一个新东西引入到核心服务中,不理解实现原理,是用不好的,还可能埋坑,这是必要的成本
2018-10-251 - 朱月俊"实际一个服务在类似基准测试的环境下单实例所能承载的 TPS 极限不可能超过 RPC 的上限,因为 RPC 是没有包含业务逻辑的部分。加上不算简单的业务逻辑,我能预期的单实例真实 TPS 也许只有 1 千 ~2 千。" 意思是JAVA rpc 单实例上限tps只能达到1000-2000? 这个能详细说下嘛?
作者回复: 不是,例子中说的是Java业务服务的TPS,包含了业务逻辑的
2018-10-181 - 天师想讲个有点炫技的关于雅的经历,做OpenGL渲染的时候,有个同事提出个练习题,使用OpenGL实时渲染一个转动着的魔方,在各个轴各个层上都能够自由旋转,当时存在一个问题,需要确定旋转以后的小方块移动到了哪个位置,同事他们的处理方式是人工穷举,比如2x2x2的魔方里面,顶层旋转了90度,那么顶层1号的小方块就变成了旁边的2号小方块。 我觉得这种穷举不太舒服,而且不通用与3x3x3,4x4x4甚至更高阶的魔方,后来想出了个招数,用三维向量替代小方块的数字编号,这样每次旋转,实际上也是对小方块三维向量编号进行旋转,旋转后的向量就是小方块新的编号,这样的算法只需要用数学库构造一个旋转矩阵就可以完成,并且无论对于几阶的魔方,算法上都是通用的,并且也不需要人工穷举。这个招数,无论什么时候想起来,都觉得是挺舒服的一个思路。 相应的,见过的让我觉得舒服,欣赏的架构与代码,还有Akka的Reactive Stream,Scala的trait特性等等
作者回复: 感觉这不是炫技,而是用了更通用的方法解决问题😊
2018-10-111 - funky的两斤K仔现在在工作了,还是戒不掉写两行代码就想debug的习惯。怎么把代码模型整个放进脑子里好像也是个挑战。
作者回复: 那还需要多想,多写代码
2018-08-271 - Aliliin目前处于第一阶段,正在努力学习中。。
作者回复: 加油💪😄
2018-08-271