最近在逛 GitHub 的时候居然发现 Treading 居然被一个做饭的项目霸榜了。看到这我一个做饭爱好者兴奋了,点进去一看,“HowToCook”,和仓库的名字一样,里面包含的内容的确是正儿八经的家常菜。不知道老外们看到这个项目作何感想,如果能做到 i18n 国际化,那属实是文化输出了。我也向该项目提交了一个菜谱,你们可以猜猜看是哪一个。

当然,这些菜谱和一般的菜谱还有些不同,那就是对食材的使用进行了量化,使用国际计量单位,而不是使用“适量”、“少许”等令人困惑的模糊性词语。这些词语不仅对于习惯了“量化”的程序员们来说不够友好,对大部分做菜小白也是一样。或许是编写者们所站的角度不同,网络上大部分的菜谱更多的是进行分享,而不是站在新手的角度去教会你,我的“适量”就是好吃,你做不出来那是你的问题。做饭是一个熟能生巧的事情,而“适量”是建立在自己口味之上的。还记得我刚开始学做饭时,也很喜欢对着菜谱较真,菜谱让放几勺盐就放几勺,其实熟练之后,心中的那杆秤自然而然就确定了“适量”的标准。经验主义最大的问题在于,当换了一个“盐勺子”之后,做出来的饭菜口味可能会出现波动。
最让我困惑的地方在于,这个项目居然用数学公式去计算菜品的数量。我承认做多少菜也是个经验问题,使用数学公式去帮助定量似乎也没有什么问题。总觉得有些奇怪,但又说不上来……如果说前面的菜谱看不出来什么问题,那么这些数学公式可以说是将程序员的死板发挥到了极致。做饭的最大乐趣在于随机性,输入的东西是一样的,但输出的菜品“千人千面”。过度的定量会剥夺做饭的乐趣,难不成做饭之前还要先解个方程?产品经理与程序员之间的矛盾在于,程序员只会站在自己的角度设计产品,以为人人都是程序员。

这个项目还是有很多东西可以挖掘的,比如如何规范化每一个菜谱的数据。结合北京冬奥的智慧餐厅来看,研发一个配套的做菜机器人,输入规范化后的菜谱就可以自动地做出一道美味。将菜谱规范化对于中餐来讲是很难的,中餐中有太多的操作技法,文火、武火、焯水、复炸等等,煤气灶与电磁炉的温度控制又会导致做出来饭菜的口感大相径庭。我在 Issues 中根据大家的讨论也找到了部分答案,国外已经有人做出菜谱编程语言 Cooklang,也只不过仅仅对食材进行了提取,烹饪技法并没有规范化。规范化的过程有太多的问题需要思考。
我相信上面的事情在未来的几年内肯定会实现的,似乎“程序员们又要改变世界了呢”。科技的进步让机器取代了人力,或许以后只有好好读书才能找到一份糊口的工作吧。又或许是厨师这个职业像售票员一样湮没在历史的进程中?这个可能不会,倒是资本家可能让我们吃上廉价的机器餐,厨师餐则变成了一种高端的享受。
程序员们看似改变了世界,其实是用冷冰冰的机器破坏了这个世界的多样性。