首页
学习
活动
专区
工具
TVP
发布

软件是用编程软件编的,编程软件又怎么来的

谢邀,我开始学JAVA的时候也想过这个问题,很遗憾,老师当时并没有解答我。 第一个编程软件怎么来的? 你能有这种想法就很不错,有些人活了一辈子,从来没想过1 1为什么=2 我不太懂,随手摘抄,稍微编辑下,希望对你有帮助,侵权联系我。 首先,软件和硬件在逻辑功能上是可以等价实现的,能够用软件实现的自然可以固化成为硬件。 那么最初的“夏娃”——原始软件,它是固化成硬件,我们一般称之为“固件”,这一固件必须通过“硬布线”,直接在电路板上操作刻录。

有了这最基本的“软件”,当我们将一组指令电平信号输入电路时,根据电平的电压,电路在这一“软件”的控制下进行不同的开通闭合电路,整体形成一个有序的操作,宏观上就表现出我们所见的软件形式。

值得注意的是这个原始软件它不一定就包含第一个编译程序,因为我们可以根据具体计算机的指令,预先将这些指令的电平表示先行刻制在光盘、软盘、硬盘等等,只要计算机的能够读取这些指令,那么在原始软件的控制下我们就能运行上述媒介上的程序。 现在的计算机大部分是在启动时从硬盘读取第一条操作系统指令,当然这之前还有很多工作要做:必要的自检等。 所以,第一个软件准确的来说应该叫“固件”更确切。因为之后的软件要运行在计算机上必须通过这个“固件”,而除去这个固件来说的第一个软件,它们都不是真正意义上的第一个。 很久以前,在电子计算机诞生之前,计算机这个角色是由(女)人来扮演的。大多数计算都是由人类女性手工完成的

在之后是真空管。这些真空管有一个有趣的特性:用三个针脚可以控制真空管两端节点的电流。这使得真空管在处理模拟信号方面是可行的,真空管可以控制机器和传输模拟信号。 人们使用这种理论构建了一些机械式计算机,但是由于机械计算机的速度太慢而且成本高昂,所以没有真正的应用。 在这之后,人们意识到,真空管可以当作门,来执行布尔运算。电子计算机变得可行,而这样就开始了电脑的时代。 现在,电子门的工作方式是由开关驱动。假设你在一个电路中连接一堆门,你当然也可以添加一些门,于是乎你得到一个加法器。每个加法器有一堆开关代表着将要添加的第一个数字,另一对开关代表着要添加第二个数字。打开某些开关,并关闭其他开关以输入两个数字,输出将显示两个数字的总和[1]。 原始 CPU 就是许多这样的电路的集合。 每个电路需要一些二进制的输入,通过二进制指令代码来选择要激活的电路。在早期,人们通过切换开关来操作。 因此,早期的计算机通过翻转开关进行编程。 请注意,此时计算机已开始编程,但没有出现编程语言。 顺便说一下,在操作那些开关的人都是被称为「computer」的女人。所以,这些女人都是最最最最早的程序员。 接下来是固态晶体管,其提供与真空管相同的功能,但它们更小,更便宜并且持续更长时间。所以电脑变得越来越便宜,越来越广泛。 由于操作员(程序员)不得不坐在终端前,打开闭合开关,非常不方便,所以后来又发明出了穿孔打卡的方式,能够更简单方便地切换开关。

所以,打孔的卡上面有很多排线,每条线都有可以打的孔。这些线和开关相互匹配。 现在开始,不在天天操作那些乏味的开关了,改为程序员们去打孔了。 每一条线都代表着不同的指令。有个机器,可以连接到计算机读取这些指令。 就这样,我们可以在打孔卡上面写程序啦。这减少了相当多的工作,写一个卡片能使用相当久,也避免了重复造轮子。 因此,当程序员开始在卡片上写这些程序时,人们开始构建程序库(libraries)。随着时间的推移,大部分的程序渐渐的有了一些规则手册来指导编写。虽然比之前手动开关方便了太多,但还是很繁琐。 这时候,天才格雷斯·霍珀(Grace Hopper)姐姐,想出了一个很棒的点子。

她的想法是革命性的飞跃。 她最大的贡献是发明了世界上第一个编译器 (Compiler),名字叫做 A-0。当时是没有任何组合语言及程序语言存在的,所有的程序设计人员都要把程序翻译成机器码,01101010110 这样的形式,在纸上打孔,再送到机器里去读。 Grace 产生了一种想法,她想设计一种程序,让人可以用类似英文的语法,把想做的事写下来,然后用这个程序把英文翻译成机器的语法,交给机器去执行。这个想法就是今日的 Compiler (编译器)。 A-0 的原理是:编译程序把穿孔卡加载到计算机中。然后编写的程序将被送入计算机。计算机会吐出另一组包含机器代码的卡片。第二组卡片将被装入计算机,计算机就可以执行这段新的程序了。 再说个趣事,知道为什么叫做「编译」么?正常来说,应该叫做翻译吧?正常来说,compiling 这个词意味着有序的放置收藏,例如编译音乐集。但是编译和二进制代码有什么关系呢? 因为啊,Grace 姐姐把它描述为收集子程序的机器代码[2],逻辑上类似于你编译音乐收藏。 编程语言因为编译器而迎来了曙光。虽然只是科技史上的一小步,但是真的是革命性的,改变了人类对于编程的思考方式。它创造了抽象的思维方式。这意味着他们可以在更高的层次上思考。这改变了人们对如何编写程序的想法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181107A0OGUM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券