Questions tagged «history»

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

4
用于Apollo 11任务代码的开发过程?
阿波罗任务的技术并不比袖珍计算器复杂。 在这里的链接中,有有关阿波罗制导计算机(AGC)的信息 机载阿波罗制导计算机(AGC)约为1立方英尺,带有2K的16位RAM和36K的硬线芯绳存储器,铜线穿过或不穿过微小的磁芯。16位字通常是14位数据(或两个操作码),1个符号位和1个奇偶校验位。循环时间为11.7微秒。用反向波兰语用汇编语言和解释性语言进行编程。 因此,当我研究那里的内容时,偶然发现了一些源代码,并且注意到了很多注释(例如,临时,我希望实现希望) VRTSTART TS WCHVERT # Page 801 CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67 TS WCHPHOLD TS WCHPHASE TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE TC DOWNFLAG # PERMIT X-AXIS OVERRIDE ADRES XOVINFLG TC DOWNFLAG ADRES …

8
为什么用Java和C#而不是构造函数使用静态main方法?
我正在寻找来自主要来源或次要来源的明确答案,为什么Java和C#决定将静态方法作为其入口点,而不是通过Application类的实例表示应用程序实例(具有入口点)作为合适的构造函数)。 我先前研究的背景和细节 这已经被问过了。不幸的是,现有的答案只是在乞求这个问题。特别是,以下答案令我不满意,因为我认为它们是不正确的: 如果构造函数被重载,将存在歧义。–实际上,C#(以及C和C ++)允许使用不同的签名,Main因此存在并解决相同的潜在歧义。 一种static方法意味着在初始化之前,没有对象可以被实例化。–这实际上是错误的,某些对象之前已实例化(例如,在静态构造函数中)。 因此,它们可以由运行时调用,而无需实例化父对象。–这根本没有答案。 为了进一步说明为什么我认为这是一个有效且有趣的问题: 许多框架确实使用类来表示应用程序,并使用构造函数作为入口点。例如,VB.NET应用程序框架使用专用的主对话框(及其构造函数)作为入口点1。 从技术上讲,Java和C#都不需要主要方法。好吧,C#需要一个才能进行编译,但是Java甚至不需要。而且在任何情况下都不需要执行它。因此,这似乎不是技术限制。而且,正如我在第一段中提到的那样,仅出于约定,它似乎不符合Java和C#的一般设计原理。 需要明确的是,使用静态方法并没有特定的缺点main,这很奇怪,这使我想知道其背后是否有某种技术原理。 我对主要来源或次要来源的明确答案感兴趣,而不仅仅是猜测。 1尽管有一个回调(Startup)可能会拦截它。
54 java  c#  history  entry-point 

6
谁创造了第一个循环结构的想法?
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } 作为开发人员,我们所有人都必须非常频繁地使用循环。我们知道。我想知道的是,谁想到这个主意是循环的?循环引入什么语言?什么是第一个循环结构?是while循环吗?一个for循环?等等?
53 history  loops 

4
Unix管道的确切知识是什么
我听说过道格拉斯·麦克罗伊(Douglas Mcllroy)如何提出这个概念以及肯·汤普森(Ken Thompson)如何在一夜之间实现这个故事。 据我了解,管道是一个系统调用,它在两个进程之间共享一块内存,一个进程在其中写入数据,其他进程从中读取数据。 作为不熟悉OS内部或概念的人,我想知道故事中的“天才”到底是什么?这是两个进程共享内存的想法吗?还是执行?或两者? PS:我知道管道的用途或如何在外壳中使用它。问题是关于|

8
为什么Itanium处理器很难为其编写编译器?
通常说英特尔的Itanium 64位处理器体系结构失败是因为革命性的EPIC指令集很难为其编写好的编译器,这意味着缺乏IA64的良好开发人员工具,这意味着缺乏开发人员为该体系结构创建程序,因此没有人愿意使用没有太多软件的硬件,因此该平台出现了故障,并且全都需要马蹄钉 好的编译器。 但是,为什么编译器之类的东西这么难解决技术问题?在我看来,如果编译器供应商难以实现EPIC中的显式并行性,为什么首先要把负担加在它们身上?似乎还没有解决该问题的好方法,它不是一个很好的解决方案:而是将负担加在Intel上,并为编译器-编写器提供一个更简单的目标。 Itanium于1997年问世。到那时,UCSD P-Code字节码系统已有近20年的历史,Z机才更年轻,而JVM是编程语言世界中新出现的炙手可热的新星。英特尔为什么没有指定“简单的Itanium字节码”语言,而是提供一种工具,将这些字节码转换为经过优化的EPIC代码,从而利用他们最初设计系统的人员的专业知识呢?
50 history  compiler 


13
为什么赋值运算符分配到左侧?
我刚开始教一个朋友编程(我们正在使用Python),当我们开始讨论变量的创建和赋值运算符时,她问为什么将右边的值分配给左边的名称,反之亦然。 我以前并没有考虑太多,因为它对我来说似乎很自然,但是她说从左到右对她来说似乎更自然,因为那是我们大多数人阅读自然语言的方式。 我考虑了一下,并得出结论,它使代码更易于阅读,因为分配给它们的名称(程序员将需要重用)很容易看到,并与左侧对齐。 aligned = 2 on = 'foo' + 'bar' + 'foobar' the = 5.0 / 2 left = 2 + 5 相对于: 2 = aligned 'foo' + 'bar' + 'foobar' = on 5.0 / 2 = the 2 + 5 = right # What were the names again...? …

22
经典BASIC曾经用于商业软件开发吗?如果是,如何克服局限性?
包括我在内的我们许多人都是从用家用计算机编写的程序开始编程生涯的,例如 10 PRINT "ENTER RADIUS" 20 INPUT R 30 PRINT "CIRCUMFERENCE="; 2 * R * PI 40 PRINT "AGAIN?" 50 INPUT A$ 60 IF A$="Y" THEN GOTO 10 70 END 当然,基于行号的BASIC倾向于创建spagetti代码,这也是因为大多数BASIC方言都错过了结构语句,例如WHILE,除了FOR使用IF- GOTO和使用- 循环外,其他都没有GOSUB。我说的是1991年QBASIC和Visual Basic出现之前的BASIC方言。 虽然BASIC方言可能在有抱负的程序员中引起了恶劣的作风,但是否存在使用BASIC方言创建的大型商业项目?如果是这样,他们如何设法克服明显的缺点? “严重”是指: 不是游戏(我知道有些商业游戏是用BASIC编写的,例如Pimania) 不是免费软件 不平凡,即相当大(例如:至少1500 LOC) 卖给几个客户(不是内部开发) 有“关键任务”优先
46 history  basic 

8
在OOP之前,数据结构成员是否公开?
使用OOP语言实现数据结构(例如,队列)时,数据结构的某些成员需要为私有的(例如,队列中的项目数)。 队列也可以使用struct和在上操作的一组函数以过程语言实现struct。但是,在过程语言中,您不能将成员struct设为私有成员。使用过程语言实现的数据结构的成员是否公开了,还是有一些技巧使其私有化?

4
为什么结构和类在C#中是分开的概念?
在用C#编程时,我偶然发现了一个我无法理解的奇怪的语言设计决策。 因此,C#(和CLR)具有两种聚合数据类型:(struct值类型,存储在堆栈上,没有继承)和class(引用类型,存储在堆上,具有继承)。 首先,这种设置听起来不错,但随后您偶然发现了采用聚合类型参数的方法,要弄清楚它实际上是值类型还是引用类型,必须找到其类型的声明。有时可能会造成混乱。 解决该问题的公认方法似乎是将所有structs 声明为“不可变的”(将其字段设置为readonly),以防止可能的错误,从而限制structs的用途。 例如,C ++使用了更多可用的模型:它允许您在堆栈或堆上创建对象实例,并按值或按引用(或按指针)传递它。我一直听到C#的灵感来自C ++,但我不明白为什么它不采用这种技术。结合class并struct进入一个结构有两个不同的分配方案(堆和栈)和周围将它们作为值或(明确)经由引用ref和out关键字似乎是一个很好的事情。 问题是,为什么在C#和CLR中class并struct成为单独的概念,而不是具有两个分配选项的一种聚合类型?

15
语言如何影响CPU设计?[关闭]
人们经常被告知,硬件并不在乎用哪种语言编写程序,因为它只能看到编译后的二进制代码,但这并不是全部。例如,考虑一下不起眼的Z80;它对8080指令集的扩展包括CPIR之类的指令,可用于扫描C样式(以NULL结尾的)字符串,例如执行strlen()。设计人员必须已经确定,运行C程序(与Pascal相反,在Pascal中,字符串的长度位于标头中)是他们的设计可能会使用的东西。另一个经典的例子是Lisp Machine。 还有什么其他例子?例如,使特定处理器偏爱特定语言约定的指令,寄存器的数量和类型,寻址模式?我对同一家庭的修订特别感兴趣。

9
为什么首选文件系统而不是RDBMS日志?
从标题可以清楚地看出问题。例如,无论使用何种规模,Apache都将其访问和错误日​​志保存在文件中而不是RDBMS中。 对于RDMS,我们只需要编写SQL查询,它将完成工作,而对于文件,我们必须确定特定的格式,然后编写正则表达式,或者可能是解析器来操纵它们。如果没有给予足够的照顾,在某些情况下甚至可能失败。 但是,每个人似乎都更喜欢使用文件系统来维护日志。我对这些方法都不抱有偏见,但我想知道为什么要这样进行。是速度还是可维护性或其他?

3
“ Lambda the Ultimate”一词的由来和含义是什么?
几年来,我一直在纠缠于函数式编程语言,而我一直遇到这个短语。例如,这是“小计划者”的一章,该名字肯定早于博客。(否,该章无助于回答我的问题。) 我了解lambda的含义,匿名函数的概念既简单又强大,但是我无法理解在这种情况下“最终”的含义。 我看过这个短语的地方: 小策划人》第8章的标题 博客:http://lambda-the-ultimate.org/ 一系列“ Lambda the Ultimate X”论文:http : //library.readscheme.org/page1.html 我觉得我在这里缺少参考资料,有人可以帮忙吗?

2
“红/黑树”一词从何而来?
一个红/黑树是实现平衡的二叉搜索树的一种方式。它的工作原理对我来说很有意义,但选择的颜色没有意义。为什么选择红色和黑色,而不是一般的其他任何颜色或属性?当我听到“红色和黑色”时,首先想到的是棋盘和LesMisérables,这两种东西似乎都不特别适用。

3
为什么`main`不能返回double或String而不是int或void?
在许多语言(例如C,C ++和Java)中,main方法/函数的返回类型为void或int,但不具有double或String。背后的原因可能是什么? 我知道一点我们不能做到这一点,因为它main是由运行时库调用的,它需要某种语法int main(),int main(int,char**)所以我们必须坚持下去。 所以我的问题是:为什么要main具有它所拥有的类型签名,而又没有其他类型签名?

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.