一个朋友在跟我一块吃午饭的时候问了我一个问题:现代编程语言的发展历程是什么样的,它是如何发展到现在这样的?他觉得我应该能答得上来,但其实我只能说个大概。 我跟他提了下机器语言,以及人们为了简化它所做的努力,并逐渐发明了一些更抽象的语言,它们最终会被翻译成0和1。 但是——一个偶然的机会我看到了Crockford关于Javascript的一个分享,开篇的时候他讲的正是编程语言的发展史——尽管这主要是关于JavaScript以及影响到它的那些语言——这比我讲的可要生动多了。 穿孔卡一些都得从穿孔卡开始说起——就是一张张打满了小洞的纸片(下面有图有真相)。 发明美国宪法中要求,每10年就得进行一次人口普查。到了19世纪末期,人口增长的实在是太频繁了,以至于1880的人口普查历时8年才最终完成,当时还都是通过纸和笔来完成的。 1890年,Herman Hollerith被授命去解决这一问题,他最终使用了穿孔卡来存储数据,并用一台制表机(tabulating machine)来进行统计和排序。 数据是根据硬纸片上打孔的位置来进行编码的,排列的方式是我们现在所熟识的行列式,并可以通过机器来进行处理。 这次人口普查只花了一年时间便完成了。 IBM1896年,Hollerith成立了制表机器公司,开始了自己的事业。他把自己的设备和卡片出售给大的保险公司,以及包括英国,意大利,德国,俄罗斯,澳大利亚,加拿大,法国,挪威,波多黎各,菲律宾等国在内的多国政府(参见http://en.wikipedia.org/wiki/HermanHollerith#Inventionsand_businesses)。 他的公司后来跟别的公司进行了合并,并在1924年最终成为了国际商业机器公司。没错,它就是IBM。 现代用途穿孔卡被认为是将数据录入到机器的最便捷的一种方式。 IBM后来仍然在使用这套系统——它叫做单位记录管理(Unit Record Management)——并一直用到了70年代,当然了,这比Hollerith最初的设计要先进得多。 Hollerith的穿孔卡流传甚广。它很快便被改进成了更简单的行列组。 80个字符的限制确切来说是12行,80列。你可能看到过有80个字符这个限制,是的,这是因为一张卡片最大的字符数就是80个。 没错,这已经被淘汰了好几十年了,不过80个字符的这个限制仍然延用到了现在。 这个卡片可以用来做许多事情。比如说,顾客不会直接收到帐单而是收到了一些卡片,他们将卡片仔细地打上孔后再和要付的款项一同返还给商家。公司收到这些后会再进行处理并确认这次交易。 记账机是可编程的,它应该可以算作是世界上第一台现代的计算机。 大型机/分时时代大型机是政府与企业用来运行关键任务的大型计算机。 在PC机发明以前(50年代到70年代),人们能使用的计算机就只有大型机。 大型机非常昂贵且体型巨大,只有大型的企业以及一些大学才有。几乎每台机器都是独一无二的,跟别的大型机完全不同。一套完整的系统由多个单元组成,占的地方有一整间屋子那么大。 大型机将程序和数据存储在内存中。你得使用最原始的指令来编写程序。 还是穿孔卡我为什么一开始就讲到穿孔卡是有我的原因的:-) 你得将指令在一堆卡片上进行穿孔才能运行你的程序。作为程序员,你是没有自己的计算机的,你得将程序写在这些穿孔卡上(或者是纸上,当然得有人把它们转换成穿孔卡),然后把这些卡片交给一个操作员,他会负责把它们录入到大学或者公司的机器里。过几个小时你就可以回来了,操作员会把结果打印出来给你,当然了,也会把你的卡片还给你。 如果你漏掉了一个分号的话,你得先修复这个问题,然后等第二天再来。 幸运的是当这些都还是常态的时候我还没出生,不过我也明白了当一个程序员是得有多苦逼。 |