本篇文章1651字,读完约4分钟

编者按:许多人认为编程困难的问题在于程序员。然而,在作者看来,“忒修斯的船”是该计划难以实施的重要原因。本文作者于胜,原来源于其个人微信公众账户于胜伟(身份证号:Yuri-says),36kr经授权转载。

忒修斯的船?这是什么东西?这和“困难的程序”有什么关系?

我相信大多数人看到这个话题都会有上述问题。很容易理解“程序很难做”。程序员经常尽最大努力工作,但结果仍然不能令人满意。这种事经常发生。许多人认为问题出在程序员身上,他们不能理解人,也不善于与人打交道。但在我看来,“忒修斯飞船”是该程序难以执行的重要原因。

说到“忒修斯的船”,这是一个古老的哲学问题。

一艘在海上航行了数百年的船一直在不断地被修理和更换。只要一个板坏了,它就会被替换,以此类推,直到所有的功能部件都不是原来的。

问题是,这艘船最终还是原来的忒修斯号,还是一艘完全不同的船?如果它不是原来的船,什么时候它不再是原来的船?

哲学家托马斯·霍布斯后来扩展了这一点。如果一艘新船是用取自忒修斯的旧零件重建的,那两艘船中哪一艘是真正的忒修斯船?

数百年来,哲学家们就如何判断身份一直争论不休,没有人能彻底说服对方。

但对于普通人来说,从终极意义上来说,“如何区分一艘船”应该留给哲学去讨论。在现实生活中,没有人能做到这一点是困惑的。如果你读过《基督山伯爵》,你会记得法老号货船返回马赛港的情节。除了基督山伯爵(爱德蒙·东特斯)之外,每个人都认为他是“法老”——当然,这并不妨碍其他人认为他仍然是“法老”,也不妨碍一切按照“这是法老”的说法继续下去。

程序难做 “忒修斯之船” 难辞其咎

然而,如果你和程序员谈论需求,你必须小心。“那艘船就是法老”,这一点毫无疑问对你来说是显而易见的。但是程序员必须问:如何识别“那艘船”?船长在看吗?还是造船厂的号码?还是船上的一块木板?.....你厌倦了被邀请。随便想了想,船头的木板不应该更换,于是你说:是的,用船头的木板来识别。

无数悲剧已经发生了。

使用注册时填写的用户名来识别用户是没有问题的。不幸的是,用户一开始没有注意,用户名中包含的手机号码会泄露隐私。因此,强烈要求更改用户名。结果更改后,以前属于该客户的信息不能全部正确;

货物的sku(唯一标识符)包含货物所在仓库的代码,这本来是没有问题的。结果,业务变大,需要调整仓库,但是sku和新仓库代码冲突,货物离开仓库A时不能进入仓库B;

对于具体的操作员反馈问题,你去找程序员,他说:“那是你当时的决定。”所以你跳起来喊道:你不能用你的头吗?我说的就是我说的。你为什么不考虑一下我的意思?

所以问题可以追溯到,如何在程序世界中建立人类认知?普通人怎么会认为“这艘船”就是“那艘船”?即使船上所有的木板都换了,它还是原来的“船”?就像表格中的一行,所有字段都已更改,但它仍然是“原始行”?

依此类推。如何识别“一个人”?很明显,靠名字是不可能的,但是外貌有问题(害怕整容手术),身份证号码也不可靠(一个人换身份证号码时有多张身份证并不罕见)...现在有了克隆技术,克隆人拥有相同的dna,那么如何区分他们呢?

事实上,程序员有一种方法,那就是使用无意义的单词来标识(比如自添加id),并在程序世界中基于这些标识符建立连接。这些无意义的字符是日常交流中的“一”。依靠“那个”,现实世界和程序世界可以对应起来。即使船上的每块板都改变了,数据库中这一行记录的所有字段都改变了,“那个”保持不变,这正是普通人所想的。程序员应该记住,尽管“那个”在现实中是一个模糊的概念,“那个”在程序世界中是不可或缺的。

程序难做 “忒修斯之船” 难辞其咎

前一段时间,我和奇牛云存储的道兄弟(李道兵)谈了软件开发中的各种问题。刀兄说:血与泪的教训也是最基本的规则,就是不要用任何有商业意义的领域作为本我。这个“无意义的领域”是什么?其实是我们潜意识中的“那艘”忒修斯飞船。

这篇文章由读者提交,并不代表36英寸的立场。如果转载,请注明出处

“读完这篇文章还不够吗?如果你也开始创业,希望你的项目被报道,请点击这里告诉我们!”

标题:程序难做 “忒修斯之船” 难辞其咎

地址:http://www.j4f2.com/ydbxw/9174.html