《Spec-Driven Development 原理与实战》

背景

软件开发的本质,是将开发人员的思想,转换为机器中可执行的代码。准确和高效,是软件开发过程中永恒的目标。

在软件工程发展的历史长河中,效率提升始终是一条主线。从文本编辑器到各类强大的IDE,从单体系统到微服务架构,从瀑布式开发到敏捷研发,一代代工程师为了更快地实现软件价值而前赴后继,这才有了我们现在这个星河璀璨的智能互联世界。

近几年来,随着AI在软件开发场景被广泛运用,软件研发的效率提升,被按下了加速键。

最早出现的是AI代码补全工具,将深度学习应用于代码补全,提供单词或单行级别的补全建议。后来以GitHub Copilot的出现为标志,AI编程助手可以根据注释生成整个函数,结合上下文推断开发者意图。这两年随着Vibe Coding的出现,开发者通过自然语言描述软件意图,由AI去完成具体实现,在一轮轮迭代对话中完成开发目标。

Vibe coding对于个人项目或者一次性项目,是非常合适的提效方式,但是对于企业级场景的代码开发,由于缺乏规范和约束,难以满足企业级代码可靠性和可维护性的要求。

于是规范驱动编程(Spec-Driven Development,SDD)被提出,其核心思想在于,在领域规范的指导下,通过多轮对话迭代,生成符合企业标准的代码。不同于以代码为中心的传统开发模式,SDD把规范(Spec)作为开发过程中的核心资产。

Read More

《计算读书笔记》

当今的智能时代,计算如空气一般,在我们的生活中无处不在。每一条消息发送、每一次网络购物,背后都有很多次的计算在发生,今天人类每秒的计算次数,超过了计算机发明前的人类计算总次数。

然而如何理解计算,是另一个层面的事情。计算的本质是什么,计算可以用来解决什么问题?计算的边界在哪里,什么问题是不可计算的?要如何执行计算,才能更加快速高效?计算的模式,对我们的人生又有怎样的借鉴和指引?
道哥耗时三年写就的这本《计算》,对计算之道,做出了抽丝剥茧的精彩论述,值得反复阅读,常读常新。

本文是阅读《计算》过程中的摘要笔记,试图提炼出书中的核心内容。同时夹杂了一些个人的零散思考(以[PS]前缀标出),这部分没有经过严谨的推理和论证,仅作抛砖引玉。

Read More

设计数据密集型应用 —— 数据模型与查询语言

引言

在数据密集型应用设计中,数据模型处于核心地位,描述了数据以怎样的方式被组织在一起,对应用的设计方案有着深远影响。

大部分应用程序都是分层的,每一层提供一套数据模型抽象,屏蔽下一层的复杂细节,围绕这一层抽象,各层之间的开发人员能够高效地沟通合作。

现实中存在着各种各样的数据模型,每一种模型都包含了对其使用场景的假设,在某些场景,该数据模型使用简单且运行高效,但是在某些场景,该数据模型配置复杂甚至无法支持。深入理解数据模型使用场景的相关假设,对于应用程序的技术选型和最终实现至关重要。

本章主要描述各种通用的数据模型以及相应的数据查询语言。

Read More

Java并发编程

序言

过去的数十年,摩尔定律是推动IT行业发展的底层引擎,集成电路芯片上所集成的电路的数目,每隔18个月就翻一倍, 计算能力的提升使得许多想象不到的场景成为了现实。

然而随着硅片线路密度的增加,其复杂性和差错率也呈指数增长,到达纳米级别时,材料的物理、化学性能将发生质的变化,摩尔定律也就要走到尽头。

当一匹马拉不动车的时候,我们不是去换一匹更强壮的马,而是用四匹马来拉。近年来,我们不再拼命提升单个CPU的计算能力,而是靠多个CPU或者多台计算机(分布式集群)同时计算,来获得更强大的计算能力。为了驱动多CPU同时计算, 我们需要具有并发能力的程序。

Read More

重新出发

博客停止更新已经有两年了。为什么会停止更新呢?

两年对于互联网行业是一段很长的时间。两年间各项新技术风起云涌,AI、区块链、流处理、serverless,太多的新事物让人目眩,来不及用笔尖记录定格。

个人换到了一家大公司,每天接触大量的前沿信息和业界牛人,眼界的开阔让自己逐渐变得谦逊,不再愿意记录一些不成熟的思考。经历了一次晋升之后,更多地关注起架构及管理领域的知识,但终归是实践不足而不愿意泛泛而谈。

那么就这样到此为止了么?

当然不会,停留是为了更好地抵达,沉默是为了更好地爆发。

Read More

Guava 源码笔记系列第一章 -- ImmutableList

本系列博客的目标读者是和我一样的初级Java 程序员。

有关源码阅读

入门一种编程语言,阅读经典类库或框架的代码,无疑是十分有效的方法,但是瀚若星辰的类库,选择哪一个阅读,常常让初学者无所适从。

我个人的体验是,通常一些Utils类库或者UT框架是一个不错的起点,这些库/框架解决的是通用的问题,不涉及复杂的应用场景,易于上手,并且由于被广泛使用,代码质量有可靠保证。

Guava, 类似Boost 之于 c++, 可以算作Java的“准标准库”,未来版本的JDK很可能吸收Guava中一些优秀的设计并作为标准库一部分,正是入门学习Java代码的好资料。

Read More

Scheme解释器开发札记

缘起

最早见到的Scheme解释器实现,是在The Litter Schemer的最后一章。虽然书中实现的是一个原型版本,只能解析最基本的形式,并且用外部的Scheme解释器去计算解析出的Scheme表达式(接近于作弊),但是还是可以隐约地感受到,函数式编程在解决复杂问题时的简洁有力。

那么设计一个实际的Scheme解释器,会遇到哪些挑战呢?函数式编程思想在解决这些问题的时候,又会起到怎样的作用呢?带着对这些问题的好奇,用两个星期的业余时间,尝试写了一个自己的scheme解释器

Read More