-
The art of Unix Programming,读书志1
2008-05-08
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://peterpannju.blogbus.com/logs/20518521.html
这篇文章的目标读者:
1. 大致知道什么是 Unix, Linux, Open Source
2. 对 Unix, Linux 文化不抵触
3. 乐于接受新思想,尚没有被 M$ 和 Windows 洗脑的同学
为什么我要强调这三点:
第一条:你至少得听得懂我在说什么;
第二条,第三条:
我有一个同学,每次看到我用 vim 写程序,就说,“晕,这工具太丑陋了。你居然用它写程序”;
看到我 Amarok 中的标签乱码,就嘲笑我:“哈哈,linux 怎么有这么多乱码”;
每次我试图对解释讲为什么 linux 为什么打不开 docx 格式的文档,不能传输 QQ 文件时,他都嘲笑说:“哈哈,linux 嘛,就是这么蹉。”
对这样的人,我只想说:
“你妈逼!你个被 M$ 洗脑的可怜虫!连 GBK 和 UTF8 都不知区别的傻逼!你只配用 Windows Vista!”
对这样的人,最好的办法就是彻底羞辱他:
有一次,我有幸发现一个这样的同学(平时老拿 linux 嘲笑我,但是他对 linux 一无所知)在干这样一件事:编辑一个字幕文件,给每一句字幕后面加一个空行(否则字幕文件无法正常显示)。我看了一下,大致有两三千行的样子,问他干了多久了,告诉我已经半个小时啦。我对他说,“把你的字幕文件发给我。”
我用 vim 打开字幕文件,键入了一下两行命令:
set nowrapscan
nmap <F10> jjjo<esc><F10>
将光标移到第一块字幕的上一行,按<F10>。不到半分钟,我就完成了他要的任务。以后,他再也不嘲笑 vim 丑陋。1. UNIX的历史与文化
------------------
“与其说Unix是个操作系统,不如说是一部口述历史。”
这句话不是我说的,而是写在《The art of unix programming》序言的第一句话。我讲用一种流水的形式来描述这段历史,因为我发现,只要我带任何一点情感因素,这段历史都会写成长篇大论。
创世纪:1969-1971
Unix,于1969年诞生于贝尔实验室的计算机科学家 Ken Thompson 的头脑中。Unix 的父辈,Multics 项目,试图建立一个能够满足多用户对大型计算机的交互式分时使用的系统。结果,Multics 最后因不堪自身重负崩溃了,而 Unix 正是从它的废墟中破壳而出。
出埃及记:1971-1980
Dennis Ritchie 于1971年给B语言增加了数据类型和结构,而1973年,Thompson 和 Ritchie 用c语言重写了整个 Unix 系统。由此奠定了 Unix 的可读性,可改性,可移植性。
Unix 开始在高校和实验室之间流行,加州大学伯克利分校的学生开发了 shell,贝尔实验室后期发布 Unix V7 版本时,综合了许多高校的创意,由此诞生了一个更强大的系统。思想潮流开始新一轮的循环:从学术界流向工业实验室,然后又回到学术界,最后流向了不断增加的商业用户。
这个时期,Unix 产业也开始初露端倪。1978年,第一家 Unix 公司,SCO成立。1980年,西雅图一家还不起眼的软件公司----微软也加入到 Unix 的游戏中,他们把 AT&T 版本移植到微机上,取名为 XENIX 来销售。
TCP/IP 和 Unix 内战:1080-1990
-->TCP/IP 和 Unix:
1980年,美国国防部高级研究计划局(DARPA)需要请人在 Unix 环境下的 VAX 机器上实现全新的 TCP/IP 协议栈。这个合同成为了 Unix 历史上自诞生以来最关键的转折点。
有了 TCP/IP,一切都边了。APRANET(Internet的前身)和 Unix 文化自边缘开始融合,这种发展最终使两者都免遭灭亡。
-->M$ 和 SUN 发家史与贝尔系统的拆分:
1981年,微软从SCP(西雅图)手中买下了 QDOS,随后的 MS-DOS 让微软垄断了桌面计算机市场。
1982年,SUN 微系统公司面世,开创了工作站产业。
1983年,美国司法部拆分了贝尔系统。AT&T 立刻将 Unix System V商业化----这一举动差点扼杀了 Unix!因为唯恐官司上身,非法交易的 Unix 源码越来越无人问津,来自高校的贡献开始枯竭。
-->微软的发展,夹缝中的生长:
SUN 公司从未意识到,日用品化的个人机最终会无可避免地动摇其工作站市场的根基;
AT&T 未了成为计算机行业执牛耳者,针对小型机和大型机采取了不同的策略,结果两个摊子都砸了;
Unix 内战,没有谁有闲暇来理这个小公司;
没人关注个人计算机市场,除了微软。
-->Unix 内战第一阶段:
Unix 社区在 AT&T 拆分数年内,却忙着 Unix 大战的第一阶段----System V 和 BSD Unix 之间的内部争吵。技术层面上,socket 对 stream, BSD tty 对 System V termio。文化层面上,程序员和技术人员往往和伯克利和BSD站在一边,而商业目标的人往往倾向与 AT&T 和 System V。
比如一家小公司贴的海报那样,上面画着一个标着"BSD"的 X 翼星际战机快速飞离巨大的 AT&T 死星,后者在熊熊烈火中粉身碎骨。
1985年,Intel 的第一枚 386 芯片下线,这说明占主导地位的 Intel 家族终于有了一款无需做出痛苦妥协就能运行 Unix 的微处理器。对 SUN 公司和其他工作站厂商来说,这真是不祥之兆,可惜他们并未查觉到。
同年,Richard Stallman 发表了 GNU 宣言,并发起了自由软件基金会。没人把他和他的 GNU 当回事,结果证明这是一个大错误。
没人关注个人计算机市场,除了微软。-->POSIX:就这样,罗马在燃烧,而我们还在拉小提琴。
1985年,POSIX标准诞生,统一了 System v 和 BSD 之间的摩擦。
-->Unix 内战第二阶段:
1988年,AT&T 持有了 SUN 公司 20% 的股份,作为 Unix 市场领军的两家公司,终于开始清醒地认识到 PC, IBM, M$ 构成的威胁,也终于认识到过去五年的斗争让他们几无所获。以围绕 POSIX 为核心的技术标准的发展,最终弥补了 System V 和 BSD Unix 之间的裂痕。
但是,硝烟才刚刚升起,当二线商家(IBM, DEC, HP等)创建开放软件基金会(Open Software Foundation)并结成盟友和以"Unix 国际"未代表的"AT&T/Sun轴心"对抗时,Unix 内战的第二阶段爆发了;
1990年,Windows 3.0(图形操作系统)巩固了微软的统治地位,未微软在90年代平荡并最终垄断桌面应用市场创造了条件。
反击帝国:1991-1995
1991年8月,当时默默无闻的芬兰大学生 Linus Torvalds 宣布了 Linux 项目。
1993年后,在旧学派的开发者中,一部分脑筋活络的人开始注意到,做了多年的平价 Unix 之梦从一个意想不到的方向悄然成真(GNU+Linux)。2. UNIX的设计以及相比其他系统的优缺点, continued...
随机文章:
终端弹球设计和时钟滴答 2008-05-09tinySQL 开发总结 2008-03-11netbeans的流设计 2007-12-06修改Enlightenment中的字体大小 2007-03-18ubuntu小技巧 2007-01-10
收藏到:Del.icio.us








评论
每三个单词加一个tab也可以实现阿
这个替换的关键是你知道代表前面搜索结果的通配符,我记得是有一个,现在没试出来,不过这个\1在这儿就足够用了。perl里面就是$#. 所以我觉得映射键还是舍近求远了,你自己用当然没问题
这个句子就把你的例子搞定了,上次写的那个我不知道你的文件格式
让lv见笑了。
把自己装的很牛b不好吧,总有比你牛的人,这个F10还是手工干的,只是省了按键数而已,你用脚本写我觉得都比这个高明,何况一个命令就搞定了,:%/\n/^M^M/g
如果你真不知道如何打这个在vim里蓝色的^M,我只能说,你就别瞧不起人家了
24
00:04:22,917 --> 00:04:25,826
听到你的声音真好
25
00:04:26,397 --> 00:04:27,961
你应该回家来
26
00:04:33,286 --> 00:04:34,814
家? 我不知道现在是不是个好时候
每三行代表一句字幕。
所以你会发现我在语句里用了三个j。
你的方法是将每一个行末空格替换为两个dos格式下的回车换行(\r\n),这样时间行和字幕行就分开了。
而真实的情况是:有些字幕占了不止一行,这样,就不能简单地下移三行到下一段字幕。于是,我当时写的语句是:
:set nowrapscan
:nmap <F11> /--><cr>kO<esc>n<F11>
你看是否有更好的实现方法?