View on GitHub

Yoy-wiw

A website on lisp.

Download this project as a .zip file Download this project as a tar.gz file

漫话计算机和语言

21 Jun 2012

计算机是个神奇的东西,一堆金属塑料插在一起,给电就可以工作了。唯一和他沟通的办法,就是用他的语言。

语言就是和计算机的沟通媒介,软件也是语言,人只有通过软件才能让计算机工作,我会用Word写文档,就是用Word语言让计算机工作。编程语言是创造其他语言(软件)的语言。用Java, Python, C, ... 这些语言编写软件。这些语言又需要经过编译或解释为计算机能理解的语言,010101000001. 据我所知,各种语言的编译器或解释器都是用C写的,包括C语言的。

没错,用C写了gcc, 在用gcc编译C。这好像是个蛋和鸡的问题,其实不是,用gcc-3.0编译了gcc-4.0, 用gcc-2.0编译了gcc-3.0, ..., 那么,最早的C编译器呢?

现在好多人用Linux,Linux的发展历程也是这样:在Linux-2.6的内核上开发Linux-3.0, 在Linux-1.0的内核上开发Linux-2.0, 在UNIX(或Minix)上开发Linux-0.1。UNIX(Linux)的内核也是用C语言写的,一直追溯到最早的UNIX,是和C语言同时诞生的。那么这个最早的UNIX又是在什么平台上开发的呢?我不知道,也许有人知道,是在xxx平台,xxx平台又是在yyy平台上开发的,直到zzz平台,直到计算机的诞生。这是一个漫长的过程(60多年)。

公认的第一台现代计算机是1946年的ENIAC,有一层楼那么大,跟发改委的耗电量一样多,计算机能力还不如现在的计算器。真佩服那时的程序员,真是用010100001写代码的,BUG一词也是源于此(因为虫子吃他们的代码,哈哈)。

那时的语言也都是专用语言,而且简单无比,因为世界上也没有几台计算机,每个计算机有一种自己的语言,计算机甚至都没有内存。后来集成电路出现了,计算机才越做越小,功能越来越大,价钱越来越低。伴随这各种CPU平台,出现了各种汇编,低级语言,高级语言,各种软件,各种系统。

真是难以想像,早期的那么笨重的一个大家伙,会发展为现在的这么优雅,精致。语言的发展也是如此,一般语言的核心都很简单,然后加入各种语法糖,语法糖,然后是函数库,函数库,然后是类库,类库,然后是软件包,软件包。用自己构建自己,变得越来越强大,充实,剥去层层外壳之后,是一个很精致的核心。

想一想前些年去中关村攒机器,售货员眉飞色舞的介绍各种配置,然后攒在一起,屁颠屁颠的拿回家。现在都是品牌机了,都是云了。云就是如果计算能力不够,买一台服务器接上电,连上网就可以了,如果存储不够,买一台盘阵接上电,连上网就可以了,想用什么软件,不用下载,打开浏览器就可以用了,...

现在软件开发越来越简单了,有各种开源软件,框架可以用,只要下载下来,合理的组织在一起,改一改就可以用了。我想以后的软件开发会不会像攒机器一样,今天打电话告诉软件生产商你的需求,过几天他们打电话回来,告诉你个网址,软件就可以用了。

未来的人机交互会是什么样的?鼠标键盘,触屏,声音,动作,气味,也许只需一个眼神。

未来的编程语言会是什么样的?或许只要建好模,软件就出来了。