Questions tagged «history»

有关编程和计算历史的问题。

5
为什么“字符集”在实际使用中真的意味着“编码”?
长期以来困扰我的是,太多的软件使用术语“字符集”和“编码”作为同义词。 当人们引用unicode的“编码”时,它们总是表示一个规则集,用于将unicode字符表示为字节序列(例如ASCII或UTF-8)。这似乎是合理而直观的。想法是您使用指定的规则集将这些字符“编码”为字节。 由于这些规则集有时仅提供对所有unicode字符的某些子集进行“编码”的能力,因此您可能会想到,“字符集”(“字符集”的缩写)仅表示一组unicode字符,而无需考虑如何这些字符被编码。因此,编码将暗含一个字符集(像ASCII这样的编码,仅具有编码128个字符的规则,将与那些128个字符的字符集相关联),但是字符集不必暗含一种编码(例如,UTF-8,UTF -16和UTF-32都是不同的编码,但是可以编码相同的字符集。 但是-这是我的问题的症结-“字符集”一词在现实世界中的使用与该词的构造所暗示的不匹配。它几乎总是用来表示“编码”。 例如: charsetHTML中的属性用于指定编码 CharsetJava中的s是编码 charset和character setsMySQL再次是编码 这种对语言的好奇(滥用)年龄有多大?“直觉”的反直觉定义是如何形成的?它可能是从一个时间起源当有真正的是,在实践中,人物的使用编码与套之间有一个一对一映射他们的支持?还是有一些特别有影响力的标准或规范决定了这个词的定义?

1
为什么Apache有两个分别用于构建和依赖管理的工具?
Apache有两个单独的工具: 阿帕奇Maven Apache Ant + Apache Ivy 他们似乎都填补了相同的利基。我有两个问题: 两种工具之间的主要区别有哪些亮点? 我确信可以写一篇很长的文章,探讨两者之间的区别,我不是在寻找太多细节,也不是在寻找一个主观的论点来选择一个。 编程的历史-Apache如何演变为创建两组完全独立的工具,这些工具最终在目的上如此相似?

1
为什么GCC默认使用AT&T语法?
我认为标题说明了一切:) GCC使用AT&T / GAS语法有什么特殊的实际原因(我想这主要是历史原因,但我自己找不到)。 注意:我知道这只是默认设置,您可以对其进行切换 注2:我个人认为“英特尔语法”更具可读性,所以这使我感到惊讶。
9 history  assembly  gcc 

1
(seed * 9301 + 49297)%233280随机算法的原始来源?
如果您搜索创建种子式(伪)随机数生成器的示例,则会遇到类似以下内容(特定示例http://indiegamr.com/generate-repeatable-random-numbers-in-js/): // the initial seed Math.seed = 6; // in order to work 'Math.seed' must NOT be undefined, // so in any case, you HAVE to provide a Math.seed Math.seededRandom = function(max, min) { max = max || 1; min = min || 0; Math.seed = (Math.seed * 9301 + …
9 history  random 

3
为什么将Quicksort称为“ Quicksort”?
这个问题的重点在于,与其他任何排序算法相比,它的优点不容置疑-当然还有许多其他问题。这个问题是关于名字的。为什么将Quicksort称为“ Quicksort”?当然,大多数情况下都是“快速”,但并非总是如此。简并为O(N ^ 2)的可能性是众所周知的。对Quicksort进行了各种修改以缓解此问题,但那些将最坏情况降低到保证的O(n log n)的修改通常不再称为Quicksort。(例如Introsort)。 我只是想知道为什么在所有众所周知的排序算法中,这是唯一应得的“快速”名称,它不描述算法的工作原理,而是描述算法的速度(通常)。之所以称为Mergesort,是因为它合并了数据。之所以称为Heapsort,是因为它使用堆。Introsort的名称来自“ Introspective”,因为它会监视自己的性能来决定何时从Quicksort切换到Heapsort。同样,对于所有较慢的变量-Bubblesort,Insertion排序,Selection排序等,它们均以其工作方式命名。我能想到的唯一一个例外是“ Bogosort”,它实际上只是一个笑话,没人在实践中实际使用过。为什么Quicksort不能称为更具描述性的名称,例如“分区排序”或“数据透视排序”,哪个描述了它的实际作用?甚至都不是“先到这里”的情况。Mergesort的开发比Quicksort早了15年。(根据维基百科分别为1945年和1960年) 我想这确实是一个历史问题,而不是编程问题。我很好奇它的名字-只是好的营销?

2
谁首先创造了术语高阶职能和/或头等公民?
我已经了解到,早在Haskell,O'Caml或LISP之前,高阶函数是一门学术研究主题,在数学中,Schönfinkel(1967年)和Haskell Curry(1968年)已经应用了诸如咖喱粉之类的技术,但是在任何编程语言中都没有。 根据Wikipedia的说法, Scheme 是引入适当的高阶函数作为一等公民的第一门语言,但是有人可以将原始想法归因于此吗?也许是1930年代发明了lambda演算的Alonzo Church?更具体地说,谁创造了以下定义,我在几本书和在线资源的各种释义中看到了以下定义? 当一个函数将另一个函数作为参数或返回一个函数时,该函数被认为是更高阶的。任何不将函数用作参数或返回类型的函数都称为一阶函数。

2
为什么JavaBean规范中的访问器方法成为Java开发的标准?
的JavaBeans技术规范描述了一种JavaBean作为 Java Bean是可重用的软件组件,可以在构建器工具中直观地对其进行操作。 由于编写的大多数代码行似乎与在构建器工具中进行可视化处理无关,因此,为什么JavaBean规范成为编写面向对象代码的“方式”? 我想在整个代码中放弃使用传统的getter / setter,而在整个代码中都支持Fluent接口,不仅在生成器中,而且还要担心这样做,因为这样做传统上不是用Java编写面向对象代码的方式。
9 java  history 

3
阿丽亚娜5号航班501的历史影响是什么?
阿丽亚娜5型火箭发射的在她的处女航(经过37秒解体飞行501)通常被称为一个历史上最昂贵的软件错误1: 欧洲航天局花了10年时间和70亿美元,生产出了Ariane 5,这是一种巨型火箭,每次发射时都能将一对三吨重的卫星投向轨道,旨在使欧洲在商业航天领域具有压倒一切的优势。 去年6月首次航行不到一分钟,炸弹就爆炸了,在法属圭亚那的红树林沼泽中散落着炽热的瓦砾,这是一个小型计算机程序,试图将64位数字填充到16位空间中。 一个错误,一个崩溃。在计算机科学史册中记录的所有粗心代码行中,这一行可能是最具有毁灭性的高效代码。通过与火箭专家的访谈以及为航天局准备的分析,出现了从算术错误到彻底销毁的明确道路。 Flight 501的故障和随后的调查对安全关键系统和软件测试的研究产生了哪些重大变化? 我不是在寻找错误本身的解释,而是在从错误调查启发或直接与之相关的研究方面解释错误的历史影响。例如,本文得出以下结论: 我们使用静态分析来: 检查变量的初始化, 提供共享变量潜在数据访问冲突的详尽列表, 从Ada语义中详尽列出潜在的运行时错误。 据我们所知,这是首次使用基于布尔和基于非布尔的静态分析技术来验证工业程序。 同样,本文(pdf)指出: 基于抽象解释的静态程序分析已用于对Ariane 5启动器和ARD的嵌入式ADA软件进行静态分析。静态程序分析器旨在自动检测运行时错误(例如标量和浮点溢出),数组索引错误,被零除和相关算术异常,未初始​​化的变量,共享数据结构等。分析仪能够自动发现Ariane 501的飞行错误。嵌入式安全关键软件(例如航空软件)的静态分析非常有前途。 对于这一事件对软件测试方法和工具的影响,我将进行详尽的解释。 1这笔70亿美元的数字很可能是阿丽亚娜5号项目的总成本,维基百科报道,这次失败造成的损失超过3.7亿美元。失败仍然是一个相当昂贵的失败,但远不及70亿美元的数字。
9 testing  history  bug 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.