章节摘要:演化日志的最后一章回答两个问题:怎么写出的代码能活十年?那些已经活了五十年的代码怎么救?错误处理与健壮性设计解决"算错时怎么办",测试与性能调优解决"怎么证明它对、怎么让它更快",代码规范、遗留迁移与 AI 时代的定位解决"老库值不值得救、怎么救、救完去哪"。读完本章,你能用工程化的方法给一段 Fortran 代码续命。全章的落点是那句老话的 Fortran 版本:代码会被读很多次,写它只花一次——让十年后的人感谢你今天的规范。
阅读完本章,你应当能够:
金句:数值代码的寿命不由算法决定,由"出错时它怎么表现"决定——显式失败比静默算错值钱一万倍。
error stop、I/O 状态参数、allocated 检查、边界检查与防御式编程。这一节建立"程序不对时立刻大声失败"的工程底线。
单元测试框架与数值容差断言、基准测试与剖析工具、内存带宽与计算受限的区分。这一节把"它对吗"和"它快吗"变成可量化的问题。
风格规范与命名、遗留代码的诊断与渐进迁移、Fortran 在 AI 与科学计算混合建模中的位置。这一节是演化日志的收尾。
三节按"防守 → 验证 → 传承"推进:8.1 让代码不轻易出错,8.2 让代码的对错快慢有据可查,8.3 把好代码变成能传承下去的资产。8.1 是底线,8.2 是度量,8.3 是方向——没有前两者,迁移就是裸奔;没有后者,前两者改完的代码无处安放。
8.1 错误处理(不轻易出错) │ ▼ 8.2 测试与调优(对错快慢有据可查)──► 8.3 规范与迁移(传承下去)
顺序有讲究:先学会让程序"出事时大声喊",再学会"证明它没事",最后才有资格讨论"把代码传给下一代"。跳过 8.1 和 8.2 直接谈迁移,等于给一座没做结构检测的大楼刷墙。
一个容易被忽视的现实:科研代码的平均寿命远超大多数商用软件。一个气候模型可能被三代博士生维护,每一代都在上面加功能。这意味着你今天写的代码,大概率要被人读十年。从这个角度看,本章的规范与测试不是"额外负担",而是"十年后的你自己"和"接手的同事"最需要的东西。养成两个小习惯:提交代码前跑一遍测试,写新模块时顺手把注释和 intent 补全。这两件事单次成本很低,长期回报是让代码库一直处于"可继续演进"的状态——这正是演化日志想要传达的终点:不是学会一门语言的语法,而是学会让数值代码持续活着的能力。