博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Hacker传说之不能说的秘密(2)

Posted on 2010-11-29 18:41  栖山  阅读(5679)  评论(72编辑  收藏  举报
说明1:对点击“推荐“的朋友表示感谢,博客园有没有可以看到是谁推荐的功能呢?
说明2:对所有的评论朋友表示感谢,即使是批评意见也很有价值。
说明3:是这个系列的第一篇,忍不住放入太多内容,导致重点不突出,等有时间把文章重构成2-3篇

说明4:题目中的Hacker是特指编程技术超牛的程序员。而不是指黑客,由于中文把Hacker翻译成了黑客所以导致了混淆。

      黑客又被称为黑帽黑客(Black Hat),cracker,脚本小子,是利用所学技术进行系统破解的人群。
      本系列的Hacker都是指编程顶尖高手,也被称为白帽黑客(White Hat) ,比如hacker老大 Linus。

      这也就是Redhat名字的出处吧。

 

重量级秘密之二 :保护眼睛
      上一篇提到过Hacker都是“以我为主”的。提高编程效率是为了增加竞争力和收入。保护眼睛就是为了减少支出,延长编程生涯的寿命。
      一个程序员,坐在空调房,没有体力劳动,可以说是一个非常舒服的工作,但是他有一样东西是过度使用的,那就是眼睛。
      特别是鼠标型程序员,他们每一分种都在做手眼协同。一般来说一个程序员用眼度是一个文员的200%。
      而一个Hacker的用眼度可能只有程序员5%,没有写错,只有5%,甚至更少。
      所以有很多大胡子Hacker。因为编程不需要用力气,能敲键盘就可以,所以只要保护好眼睛,就可以干到很大年纪。

      也就是说他们产出高达100倍,损耗却只有5%,真是无语呀。

 

      那么他们是怎么做到的呢?(以下方法都是从用眼的角度去考虑,当然也有其他方面的考虑,只是暂时忽略)

 

      首先是开发环境,Hacker尽量使用命令行,并使用良好的配色(深色底,浅色字),如果使用VS的朋友,如果你的背景色是白色,建议赶快换成深色(VS有很多theme)

      很多人会嘲笑hacker的古董界面,他们总是一笑了之,依然故我。我也嘲笑过命令行程序员,恐怕当时他们看着我的红红的眼睛暗暗发笑吧。

 

      其次是编辑器,也就是传说中的vim,emacs这样的神器。用他们有以下几个好处。

      1,用机器去找, 而不用眼睛去找。
         以VIM为例
         找文件的话,用所谓fuzzyfind,比如 app/controller/user_controller.cs这个文件, 你只需要输入 acu三个字母,文件就自动打开了。这个可以节省用眼30%
         找整个词的话,输入/user,这个可以节省用眼5%
         查找单个字母,输入fo,就自动跳到 user.name="Tom"中的o,这个可以省眼5%
      2,连击技
         这个就厉害了,利用查看和动作,可以行成“连击技“
         比如 User user=User.new,要删除new,光标在开头的U上,输入cfn+find,直接就把User.new改成了User.find,可以省眼30%,(一般做这个动作,我总会闭上眼)
         还有内删除,比如要删除find(Name user,Age age),输入f(,光标定位到(上,然后ci(三键将括号里面的内容删除干净。
         还有几百种连击技,大多我也不懂。不过即使掌握了10种,省眼也有50%
      3,snippet和autocompele
         snippet比较普遍了, autocomplete要提一下, 这个不同于Intellsence,因为autocomplete开头的字母一定要输入正确,才可以补齐的,所以Hacker都是要背api的(第一篇已经提到过背api了。
      以上只是vim技巧的一滴水珠而已,vim是需要用一生去相处的朋友。(注:emacs比vim难,建议还是从vim入手),不过很多初学者由于没有人指点,所以往往都最后失败了。其实是方法不对,反向不对,以后要专门写一篇Vim的最佳学习法。

      然后就是编程方法了,比如Hacker推崇的TDD,MVC
      所谓TDD,就是用程序去检查程序,成功绿色,失败红色,这个可以省眼30%。(Hacker的机器小秘?!!)
      所谓MVC就是把显示隔离开,做MC的时候,和TDD结合,继续省眼,有些Hacker很寂寞,所以即使做View的时候,他们也搞出了没有显示的浏览器(Headless Brower),还是命令行!

      还就是用脑力换眼力,Hacker尽可能的把代码的结构建立在大脑中,比如文件夹的结构,文件的名字,比如类的namespace,比如库的结构,比如函数名称,(当然背api是入门功夫了)。一个顶级的Hacker可以在脑中建立起代码库的全息索引。

然后利用神器,指哪打哪了。

 

      最后就是social coding,就是大家一起团结起来,代码互换,开源就是最重要的一种social coding。

 

      也许你会说,这里省30%,那里省10%,到最后不是要闭着眼睛编程序了?
      这个厉害了, 谷歌的盲人Hacker Raman,就是闭着眼编程序的。