179. Adobe(3):PostScript和我电台的资料来源问题

https://lmzdx.com/2018/11/27/179-adobe3:postscript和我电台的资料来源问题/

Adobe最初的软件是为了出版行业做的,这个成果就是PostScript,我们可以站在旁观者的角度想一想,如果让我们去设计这样一个软件,我们应该如何去设计。假设我们已经有了深厚了出版领域的知识,我们,尤其是很多程序员觉得自己写软件的,应该比大众会用软件,这个在大部分情况是正确的,但是在专业领域,我们和大众一样,很茫然。

比如上面所说的出版领域,如果没有在这个领域深入的研究过几年,连要做什么软件都不清楚,就算是把算法和数据结构掌握的非常好了,也不太可能写出专业领域的软件。比如AutoCAD,PostScript都是这种软件。所以,我要假设一下,我们懂了这个领域,我大概的猜测一下,在打印领域,最终的成果就是在纸上打印出我们想要的精美的图形,肯定是要用一个又一个的像素点来打印。这时候,还要考虑一个情况,有可能是打印的A4纸,也有可能是打印的像公交车站上的很大的广告,还有可能是打印的铺满一面楼那样的广告,这个都要支持的,这时候就会出现这样的情况,可能在A4纸上能看的图形,放大成了数百倍以后,就看不下去了。

其中还要涉及到字体,是不是变形,各种颜色,所以,如果我们来设计这样一个语言,几乎肯定是100%设计不出来,起码Microsoft曾经试图取代Adobe在打印行业的位置,结果也没搞定。如果微软都没搞定,我想大多数外国的公司也是搞不定的。但是Adobe的两个创始人就搞定了,他们研究出的第一个成果就是:PostScript这个语言。这个语言选择了Bezier曲线,还能制作出旋转,平移和缩放等效果,由此构成了一个强大的绘图系统。

我们来看看当时经常喷人的Steve Jobs如何评价的,他说:We [at Apple] could quickly see that our hardware was going to be better than theirs [Adobe’s] and that their software was more advanced than what we were working on. —— Steve Jobs 他的意思就是说,我们苹果做硬件要好,他们Adobe做软件要好。

我之所以引用原文,是最近我比较纠结一个事情,最近有一个我比较喜欢看的视频,算科普视频吧,名字叫《混乱博物馆》,已经不再更新了。起码我知道的所有科普节目中,这个是又短又小又听不懂的,每个人对科普的理解不同,比如知乎上的人会直接拿Nature的论文来怼,像我这种,要给我很多钱我才会去看Nature论文。还有就是对中医啊,星座的态度,我属于也信也不信的状态,属于薛定愕的信仰,比如有直男来和我说星座,我就不相信了,说实在的,我真的搞不清楚这几个星座是什么,什么天猫天狗的。如果碰上个信星座的妹子,我就会说我相信星座啊,星座超准的,实际上我也搞不清楚这十二个星座是什么,但是我发现聊星座特别容易聊,比聊天气还要容易,只需要在一个中性,或者偏褒义的词上加一个副词——有时候——就可以了,比如说,如果一个女孩子无论说什么星座,你都说,这个星座的人有时候会比较坚强,但是有时候心里会比较脆弱,对事情会比较敏感,但是做事对事不对人,非常的善良……这当然是废话,但是每个人都会认为自己比较内心善良,有时候比较敏感,就算这个人是杀人犯,他也会觉得自己实际上是比较善良的,不存在说自己不敏感。

对中医我也是这个态度,有些人想吃就吃啊,花她的钱,又不花你的钱。先不说中医中药管不管用,但是我认为在以中国目前的情况,500年内是不可能让中医,中药还有气功,太极这些东西消失的。有些人真的认为高手在民间,从哪里出来个张三丰一个黑虎掏心把梅威瑟的小心脏掏出来,我是从来不反驳的。我般会说,打梅威瑟还用不到黑虎掏心这么狠的招式,用个老汉推车,隔山打牛就OK了。反正我看电影里的张三丰打梅威瑟问题不大。我非常的热爱太极和气功这些国粹,等我还完房贷,因为我买的是一个二手房子,还完贷款,也差不多70年了,然后我再给儿子赚完首付以后,如果到时候我还没死,我也非常去学一下太极,感受一下中国功夫的魅力。

我前面说的《混乱博物馆》已经停止更新了,具体原因我不知道,但是知乎上有两个罪状,一个是不准确,讲的都是错的。第二个是不注重版权,很多是搬运工,并且不注重版权。说不准确的很多都是同行,同行是冤家,我就顺着账号找到了准确的视频,我操,我认为也是准确的,但是有两点问题,一个是太长了,第二是给了数学公式,让我这种没上过学的滴滴司机简直重温了初中的噩梦。我看科普又不是为了学科学,你给我看数学公式干啥?就好像网上体育,有人喜欢看UFC,这个是真打,综合格斗,实打实的打。但是像我这种,我不喜欢看UFC,我喜欢看WWE,这种是职业摔角,每一个动作都是假的,连裁判都是假的,整个流程都是按照剧本去演,我喜欢看这种假的,而不是UFC,因为UFC看完以后,浑身不舒服,我感觉太真实了,每一个动作都能把脖子拧断。反而是WWE,动作都是排练过的,比较有美感。当然了,如果真打,UFC的冠军能在2-3招之内把WWE的冠军打死。

大家猜一猜,真玩命打的UFC和WWE哪个赚钱?现实比较残酷,WWE比UFC要赚钱,也就是说,经过彩排的假打要比真玩命打的人赚钱。同样的道理也出现的科普行业,有些科普我看着也是挺用心的,引用的论文都是Nature,IEEE级别的,发几篇这样的论文,去个野鸡大学当个系主任还是可以的,还给你来公式,时间也比较长,很严谨,但是就是没多少人看。反而是一些娱乐化的科普,收看量很多。有人说(尤其是知乎上的一些人)说,让假科普滚出科普。其实我觉得你让人家滚,这是不对的,难道科普是你家的,就像电信业是国家的,还是你掌握了枪杆子啊?你觉得人家是假的,可以给自己的节目上写上真科普啊。

我说这些,是因为我最近也在承受类似的批评,最主要的是我的节目没有写名我引用的哪本书,哪篇文章。《混乱博物馆》肯定有抄人家的,这个是有石锤的。问题是,我应该做的更过分一些,我抄的更多。我讲的故事是软件行业的故事,这些故事我100%是从书上,网上,听人家的podcast,比如英文的Command Line Heroes,这个是Red hat公司的Podcast,还有Stuff You Should Know这个我也经常听,99% invisible。我做电台,首先我是podcast的消费者,我听人家的电台的,比如我听到了一个有趣的事情,我就记住了,然后过了很多天以后,我把这个故事又在我的电台里讲了一遍,这也算抄袭,但是,我已经忘记了我在哪里听到的这个故事了,我订阅了数十个podcast,开车的时候我不太喜欢听歌了,一打开电台,都是当红的这些歌星,我一个都不喜欢。

所以这件事情还真是一个大隐患呢,因为现在听我电台的人比1年前多了,这种指责也多了。我还是挺害怕有朝一日被拉到众人面前,比如知乎这样的平台上蹂躏一番的。

再来讲点PostScript,我下面讲的PostScript是引用自PostScript Language Tutorial & Cookbook这本书。这本书我看过,因为当年我要抄东本编论文。PostScript作为一个编程语言,要完成至少三个目标:第一,要做到与设备无关,因为有那么多打印机,不可能只支持一种。第二是要灵活,要是图灵完备的语言。第三,也是我想重点说一下的内容,要能表达完美的曲线。这个也是PostScript所采用的矢量绘图工具,在Photoshop里也有,名字叫路径,其实就是Bezier曲线。第二点,就是这个语言要足够灵活,还要让非程序员能使用,这个语言参考了一个叫FORTH的语言,以FORTH语言为基础,加入了字典和数组这两个数据结构。其中加入的数组是用来存储字符的轮廓,加入的字典是用来存储字体。而且PostScript语言也实现了现在一些编程语言才实现的闭包。比如PostScript语言的局部变量这些特征,实现的方式和现在的主流语言比如Java有些不同,我个人觉得PostScript的方法更简单一些。

但是并不是说PostScript没有缺点,PostScript起步的时候,当时大家还没见过各种各样的打印机,我上一期也讲过,PostScript是解释性的语言,就像Python和Ruby一样,只有解释到那里,才能知道那里的运行结果。但是现实中是这样,比如我们去打印的话,可能是双面打印,比如还要加入作者的名字这些信息。但是在当年的时候,打印机并不支持双面打印,于是大家只要在PostScript前面加入一些文档信息。这种自发和信息并不是Adobe能预见到的,也不是Adobe的推出的标准,因些,大家的方法就乱套了。

于是Adobe出了一套叫文档结构约定的标准,也叫DSC(Document Structuring Conventions),有了这个标准以后,其实是不自觉的开创了一个新的编程时代。Adobe的DSC和Java 5.0引入的annotation概念用来检查编译器的多态,Python 2.2之后的classmethod用来检查方法的定义,这些思想实际上很多都是(可能是)借鉴自PostScript的DSC。

刘延栋 wechat
欢迎扫一下关注我的公众号:软件那些事儿
欢迎收听我的电台,你的支持将鼓励我继续前进