完全用gnulinux工作(doc62)-经营管理(编辑修改稿)内容摘要:

VC 那样的开发环境。 你有没有发现你正在进入微软给你设下的怪圈。 你为什么一定要用 IDE。 你说:“ IDE 开发迅速,调试方便,适合大型程序„„” 那说明微软的程序在你脑子里已经比较根深蒂固,你需要好好清醒一下了,看看我来告诉你。 高明的 UNIX 程序 员不用 IDE, IDE 从来就是给初级 Windows 程序员用的。 你看看大型的 UNIX 程序,包括 Linux 内核,各种网络服务程序,Xwindow 程序在内,哪一个是 IDE 搞出来的。 我们实验室的 EDA 程序也没有一个是 IDE 弄的,我还知道 Candence, Synopsys, Mentor 的高性能的图形界面 EDA 程序也都不是 IDE 写的。 你信不信,微软的人在写 Windows 本身的时候也根本不用 IDE。 微软内部程序员最喜欢的编辑器其实是 VIM,用 VIM 的微软程序员上次 向乌干达的可怜儿童捐助了 1000 多美元,这是值得称赞的。 有一次某杂志采访一些出名的 Linux 内核程序员,包括 Linus 在内,没有一个人用 IDE,有的人用 VIM,有的用 Emacs,只有 Linus 说“ GNU Emacs is evil”,但是其实他用的是一种跟 Emacs 有同样键绑定功能的 MicroEmacs。 大家都是用编辑器编辑了程序文件,然后用 make 这样的自动工具调用 gcc 编译器完成编译工作的。 甚至高级的 Windows 程序员也不用 IDE,他们可以从命令行调用 cl, nmake 来编译自己的程序。 虽然这样的 Windows 程序员很少,但是他们却是最了解 Windows,最高明的 Windows 程序员。 为什么 UNIX 程序员不用 IDE。 明白了这个道理你就能体会到 UNIX 的设计思想了。 首先,一个 IDE 集成了编辑器,编译器,汇编器,调试器,跟踪器„„ 这个编辑器功能肯定比不上 VIM 或 Emacs,编译器比不上 GCC,汇编器比不上 as,调试器比不上 gdb, ddd, 跟踪器比不上 strace, ltrace, truss。 你得到的是一套整合的低能 的程序。 如果你对调试器的功能不满意,你只好换用另外一套 IDE,但是这套 IDE 的热键,菜单,编辑器功能,按钮„„ 跟原来那个有很大不同。 你不得不花很多时间来熟悉新的环境,而不能保持原来的某些东西。 而在 UNIX 下就不一样了。 你可以用你最喜欢的 VIM 编辑程序,你在 VIM 里可以调用 GNU make, make 可以调用 gcc, ld, ... make 的出错信息可以被 VIM 捕获, VIM 能帮你在源程序里定位。 你如果喜欢 icc, 你可以让 make 用 icc 而不是 gcc。 你如果觉 得 gdb 跟踪变量时比较麻烦,你可以用 ddd 来显示各种数据结构之间的关系。 你还可以在 Emacs 里调用 gdb,那样就可以同步显示源代码了。 而且 VIM 和 Emacs 还可以编辑很多其它东西,比如信件, LaTeX 文档, HTML,配置文件„„ 你不用另外找一个什么编辑器来干这些杂活了。 很多程序比如 Mutt, tin 都可以在内部使用 VIM,这样就更方便了。 实际上 make 在其它方面还能帮你很多忙,我的每一个比较大型的 LaTeX 文档都是用 make 维护的。 Linux 能干的高精尖的事 情 Windows 都干不了 当然有很多事情是 Linux/UNIX的专利了。 因为 Windows 只能装在 PC 机上,好像以前也有 Alpha 可以使用 Windows NT,但是就是没见到有人用。 PC 机的能力是很低的,像我们编程序处理 NPHard 问题的人,用 Windows 的机器显然速度不够,而且有时一个问题算上几天甚至几个星期, Windows 机器是以“死机”著称的,我们怎么能放心。 所以几乎所有科学计算程序, EDA 程序,高性能图像处理程序都不是 Windows 的。 他们有时也会移植一 些给 Windows,但是常常降低那些程序的能力。 你比较过 Windows 版本的 Mathematica 和 Linux 的有什么区别吗。 IBM 制造的最大的并行计算机有 8000 多个处理器, Windows 不可能有能力管理这么多处理器,它用的是什么操作系统。 答案是 Linux。 《泰坦尼克号》电影里的三维动画,那么细腻逼真, Windows机器能做出来吗。 不行。 那也是 Linux 机器做的。 民航总局用来训练地情人员的虚拟现实训练设备, Windows 当然无能为力。 那都是商业的 IRIX 机器。 UNIX 是最早支持 TCP/IP 网络协议的系统。 它上面有很多可以互相协作的网络服务程序,它们经过多年的使用和修订,已经达到比较完善的程度。 而就在 1997 年,微软的比尔盖茨还在扬言:“ Inter 是没有前途的。 ” 微软的这个“远见卓识”大家应该都已见识,它后来加上的网络服务程序 IIS 漏洞之多,让公安部都频频发出警报,大家也是见识了的。 其实你知道了, Windows 没有一样有用的事情能比 UNIX 干的更好。 Linux 干不了的有用的事情 Windows 照样干不了 当然 Linux 不 是万能的。 它也有不能干的事情,电脑也有干不了的事情。 但是 Linux 干不了的事情, Windows 肯定也干不了。 这些事情就是我们需要探索,需要努力的事情了。 在你探索的过程中, Linux 必定是你的好伙伴。 不要把 Linux 和 Xwindow 掩盖起来。 不要把我们的用户当成傻瓜。 什么。 你早就知道 Windows 是垃圾。 噢。 你怎么不早说呢。 害我废话这么多。 嘿嘿。 “好了。 你知道 Windows 是垃圾,你现在用什么。 ” “ Linux + Xwindow” “那我问你, Xwindow 是什么样的。 ” “不就是跟 Windows 差不多吗。 只不过 39。 Start39。 按钮比较方,而且上面不是一个 Windows 标志,而是一个脚丫子。 点击一下居然还有很漂亮的中文菜单。 我喜欢。 ” “你知道什么是‘根窗口’吗。 ” “不知道。 从来没听说过呢。 ” “根窗口就是遮盖整个屏幕的那个最大的窗口。 ” “哪儿有什么窗口啊。 我没有看到呢。 ” 你发现了问题吗。 这些 Linux 用户说是在用 Linux 和 Xwindow,但是他们对 Linux 和 Xwindow 几乎完全不了解。 很多人用了那么久 Xwindow 都不知道根窗口是什么东西,不知道其实按钮也是窗口,不知道窗口管理器和其它程序有什么关系,大家都以为窗口上面的按钮是程序自己放上去的,不知道窗口的“ class name”,“ resource name”是什么东西。 他们也不知道 .Xdefaults 是用来干什么的。 特别是他们很多人都不知道 Xwindow 的字体是如何命名的,什么是 fontset,有了一个新的字体也不知道怎么安装。 他们被遮在 Linux 之上的一层一层的包 装迷惑了,他们等待有图形界面的工具来帮助完成一切事情,他们认为 Linux 跟 Windows 一样,只是麻烦一点。 他们知道 Linux 内核很好,但是他们感觉不到 Linux 和 Xwindow 在操作层面的天生的先进性,随后不久就把 Linux 完全删除掉了。 你发现没有,要用户理解 UNIX 和 Xwindow 的操作层面的先进性,才是留住用户的最好办法。 如果用户体会不到操作时的方便和高效,内核再好他们也不会理会。 但是用摹仿 Windows 的作法来吸引用户,永远会失败的。 因为 Linux 如果摹仿 Windows 那一套低效率的方式,那么 Linux 的这套“低效率方式”永远比不上 Windows 的那一套“低效率方式”。 那么用户就会说:“这个 Linux,没有一样比的上 Windows。 ” Linux 天生就是继承了 UNIX 的高效的工作方式,为什么我们要把它掩盖起来。 我们为什么只告诉用户 KDE 的菜单怎么用。 我们为什么不能像早期的 Xwindow 书籍那样第一节就告诉用户什么是 X server, 什么是 X client,什么是 Window Manager, 什么是根窗口。 第二章就告诉 用户窗口有哪些属性,什么是 classname, resource name, hint,怎样使用 .Xdefaults, xrdb „„ 在这里我又不得不说一下那些 Linux 的发行公司和写书的人,他们把 Linux 和 Xwindow 包装起来,却没有从基本上告诉用户 Xwindow 的工作原理。 很多书籍讲授的层次就是在 Gnome, KDE 的菜单操作的层次,靠大量抓图来占篇幅,“繁荣” Linux 书籍市场。 现在很多人已经把能够利用别人的库写出一个好看的程序作为自己编程水平的象征。 在这个“图形 化”,“可视化” 的年代,你如果还在用 troff, LaTeX 写文档,你还在用 VIM 自己编辑 HTML,用 Mutt 处理邮件,你还在用文本模式的 gdb 调试程序,你还在用 Xlib 写程序 , 你还在用 tin 上 USENET,你还在自己写 Makefile,写机器代码,你还在玩 Clossal Cave 这样的字符模式冒险游戏,那你就是老古董。 其实这种思想是错误的。 虽然你是一个坚决的 Linux 支持者,但是你的思想是 Windows 的思想。 你认为图形界面,菜单,按钮就可以解决一切问题, 就可以给你高效方便。 你还是没能摆脱微软给你的潜移默化的东西。 你其实离不开 Windows 那样的环境,你迟早会删掉自己的 Linux。 GUI vs. CLI 做一个坚定不移的“两面派” 大家看到这个标题是不是热血沸腾。 两派大虾都可以围攻我了: GUI 派用户:“哇。 我一看你这小子就是 CLI 的。 要不然自己写什么 Makefile。 用什么 Mutt。 ” CLI 派用户:“切~ 你还用 X。 高手都不用 X。 你是 GUI 那边的。 ” 可怜的我:“ 555~~ 你们都不要我~~ GUI 和 CLI 就那么 水火不容吗。 ” 计算机界这样的门派之分还很多。 很有特点的就是 CLI 和 GUI 了。 CLI (Command LIne) 的狂热份子声称永远不用 X。 我上次在实验室看到一个同学用一个 SecureCRT 登录到 Sun 机器,然后用一个 vanilla vi 编辑程序,我建议他启动一个 GVIM 过来显示在 Exceed 上可以有语法加亮。 但是他坚决反对,说:“高手不用 X。 你想想,要是我在一个很慢的网络连接怎么用 X。 而且好多服务器没有装 X 程序。 ” 但是我们实验室的网速可够快, Windows 机器 都有 Exceed 啊,而且 Sun 机器有全套 X 客户程序包括 GVIM。 他说他是 CLI 的坚决拥护者,但是他却在用 Windows,他后来打开了好几个 SecureCRT,每次从文本框输入地址,用户名和密码,从下拉菜单选择 SSH2,然后点击“ Connnect”。 他还不断的夸 SecureCRT 是“网络管理员投票选出的最受欢迎的登录方式”。 老天, SecureCRT 本身就是个 GUI 啊,他其实没有明白 Xwindow 的好处。 你说我是 GUI 的。 我虽然很少在 console 下工作。 但是我 对 bash, VIM 很熟悉,我可以让 bash 按照我的键绑定方式来工作。 我可以在 rxvt 里使用 Mutt 来收发。 我的每个桌面上都常常堆放着一打不同大小的 rxvt。 我用 VIM 编辑 LaTeX。 我自己写 Makefile 来维护 LaTeX 文档。 我有时用 mpg321 来放 mp3。 我上 BBS 用的我自己写的 expect 脚本。 好了, CLI 派的朋友可以收我做盟友了 :) 你说我是 CLI 的老古董。 我的 FVWM 被我配置为可以“手写操作”,我只要画一个 r就可以启动 rxvt,我只要画一个 U 就可以启动 GVIM,„„ 我用 GVIM 语法加亮模式编辑程序,我用 Mozilla 浏览网页,„„ GUI 派的现在好像认我做朋友了 :) 好了。 CLI 派的朋友,虽然我很喜欢命令行,但是我有时在屏幕上左右画一下就可以执行 : Module FvwmConsole terminal rxvt geometry 45x50+0 \ bg gold fg midnightblue \ fn adobecouriermediumr**14******* 你是不是现在又想把我逐出师门。 GUI 派的朋友,虽然我很喜欢窗口。 但是我可以在 FvwmConsole 里输入: All (rxvt) MoveToDesk 把我所有的 rxvt 移动到我现在工作的桌面。 “这家伙,怎么这么快就叛变了。 ” 其实何必分什么 GUI 和。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。