计算机专业学生装逼入门


  前一段看过几篇讨论“IT从业者应该怎样装逼”的文章。我窃以为那些文章中,技巧成分过重,而装逼这事应以修炼内功为主。这一修炼需要长期努力,至少应该从在研究生时期(甚至本科生时期)就修行不辍。本人装逼水平有限,但十分愿意分享一下入门经验;况且自己经验不够丰富,经常弄巧成拙,顺便自嘲一下。我将装逼经验总结为以下10条,欢迎拍砖:

  1. 操作系统一定不能用 Windows! Unix / Linux系的东西是首选。普通青年可选用 Ubuntu 、 Fedora 之类的 Linux 发行版,文艺青年可选用 Arch 或者 Gentoo,2B青年可用 FreeBSD 。苹果 OSX 是 Darwin 系的 Unix ,所以勉强可用,但是 Terminal 窗口要保持常开,以示“与富二代群体划清界限”。

  2. 只有在迫不得已的时候,才进入图形界面,一边输入startx,还要一边做出不情愿的表情,然后开始哀叹或咒骂,内容以图形界面的缺点为主,比如 KDE 浪费资源, Gnome 脑残设计多, Xfce 充满 Bug , LXDE 巨难看等等。进入图形界面之后,要立刻开个 Terminal。

  3. 无论是图形界面还是文本界面,显示语言必须是英文。删除所有中文字体,迫使中文无法显示,或显示为乱码。图形界面的背景不妨使用纯色以体现专业,拿开源项目的徽标或海报做背景也可以,但千万不能使用女神照片之类的——要体现牛叉,就要摆出“老子才不愁妹子”的姿态。

  4. 在被迫使用图形界面的情况下,熟练使用各种快捷键,以减少鼠标操作次数。连续使用快捷键时,击键频率须达到每分钟50键(组合键按1键计算)。这样即可保证屏幕中各种内容以“闪动”形式呈现,为观众带来视觉冲击。如果思维卡壳,无法按照预定击键序列操作,也要强行使用切换窗口、切换工作空间之类的冗余操作,保持手指忙碌、屏幕闪动。

  5. 选择软件时,以入门难度为第一标准。哪个软件最难学,就一定要用哪个。如果几个软件一样难学,那么哪个是开源的,就用哪个。如果都是开源的,那么哪个界面不直观,就用哪个。照这样选出的软件,一定会带来一些痛苦,但无论多疼,你一定要在使用时称赞其美好,并向他人推销。例如,能用LaTeX的话,就不用 OpenOffice / LibreOffice Writer (Word 明显不能用);能用 dot 就不用 dia ;能用 scilab 就不用 octave。

  6. 选定软件之后进行安装时,类似 App Store 的东西一定不能用。如果软件提供了源代码,一定要通过编译源代码的方式进行安装,BSD之类的操作系统可以使用 port 。如果原来的软件是 gcc 编译通过的,那你就一定要换 icc 编译,并手动修改代码,解决兼容性问题。有麻烦要上,没有麻烦创造麻烦也要上。总之,对于同一款软件,怎样安装不方便,就一定要怎样安装。

  7. 计算机专业学生,免不了要做程序、写代码。在这项活动中装逼是比较容易的:编程语言无关紧要,比如普通青年可用 C/C++, Java, Python 等等,文艺青年可用 Haskell,2B青年可用 Prolog。无论使用何种语言,一定不能用集成开发环境,编辑代码可用 emacs 或者vi / vim,移动光标的时候,一定不能使用方向键。

  8. 如果需要描述某个技术过程,那么语言一定要自信张扬,潇洒飘逸。能用简称泽不用全称,能用术语就不用正常语言,能用英语就不用中文。

  例(改编自真实对话):

  师妹:假如我就是想用 MySQL community,为了避免类似 Fedora 那样其他很多软件包依赖 MariaDB Client 的情况,应该如何弄?

  师兄:你问这问题在打包上非常好实现。MariaDB 和 MySQL Community 的 spec 里都添加一条 Provides: mysql,并保持两者 devel library 包名都为 libmysqld-devel,然后在所有要用 mysql 数据格式的其它软件包里都直接 BuildRequires: libmysqld-devel。接下来如果两者在一个 repo 里,编译可能会出现提示说有两个同样的软件包提供了相同的 so,你必须手选一个。而两者包名相同,你手选不了。OBS 是使用 %define prefered 来控制服务器的,MariaDB 是 1,Community 是 0,所以优先用 MariaDB 来编。Koji 如果想实现的话可以把 community 放在另一个 repo 比如 non-free 里面,做 DVD 的时候确保把两者都灌进去就行。至于用户就完全分辨不出来了,因为 zypper 的机制是优先使用已有 lib 和已有 lib 的 devel 包,除非版本号大或者你手装 community 的 client 才会被替换(一般不架设 LAMP 不需要 server 只要 client,基本都已经装好了你也注意不到)。而 yum 应该可以人为的把 release 号弄小一号实现优先安装 MariaDB 提供的 libmysqld-devel。另外 Provides 的作用就是说你可以 yum install mysql-client。会提示你选一还是选二,你连名字都不用记住。

  9. 对于一个无须提供具体过程的问题,回答要简短明确,并用一句话给出一个尽可能超出对方知识范围之外的解释,以显示自己深不可测。

  例(改编自真实对话):

  师妹:是不是所有非递归算法都能写成递归形式呀?

  师兄:是啊!否则图灵机和 lambda 演算就不等价了。

  10. 尽可能将有关计算机的话题引向宇宙万物、人生哲学之类的话题上,以装出一种“返璞归真、草木皆机、万物大同、人机合一”的崇高境界。

  例(改编自真实对话):

  师妹:为啥对于许多问题,贪心算法无法寻得最优解呢?

  师兄:这是宇宙万物繁衍之基本道理。每步皆取最优,看似强硬霸道,实则愚昧。所谓亢龙有悔,盈不可久也,或云坚强者死之徒。做人、行事也是如此,如果只是贪得眼前利益,总是强硬地采取当前最优解,长期来看,就未必是最好的做法,到头来甚至不免竹篮打水,前功尽弃。

  师妹:既然这样,那贪心法岂不是没啥用处?

  师兄:非也。一个巧妙的贪心法,即使不能取得全局最优,也能找到一个相当不错的解,而找到这个解所花费的计算时间,往往比那些能找到最优解的算法少得多。人生许多问题,在乎的不仅仅是收获,而是收获与付出的比值。把计算结果看作收获,把运算时间看作付出,这就不难看出贪心法的美妙了。用贪心法节省出的时间、精力和计算资源,完全可以用来做更有意义的事情。生活也是如此啊,在几件小事上殚精竭虑,找最好的路子,却枉费时日,劳民伤财,又如何能享受人生呢?