首页 > 其他分享 >梦断代码读书笔记(一)

梦断代码读书笔记(一)

时间:2024-06-12 22:44:07浏览次数:19  
标签:读书笔记 代码 梦断 开发 软件 过程 Chandler

《梦断代码》一书记录的是作者罗森伯格对OSAF主持的Chandler项目进行田野调查,通过Chandler开发过程来揭示软件开发过程中一些根本性的大问题。对本书才刚刚阅读了三分之一,就已经忍不住对作者描述的开发过程所感叹,虽然刚进入软件领域不久,但是仍旧有感于这本书中的现实,对自己也很有启发。

初读本书,最让我耳目一新的就是它的章节排布,出现了第0章。印象最深的一句话是作者在写到关于“hello world”时提到的一句话,“既然能叫它说话,就能让它做任何事”。遥想自己刚入门编程的时候,对helloworld还懵懵懂懂,但是仍旧不减对软件世界的憧憬,无论是手机上还是电脑上,五花八门的软件甚至让我有过把手机上的软件全部换成自己开发的软件的幻想(虽然不切实际,但确实是高中时就对软件工程专业的憧憬)。而作者将首个章节标记为第0章的意义,就是程序员从0开始计数的寓意。从0开始憧憬,从0开始进步,计算机也是从0开始计数的,从0开始,我第一次让计算机说出了helloworld,同时也激发了我对软件的兴趣与期望。

在当今社会,软件已经成为人类生活中不可或缺的一部分,“人类文明运行于软件之上”的说法虽然有点自卖自夸,但它很是明确的反应了软件在人类社会中的地位。它存在于厨具里、汽车里、玩具里、建筑中,商业、科研、医疗、基础公共设施哪里都有它的影子,人类生存之所需都系于计算机代码这根易断的细线上。软件事业发展至今,也不乏面临过、面临着许多困难。而从事与软件事业的程序员们,最优秀的品质莫过于面临困境还不忘幽上一默的乐观态度,也正是这样的乐观态度,才使得软件能够不断地被修复、被更新,以至于发展到今天这个软件纵横的社会。

还记得大一下学期有一段时间对游戏开发产生了兴趣,当时的热情激励我学习了C#,学习了unity,甚至学习了一部分3d建模(当然时间问题并不精通)。在自认“学有小成”之后,我决定从0开始开发一个自己的游戏,虽然都说“若能取之于现有,程序员绝不肯创之于本无”,但是心中的热情还是促使我创造自己的代码与模型。经过一个月的建模工作,终于搭建好了一个比较满意的地图,但是当地图搭建完成之后,我突然不知道游戏的主题应该往哪个方向发展了,做射击类?但是地图又不能很好的支持剧情。做冒险类?又没有太多的素材。最后终于在进行一段胡乱编码后不了了之。

这件事之后,我也是充分认识到了架构的重要性。如果在动手开发之前没有合理的设计方案,没有列出可能的错误,没有给定开发的方向以及注意事项,最终的结果就是白费力气,要知道,软件不等同于程序。一个简单的程序可以不用明文的设计,一股脑的敲代码或许就能实现,但是软件不一样,如果一开始不确定软件的功能模块、体系架构,到后期就会出现无数种不确定性。在后来的web开发中,我充分吸取了以前的教训,无论多么简单的web项目,都首先确定其架构,列出功能项和子功能分布,数据库的数据表结构设计,以及开发过程中需要注意的事项,这些开发前的准备往往会大大减少编码时间,让编码时的思路更加清晰。

在《梦断代码》中,Chandler的开发过程中就有我碰到的问题的放大版,虽然Chandler开发过程中制定了很多的开发计划,但是每一个决定中都包含了不确定性。构建软件最难的部分是决定说什么,而不是怎么说。如果没有一个好的决策,就像在没有凝固的地面上建楼,怎么能站得稳呢?

书中提到一句话,“唯有万丈雄心能助你艰难前行”,这其实是对软件开发过程中某种现状的讽刺,即仅仅抱着自己的工作能改变人们生活的期望投入开发,没有合理的、完整的、优秀的设计与决策,仅靠“万丈雄心”,是很难做出成果的。

综上,清晰的思路、合理的设计是开发软件必须的第一步。

标签:读书笔记,代码,梦断,开发,软件,过程,Chandler
From: https://www.cnblogs.com/Zzzhy0316/p/18244861

相关文章

  • 《代码大全2》阅读笔记01
       《代码大全2》是一本经典的软件开发指南,其中详细介绍了软件开发中的各个方面,如编程技巧、设计原则、代码测试等。通过丰富的案例和具体实践,作者强调了软件工程中的“实用性原则”,即以实际问题为出发点,注重解决问题的有效性和效率。从书中学习了软件开发中的“面向对象设......
  • 《代码大全2》阅读笔记02
    《代码大全2》这本书通过具体案例和实用技巧,深入浅出地介绍了软件开发中的各个关键技术和方法。阅读本书不仅让我对软件开发有了更深入的理解,还使我明白了设计、编程、测试等方面的重要性。书中强调了软件工程中的实用性原则,即解决问题的有效性和效率最重要。学习了面向对象设计原......
  • 《代码大全2》阅读笔记03
     《代码大全2》通过丰富的案例和具体实践,详细介绍了软件开发中的各个方面,如编程技巧、设计原则、代码测试等。书中强调了软件工程中的“实用性原则”,提倡以实际问题为出发点,注重解决问题的有效性和效率。学习了软件开发中的“面向对象设计”原则,将软件系统分解为对象,并设计良好的......
  • 【Python数据魔术】:揭秘类型奥秘,赋能代码创造
    文章目录......
  • 单目标应用:基于红嘴蓝鹊优化器RBMO的微电网优化(MATLAB代码)
    一、微电网模型介绍微电网多目标优化调度模型简介_vmgpqv-CSDN博客参考文献:[1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程,2021,37(3):7二、红嘴蓝鹊优化器求解微电网2.1算法简介红嘴蓝鹊优化器(Red-billedBlueMagpieOptimize......
  • 代码随想录第6天 | ●哈希表理论基础●242.有效的字母异位词●349. 两个数组的交集●2
    题目:242.有效的字母异位词思路:1.ASCII和哈希函数,存入数组,比较数组相等否2.首先选择数据结构,题目只有小写字母,ASCII连续,选用数组,一个字符串遍历,在哈希数组中存入字母出现频率,第二个字符串遍历,做减法。(不需要记ASCII,直接减字母,编译器自己算)时间复杂度:O(n)空间复杂度:O(1)坑......
  • DP经典问题----背包问题的代码实现(入门级)(C++/PYTHON)
    背包的状态转换方程i:表示物品序号j:表示背包大小W[i]:表示第i件物品的重量f[i,j]:表示在前i件物品中选择若干件放在承重为j的背包中,可以取得的最大价值f[i-1,j-Wi]:表示在前i-1件物品中选择若干件放在承重为j-Wi的背包中,可以取得的最大价值Pi(j>=Wi):表示第i件物品的价值,要......
  • RAG PAPTOR 示例代码理解笔记
    RAGPAPTOR示例代码理解笔记0.源代码文件1.部分代码理解笔记故事背景导入工具固定种子(随机种子)全局降维函数局部降维函数获取最佳聚类数函数GMM聚类函数执行聚类函数嵌入函数嵌入并聚类文本函数格式化文本函数嵌入、聚类并总结文本函数递归嵌入、聚类并总结函数总结......
  • 服务端和客户端 RESTful 接口上传 Excel 的 Python 代码
    哈喽,大家好,我是木头左,物联网搬砖工一名,致力于为大家淘出更多好用的AI工具!背景在现代软件开发中,RESTfulAPI(RepresentationalStateTransferApplicationProgrammingInterface)已经成为一种常用的架构风格。它提供了一种简单、易于理解和实现的方式来构建分布式系统。本文......
  • 1188 有多少零-PAT乙级真题(2024夏季B-3)-极简代码-C++
    B-3有多少零给定 n 个正整数,请你数数它们的乘积的末尾有多少个零。例如26、225、48的乘积是280800,末尾有2个零。输入格式:输入给出一个不超过 10^6 的正整数 n,下一行给出 n 个不超过 10^6 的正整数。输出格式:在一行中输出给定的 n 个正整数的乘积末尾零的......