程序员告诉自己的9个谎言

对我们凌驾于机器之上的能力的自信,也让我们对希望现实屈从于我们的代码感到内疚

12 第2页
第2页,共2页

零是可以接受的

有时我认为我编写的一半是java代码是检查指针是否为null。当我感到侵略性时,我试图在我的图书馆周围绘制一个周边,并仅在进入方法上测试空缺,这些位置将API对代码的其余部分开放。这简化了一些东西,但最终我想进入图书馆并使用一个坐在那里的小方法。哎呀。现在它需要测试是否无效,而边界已经被突破。建一堵墙就这么简单。

如何处理这个问题是现代语言设计的一个大问题。一些语言使用问号来检查是否为空的聪明方法有所帮助,但它并没有解决这个问题。Null只会使面向对象的编程更加混乱和冗长。

人际关系可以编纂

当同性恋婚姻合法化时,智能数据库管理员他们意识到这个问题比千年虫问题要严重得多,千年虫问题几乎让整个国家陷入瘫痪,他们要求程序员回去给一年增加两个数字。为了解决这个问题,DBA经过考虑的如何应对日益适应14的挑战数据库模式一个比一个更精致。最后,他总结道:“也许最简单的解决办法是彻底禁止婚姻。”

但追踪谁和谁结婚只是个开始。假设您正在为一所学校建立一个数据库表,以确定哪位成年人可以在放学后接孩子,或者决定是否给孩子服用阿司匹林。当然,生母很容易,但是继父继母呢?如果有一个比她大得多的兄弟姐妹从大学假期回来,肯定记得去年夏天在父母的婚礼上见过她的孩子,至少在酒吧开业前见过?

你可能会想登陆Facebook,然后用“它很复杂”的入口下注,但你做不到。如果代码不准确,这些法律问题可能会引发诉讼。所谓“准确”,我指的是符合法律,我们都知道国会在制定法律时是多么准确。但别再责怪华盛顿了。这孩子需要阿司匹林。你的数据库会怎么说?

“Unicode”代表通用通信

有一个认真委员会,常常试图确定哪些表情符号应该包含在定义人类沟通的星形名单中。他们还抛弃了某些表情符号,有效地否认了某人的感受。

MEMES的爆炸表明,这一过程可以是多么徒劳的。如果世界发现Emojis过于限制,请刺激他们与文化图标照片混合文本,如何表达任何表情符号列表足够?

然后存在表情符号字体的问题。一个看起来很可爱,拥抱在一个字体上可以看起来令人震惊,嫌疑人在另一个字体上。您可以选择可爱的Emoji,您的手机将尽职尽责地将Unicode字节发送给您的朋友,并使用不同的品牌手机和不同的字体,它将与脱像版本的emoji呈现字节。哎呀。

数字是准确的

当我键入这段文字时,雪正从sierra上空飘落下来,这是一场有史以来最大的风暴。我看了看今天的天气,看起来阳光明媚,凉爽宜人,是个滑雪的好天气。但是有些斜坡是封闭的。为什么?新的积雪可能会引发雪崩,在工作人员用炸药清除危险之前,无法打开斜坡。

天气报告中的基本数字(温度、云量、湿度)并没有捕捉到一些特殊的细节。研究雪崩的科学家有更复杂的模型,可以很好地预测何时降雪,但事实是,数字只能说明部分问题。这就是为什么滑雪公司派遣团队去触发潜在的雪崩以防万一。

随着“大数据”这个词越来越流行,计算机行业对数字的迷恋也越来越深。硬盘中充满了数万亿的数字,所以应该有算法可以从所有这些数字中提取出一些智能的东西。

事实上,数字只能告诉非常具体的事情。它们通常很有用,但离完全准确还差得很远。

人类的语言是一致的

开发人员使用的一种方法是设置一个文本框,让人们随意填充。开放式的评论区是为人类设计的,很少被算法解释,所以它们不是问题的一部分。

实际问题驻留在具有文本的结构化字段中。当我的GPS希望我选择一条名叫圣人命名的道路时,它告诉我“转向街道约翰斯路”。带有撇号的道路名称也抛出它。看到“圣”是很常见的约翰的道路“拼写为”圣约翰,“圣约翰斯,“圣约翰,”甚至复数形式:“圣约翰斯”。美国邮局具有规范的地址列表,无需额外的字符,它保持了一种用于将任何随机地址转换为规范形式的随机地址的精心算法。

时间是一致的

也许感觉时间在以恒定的速度流动——确实如此,但这不是计算机的问题。是人类弄乱了规则,让程序员的生活变得糟糕。您可能认为每天有24小时,但您最好不要在编写代码时假定这永远是正确的。如果有人从美国东海岸起飞,在西海岸着陆,那一天将持续27个小时。雷竞技比分

时区只是开始。夏令时的时间增加和减去时间,但周末从一年到年度变化。2000年在美国,转变发生在四雷竞技比分月。今年,该国将于三月的第二个星期天更改了时钟。与此同时,欧洲在三月的最后一个星期天搬到“夏时”。

如果您认为这就是结束,那么您可能是一个厌倦了编写代码的程序员。亚利桑那州根本不实行夏令时。的Navajo国家然而,是亚利桑那州的一个重要部分,它确实改变了它的时钟,因为它是独立的并且能够为自己决定这些东西。所以它确实如此。

那不是结束。Hopi Nation位于Navajo国家内部,也许可以断言其独立于Navajo,它不会改变其时钟。

但是等等,还有更多。纳瓦霍人在霍皮民族内部有一块土地,这使得仅用地理坐标来精确追踪亚利桑那州的时间变得更加困难。请不要问印第安纳州的事。

文件是一致的

似乎只记得数据应该是计算机可以做的事情。即使位填充了许多逻辑,风格,正交,数值或其他不一致,我们也应该能够恢复位。唉,我们甚至不能这样做。

每当我让我的Mac电脑检查文件系统并修复错误时,它总是会告诉我一长串的“权限错误”,它会尽职地为我修复这些错误。如果我没有给权限,软件如何得到权限来更改访问我的文件的权限?不要问我。

问题更深入。大约每六个月一次,内置Mac备份软件称为Time Machine宣布一切都损坏了一切损坏,修复它的唯一方法是重建整个事情。但快速,在主计算机爆炸之前,所有数据都丢失。

这只是文件系统不遵守用户(供电的人)和机器(急需电力)之间契约的两个例子。任何程序员都会告诉你,有成百上千的其他例子,文件不包含我们所期望的内容。数据库公司花了大笔钱来确保数据可以以一致的方式写入。即便如此,还是会出现一些问题,顾问们会得到更多的钱来修复那些已经变质的桌子。

我们在控制

我们认为,我们的指示正在告诉计算机该计算机可以做些什么,并且除了它不是时,傲慢的骄傲通常是真的。

什么?当然,对于那些没有编程能力的普通人来说,这可能不是真的,但对于我们这些逻辑和算术奇才来说,就不是这样了,对吧?错了。我们都是无力的乞丐,只能接受机器给我们的一切。操作系统负责,它可能会也可能不会让我们的代码计算它想要的东西。

好的,如果我们从头开始编译Linux内核并仅安装我们审检的代码是什么?当然我们在控制中。

不。BIOS拥有对计算机的优先权,它可以偷偷地对您的代码进行微妙或不那么微妙的更改。如果您在云中运行,则管理程序的功能甚至更强大。

好的,如果我们用自己的自定义引导加载程序替换BIOS,该怎么办?你越来越近,但你的机器里面还有很多固件。您的磁盘驱动器,网卡和视频卡可以全部思考,他们首先聆听他们的固件。

即使那个小拇指驱动器也有一个内置的处理器,其代码具有自己的决策。所有这些嵌入式处理器都被捕获覆盖恶意软件。悲伤的事实是,在您的桌面下的该盒子中没有任何晶体管向您举报。

相关文章

这个故事,“程序员告诉自己的9个谎言”最初是由InfoWorld.

加入网络世界社区有个足球雷竞技app脸谱网linkedin对自己最关心的话题发表评论。
有关的:

版权所有©2017 IDG ComRaybet2munications, Inc.

12 第2页
第2页,共2页
SD-WAN买家指南:向供应商(和您自己)提出的关键问题