-
为什么你要学习类型系统
前言
在本文中,我想向每一位 AI Coding 时代的开发者(尤其主要使用 Python 和 JavaScript 语言的)提出一个重要的建议: 好好学习一门拥有现代化类型系统的静态强类型语言,真正理解编程语言类型系统的奥妙 。如果你想偷懒,那也可以通过阅读本文来达到一定效果。
为什么 类型系统 Type System 如此重要?因为设计良好的类型系统可以在程序编写时发现大部分程序中隐藏的问题,而无需过分依赖程序运行测试。
在上一篇文章中,我们指出了 AI Coding 时代依然关键的两大挑战:
- 通过良好的模块化设计来隔离和控制软件系统的复杂度;
- 尽可能降低软件测试和验证的代价。
第1点我们可以不断推动 coding agent 进行模块化重构来实现;而第2点就更难一些,因为完备的测试永远是很难或很昂贵的,所以最好是在测试前解决尽可能多的问题,而类型系统就是实现这一点的钥匙。如果你还不理解为什么这么说,当你读完本文时就会理解了。
所以本文的目的是给不熟悉类型系统的朋友展示一个设计良好的类型系统是多么有用(和优雅),为此,我会用 Haskell 语言来作为示例,并与 Python 语言做一些对比。你可能听说过 Haskell 是一种小众且相当难掌握的编程语言,但在本文中,你不需要会 Haskell 语言也能理解我想说明的问题,至少我期望如此。
Read more… -
什么是好的代码
本文将讨论一个简单又困难的命题:好代码的标准。注意,现在是 AI Coding 的时代,所以我们的命题自然要考虑 AI 写出的代码以及 AI 写代码的过程。
我们将使用一种模仿数学公理体系的表述方式来进行分析,以便于我们自始至终明确区分“确定的结论”和“有待验证的判断”。当然,目前我们还做不到真正数学级的严谨,但这件事实在太过重要,所以我们可以先接受这种“近似严谨”,再不断迭代优化它。
为了让分析的过程更容易理解,我们会先给出“前 AI Coding 时代”的共识(定义和公理),然后分析在当下有哪些公理依然成立,而哪些已经动摇甚至被颠覆。
Read more… -
自然叫牌法和防守系统(十七队)
Read more…现代化、可以灵活定制的自然叫牌法。
-
Doom Emacs 配置
Read more…这份配置基于 Emacs 模式的按键组合,没有启用 Doom Emacs 缺省的
evil模式,如果希望使用类 Vim 的按键方式,可以参考其他一些大牛,比如的 Tec Osaur 的非常有教益的版本。 -
Emacs Reloaded
两年更的我来了!
最近启动了一个和知识网络有关的项目,这样的任务自然适合 Emacs 的招牌
Read more…org-mode,所以我把 Emacs 又拾掇了一遍,发现最近几年 Emacs 的生态又有进步,特记于此,也算为沧海遗珠的推广做点贡献。 -
二〇一九最美的夜
我已经有十几年没看过任何晚会了,但是今年有一台跨年晚会造势阶段成功吸引我预约,然后抱着试试运气的心情看了个开头就欲罢不能,到现在为止看了三遍了(直播一遍,录播两遍)。为了写这篇感想我又点开了它,然后发现一月三日还有四万人和我一起补课。
B 站的 2019 跨年晚会标志着一个新时代的开始。
从开场致敬魔兽世界的舞剧和水准超出预期的舞台乐队配置,你就能看出这不是一台随随便便的年会,B 站真懂自己的用户——从 70~80 后的互联网初代,到现在还在读中小学的明日娇子。
被称为“互联网原住民”的一代已经成熟,他们已拥有长达二十年的历史和属于自己的代系文化。
Read more… -
Freddie Mercury
Freddie Mercury 是一个教科书一般的摇滚或者说流行文化传奇:独特的艺术风格,空前绝后的舞台表演,来到和离开这个世界的方式… 我并无意去写一篇他的传记——已经有很多类似的东西了——只想记录下这位 Queen 主唱留在我心里的一些零星记忆碎片,分享给有兴趣的朋友。
Read more… -
我又装了一次机
如题,我又装了一次机。意思是,我自己攒了一台组装电脑,然后自己装了系统,不是一个,而是 Windows 和 Linux 俩。上一次干类似的事大约是 2004 年。
总的感想是:这个行业虽然算不上“一日千里”,但十几年的时间还是改变了不少东西:Windows 再也不是那个每次重启都有可能起不来的玩意儿,Linux 再也不是要折腾一天才能访问中文网站并差强人意地播放音视频的怪兽。然而也有些事情似乎永远也不会变,比如 Mac 无论多么优雅强大,显卡以及显卡的驱动永远跟不上时代——这也是我这次装机的动机:我要深度(wán)学(yóu)习(xì)啊!
本着 一步到位 和 安静小巧 两大原则,装机配置如下:
Read more… -
软件开发外传(三篇)
编程之禅1
Read more…听到一阵骚乱,编程大师走进学徒的小隔间。
“这些该死的电脑!” 学徒正在怒吼,“为了让它们干点事儿我就要用上三、四种编辑器,他们经常把我搞晕,一发晕我就把整个文件都删了,这完全无法忍受啊!”
编程大师注视着学徒,“那么你打算怎么拯救自己呢?”
学徒思考了一会儿,答道:“我要开发一个全新的编辑器,一个完美的编辑器换掉所有其他的!”
编程大师突然出手敲了学徒脑袋一下,不是很重,但是学徒还是吓了一大跳,“您为什么要打我…”
“我一点儿也不想再多学一种编辑器。”大师答道。
突然之间,学徒明白了点什么。
– Geoffrey James, Book 4 Chapter 6, The Zen of Programming
-
炉石传说入门
不知不觉我已经玩了四个多月的炉石传说(HearthStone: Heroes of Warcraft)了,随着全球各服进入公测,势必会有越来越多的朋友加入,其中不少应该是没有什么卡牌游戏基础的,为了帮助大家尽快迈过刚开始的门槛,更好地体验这款优秀游戏,我决定借着春节宅在家的时间编写这篇入门指引,希望对朋友们有所帮助。
Read more…