『软件工程』计算机界 TOP 3 难题:“相等”是软件工程中许多重大问题的根源( 八 )
程序员应该怎么做?
也许你读了这篇文章后会觉得 , “哇 , 相等好复杂!我还是不要编程了 , 回家种地算了 。 ”但这篇文章如此之长的原因主要是太多的语言都做错了 。 都作对的确需要些心思 , 但并不是太难 。 肯定比种地要简单 。
在已有的类型上进行相等比较时 , 先问问自己:
- 在这里进行相等比较本身合理吗?
- 如果合理 , 那么是应该进行结构比较 , 还是引用比较?
- 对于相应的比较方法 , 我采用的编程语言提供了哪些支持?
- 我采用的编程语言对于该比较方法的实现是正确的吗?
- 我的类型应该支持相等比较吗?还是需要一个更复杂的比较 , 就像float那样?
- 我的类型应该是可改变的吗?它会对相等性产生怎样的影响?
- 应该支持引用比较?还是结构比较?还是应该同时支持两者?
语法树的第三个属性是 , 它们是不可改变的 , 而且是线程安全的 。 这意味着 , 在获得一棵树之后 , 它就是当前代码状态的快照 , 而且永远不会改变 。 这样多个用户可以在不同的线程中与同一个语法树同时进行操作 , 而无需担心死锁或重复的问题 。 由于树是不可改变的 , 也不能针对树进行直接的改变 , 因此负责创建和修改语法树的工厂方法实际上会创建树的新快照 。 树本身的效率很高 , 因为它会重用底层结点 , 所以创建新版本的速度很快 , 只需要使用少量内存 。
——.NET Compiler Platform SDK文档
原文:https://www.craigstuntz.com/posts/2020-03-09-equality-is-hard.html
?现代编程语言大 PK , 2020 年开发者关心的七大编程语言!
?MySQL 狠甩 Oracle 稳居 Top1 , 私有云最受重用 , 大数据人才匮乏!| 中国大数据应用年度报告
?如何用CNN玩转AlphaGo版的五子棋?
?曾经摸鱼的程序员 , 如今在武汉自愿加班
?区块链和大数据一起能否开启数据完整性的新纪元?
?以太坊2.0、分片、DAG、链下状态通道……概述区块链可扩展性的解决方案!
推荐阅读
- Q1全球电视出货量公布:海信跻身TOP3,竞争转向价值战
- 【数据中心专家Top】光模块基本知识
- 「微型计算机」打造“小钢炮”别只顾机箱主板!SFX电源应该这样选
- 微型计算机@打造“小钢炮”别只顾机箱主板!SFX电源应该这样选
- @2020中国TOP100独角兽企业发展现状、机遇与挑战分析
- 极速聊科技:华为河图横空出世,【计算机-胡又文】打造AR数字底座
- TOPWOMEN时髦笔记@撞脸Jennie堪称芭比娃娃,未来YG的门面担当,仅11岁坐拥百万粉丝
- 「数据中心专家Top」光模块基本知识
- 「娱乐圈小松鼠」第一热度高达85.9,电视剧全网热度榜Top5:《安家》挤进前五
- 『倚心于生活』计算机破译需100万年,中国女子只用了2年,美国的超难密码
