当前位置:  开发笔记 > 编程语言 > 正文

软件史上的关键次优决策

如何解决《软件史上的关键次优决策》经验,为你挑选了15个好方法。

纵观软件发展的历史,有时会发生一些人(通常是未知的,可能不知不觉地)做什么,在当时,似乎改变了编程的世界琐碎的,短期的决定.我想到了这种性质的事件,以及我们行业对缓解疼痛的反应是什么?

插图(最大的一个我能想到的):当IBM设计了最初的PC,并决定选择半脑死亡8088具有8位寻址存储器,以节省制造成本几元钱,而不是的一个16位选项(8086,680n等),让我们接受20年的地址偏移计算.

(作为回应,unix平台开发中的许多职业都开始了.)

某处向天平的另一端位于代替Ctrl键制作成具有怪物换档锁键位于键盘的左侧端的决定的人.



1> Dour High Ar..:

Paul Allen决定在MS DOS中使用/字符作为命令行选项.


我曾经提供技术支持,用户无法区分斜杠和反斜杠.由于它们在不同的操作系统和命令中具有不同的含义,因此键入命令是一个雷区.它变得如此糟糕浏览器必须允许两者; 试试http:\\ stackoverflow.com.
它导致命令行模糊,特别是一旦MS DOS程序员开始允许" - "作为命令行选项.它迫使Microsoft使用\用于路径分隔符,它与Unix,URI,正则表达式和XPath冲突,导致像@"C:\ ..."和Regex.Escape这样的黑客攻击.
更不用说所有dofus(dofii?)谁想知道为什么'char*str = C:\ foo\bar";' 没做他们期望的事.

2> Douglas Leed..:

仅为年份字段分配2位数字.

缓解是在字段溢出之前花费大量的金钱和时间来扩展它们并修复代码.



3> too much php..:

当他只有42岁的时候结束了阿兰图灵的职业生涯.


让我们感谢所有同性恋者数十年来阻止计算机科学.
哇,这也是我第一次看到这个问题时的想法.

4> dkretz..:

Microsoft决定使用反斜杠而不是forwardslash作为路径分隔符.并且无法虚拟化驱动器号.


从技术上讲,反斜杠的选择受到他们之前使用斜杠指定命令行选项的错误的限制.他们从DEC操作系统和CP/M复制了哪些.

5> Suraj..:

实际上,8088和8086具有相同的存储器模型和相同数量的地址位(20).唯一的区别是外部数据总线的宽度,8088为8位,8086为16位.

我会说不同操作系统使用不一致的行结尾(\n - UNIX,\ r \n - DOS,\ r \n - Mac)是一个错误的决定.最终苹果公司通过制作OS-X的默认值而让步,但微软顽固地坚持\ r \n.即使在Vista中,记事本也无法使用\n作为行结尾正确显示文本文件.

这个问题的最好例子是FTP 的ASCII模式,它只是在从UNIX服务器传输到Windows客户端的文件中为每个/ n添加/ r,即使文件最初包含/ r/n.



6> David Thornl..:

在设计C(操作符优先级,愚蠢的case语句等)时有很多次优决策,它们嵌入在许多语言的许多软件中(C,C++,Java,Objective-C,也许是C#) - 不熟悉那个).

我相信Dennis Ritchie说他很快就会重新考虑优先权,但不会改变它.世界上没有完整的三个安装和数十万行源代码.


八进制的前导零.

7> Eric Rosenbe..:

确定HTML应该用于除标记超文本文档之外的任何其他内容.



8> Kluge..:

Microsoft决定使用"C:\ Program Files"作为应在Windows中安装程序的标准文件夹名称.由于带有嵌入空间的冗长位置,突然在命令提示符下工作变得更加复杂.你不能只输入:

cd \program files\MyCompany\MyProgram

每当你在目录名中有空格时,你必须用引号括住整个东西,如下所示:

cd "\program files\MyCompany\MyProgram"

为什么他们不能简单地称它为c:\ program或类似的东西?


你生活在错误的国家,我的朋友.来德国,你得到C:\ Program.空间不足.
@Tobias你错过了这一点.缩短字符串后的波形数字甚至更优雅的解决方案.

9> Paul Tomblin..:

苹果推翻史蒂夫乔布斯(第一次)由一系列糖水销售人员以及没有灵感和缺乏激情的豆类柜台领导.



10> Darron..:

Gary Kildall没有与IBM达成协议,将CP/M 86授权给他们,所以他们不会使用MS-DOS.



11> Kluge..:

HTML作为浏览器显示语言.

HTML最初设计为内容标记语言,其目的是描述文档的内容,而不会对如何显示该文档做出太多判断.除了外观对于大多数网页非常重要并且对于Web应用程序尤其重要之外,这很棒.

因此,我们一直在使用CSS,XHTML,Javascript,Flash,Silverlight和Ajax修补HTML,以便提供一致的跨浏览器显示呈现,动态内容和Web应用程序所需的客户端智能.

您有多少次希望首先完成浏览器控制语言?



12> plaureano..:

Microsoft决定不在MS-DOS中添加类似*NIX的执行/无执行文件权限和安全性.我想说,如果每个可执行文件都需要被标记为可执行文件才能在系统上执行(并且更不用说破坏),那么今天我们拥有的百分之九十的Windows病毒(和间谍软件)将会被淘汰.

仅这一个决定就促成了反病毒行业的诞生.


最初,人们使用*nix,因为"Unix"这个名字是一个贪婪的受保护商标.

13> 小智..:

使用4个字节表示time_t和Internet协议的时间戳.

这还没有让我们陷入困境 - 给它一点时间.


今年30年抵押贷款达到了这一限额(2008年).

14> Paul Tomblin..:

像银行这样的重要网站仍然使用"安全问题"作为忘记密码的人的第二安全措施.问莎拉佩林,当每个人都可以在维基百科上查找你母亲的婚前姓名时,它的效果如何.或者更好的是,找到Bruce Schneier写的关于它的博客文章.



15> 小智..:

EBCDIC,用于大型机的IBM"标准"字符集.整理顺序是"疯狂的"(字母表的字母不连续).

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有