纵观软件开发的历史,有时会发生一些人(通常是未知的,可能是在不知不觉中)做出的东西,当时似乎是一个微不足道的短期决定,它改变了编程世界。我想到了这种性质的事件,以及我们行业对缓解疼痛的反应是什么?
插图(我能想到的最大的一个):当IBM设计原始PC时,决定通过选择具有8位可寻址内存的半脑死亡8088而不是其中一个来节省几美元的制造成本16位选项(8086,680n等),让我们接受20年的地址偏移计算。
(作为回应,unix平台开发中的许多职业都开始了。)
在规模另一端的某个地方,有人决定在键盘的左端有一个怪物Shift Lock键,而不是Ctrl键。
Paul Allen决定在MS DOS中使用/字符作为命令行选项。
Gary Kildall没有与IBM达成协议,将CP / M 86授权给他们,所以他们不会使用MS-DOS。
HTML作为浏览器显示语言。
HTML最初设计为内容标记语言,其目的是描述文档的内容,而不会对如何显示该文档做出太多判断。除了外观对于大多数网页非常重要并且对于Web应用程序尤其重要之外,这很棒。
因此,我们一直在使用CSS,XHTML,Javascript,Flash,Silverlight和Ajax修补HTML,以便提供一致的跨浏览器显示呈现,动态内容和Web应用程序所需的客户端智能。
您有多少次希望首先完成浏览器控制语言?
Microsoft决定不在MS-DOS中添加类似* NIX的执行/无执行文件权限和安全性。我要说的是,如果每个可执行文件都需要被标记为可执行文件才能在系统上执行(并且更不用说破坏),那么我们今天拥有的90%的Windows病毒(和间谍软件)都将被淘汰。
仅这一个决定就促成了反病毒行业的诞生。
使用4个字节表示time_t和Internet协议的时间戳。
这还没有让我们陷入困境 - 给它一点时间。
像银行这样的重要网站仍然使用“安全问题”作为忘记密码的人的次要安全措施。问莎拉佩林,当每个人都可以在维基百科上查找你母亲的婚前姓名时,它的效果如何。或者更好的是,找到Bruce Schneier写的关于它的博客文章。
EBCDIC,用于大型机的IBM“标准”字符集。整理顺序是“疯狂的”(字母表的字母不连续)。
Lisp使用名称“CAR”和“CDR”而不是那些基本功能合理的东西。
空引用 - billion dollar mistake。
Netscape的decision to rewrite their browser from scratch。这可能是导致Internet Explorer在Netscape 4.0和Netscape 6.0之间的浏览器市场份额失控的因素之一。
DOS的8Dot3文件名,以及Windows采用文件扩展名来确定要启动的应用程序。
仅为年份字段分配2位数字。
缓解是在字段溢出之前花费大量的金钱和时间来扩展它们并修复代码。
在计算机上使用qwerty键盘而不是dvorak。
认为密码将是控制访问的一种巧妙方式。
当唯一的原因是“只是为了与众不同”时,每个语言设计师的语法都不同。我正在考虑S和R,其中注释以#开头,而_是赋值运算符。
Microsoft从原始Mac复制快捷键但使用Ctrl而不是Command键进行撤消,剪切,复制,粘贴等(Z,X,C,V等),并添加一个近乎无用的Windows键。拇指位置与小指的众多Ctrl键职责相比几乎没有任何作用。 (Modern Macs获得一个有用的Ctrl键(用于终端命令),拇指位置的Command键(用于程序或系统快捷键)和用于键入奇怪字符的Alt(Option)键。)(参见this article。)
以空字符结尾的字符串
7位用于文本。然后用代码页“修复”它。编码问题有一天会杀了我。
确定因特网协议中的多字节数字的“network order”将首先是高位字节。
(当时网络的异质性意味着这是一个抛硬币的决定。三十年后,英特尔衍生的处理器如此完全占据了市场,看起来低位字节首先是一个更好的选择)。
Netscape决定在他们的浏览器中支持Java。
微软决定将Windows NT基于DEC VMS而不是Unix。
术语Translation Lookaside Buffer(应该在页面缓存或地址缓存中称为某些内容)。
当他只有42岁的时候结束了阿兰图灵的职业生涯。
拥有Caps Lock的键而不是Shift Lock,实际上它是一个Caps Reverse键,但是使用Shift Lock它可以控制。
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或类似的东西?
苹果推翻史蒂夫乔布斯(第一次)由一系列糖水销售人员以及没有灵感和缺乏激情的豆类柜台领导。