纵观软件发展的历史,有时会发生一些人(通常是未知的,可能不知不觉地)做什么,在当时,似乎改变了编程的世界琐碎的,短期的决定.我想到了这种性质的事件,以及我们行业对缓解疼痛的反应是什么?
插图(最大的一个我能想到的):当IBM设计了最初的PC,并决定选择半脑死亡8088具有8位寻址存储器,以节省制造成本几元钱,而不是的一个16位选项(8086,680n等),让我们接受20年的地址偏移计算.
(作为回应,unix平台开发中的许多职业都开始了.)
某处向天平的另一端位于代替Ctrl键制作成具有怪物换档锁键位于键盘的左侧端的决定的人.
Paul Allen决定在MS DOS中使用/字符作为命令行选项.
仅为年份字段分配2位数字.
缓解是在字段溢出之前花费大量的金钱和时间来扩展它们并修复代码.
当他只有42岁的时候结束了阿兰图灵的职业生涯.
Microsoft决定使用反斜杠而不是forwardslash作为路径分隔符.并且无法虚拟化驱动器号.
实际上,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.
在设计C(操作符优先级,愚蠢的case语句等)时有很多次优决策,它们嵌入在许多语言的许多软件中(C,C++,Java,Objective-C,也许是C#) - 不熟悉那个).
我相信Dennis Ritchie说他很快就会重新考虑优先权,但不会改变它.世界上没有完整的三个安装和数十万行源代码.
确定HTML应该用于除标记超文本文档之外的任何其他内容.
Microsoft决定使用"C:\ Program Files"作为应在Windows中安装程序的标准文件夹名称.由于带有嵌入空间的冗长位置,突然在命令提示符下工作变得更加复杂.你不能只输入:
cd \program files\MyCompany\MyProgram
每当你在目录名中有空格时,你必须用引号括住整个东西,如下所示:
cd "\program files\MyCompany\MyProgram"
为什么他们不能简单地称它为c:\ program或类似的东西?
苹果推翻史蒂夫乔布斯(第一次)由一系列糖水销售人员以及没有灵感和缺乏激情的豆类柜台领导.
Gary Kildall没有与IBM达成协议,将CP/M 86授权给他们,所以他们不会使用MS-DOS.
HTML作为浏览器显示语言.
HTML最初设计为内容标记语言,其目的是描述文档的内容,而不会对如何显示该文档做出太多判断.除了外观对于大多数网页非常重要并且对于Web应用程序尤其重要之外,这很棒.
因此,我们一直在使用CSS,XHTML,Javascript,Flash,Silverlight和Ajax修补HTML,以便提供一致的跨浏览器显示呈现,动态内容和Web应用程序所需的客户端智能.
您有多少次希望首先完成浏览器控制语言?
Microsoft决定不在MS-DOS中添加类似*NIX的执行/无执行文件权限和安全性.我想说,如果每个可执行文件都需要被标记为可执行文件才能在系统上执行(并且更不用说破坏),那么今天我们拥有的百分之九十的Windows病毒(和间谍软件)将会被淘汰.
仅这一个决定就促成了反病毒行业的诞生.
使用4个字节表示time_t和Internet协议的时间戳.
这还没有让我们陷入困境 - 给它一点时间.
像银行这样的重要网站仍然使用"安全问题"作为忘记密码的人的第二安全措施.问莎拉佩林,当每个人都可以在维基百科上查找你母亲的婚前姓名时,它的效果如何.或者更好的是,找到Bruce Schneier写的关于它的博客文章.
EBCDIC,用于大型机的IBM"标准"字符集.整理顺序是"疯狂的"(字母表的字母不连续).