Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13145
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-02 08:43
文章分类

全部博文(3)

文章存档

2013年(3)

我的朋友

分类: C/C++

2013-06-04 18:23:39

    一点说明:之所以叫不能说的秘密,并非因为保守,而是因为告诉一般人,他非但理解不了,还有可能要取笑你。所以有自尊的Hacker往往只传自己信得过的人,以免自讨没趣。于是很多东西就逐渐成为了不能说的秘密。所以这个Hacker传说系列也是一个尝试,仅供参考。
  一个Hacker相对于程序员来说有着超过100倍的惊人效率。并非是由于他们的智商超过一百倍。而在于他们掌握了程序员没有掌握的"魔法"。
  重量级秘密之一:Hacker的编程方式往往和普通程序员都是相反的。
  Hacker的思维和工作流程都采用“以我为主"的指导原则。而程序员都是采用“以电脑为中心“的方式。
  以一个最简单的例子来说,程序员喜欢使用IntelliSense,利用电脑帮助选择api,而Hacker会把大多数的api熟记在心。也许你会说这个怎么能记住呢?其实绝对是可以的, 只是没有人和我们强调这个看上去简单之极的方法。
  我们拿英语为例,一般来说掌握英语至少需要记住5000个单词,其实编程和写文章没有什么两样,api就如同英语单词一般。如果我们一边写文章,一边要查字典,不但效率低,而且文章质量差。而所谓的IntelliSense只不过把纸质字典换成了快译通而已。
  当一个Hacker编程的时候,他脑中已经迅速的用单词(api)组织成为文章(program),自然就效率奇高了。那么记住api很难吗?其实很容易,因为很多api都是要天天用的,一个程序员如果一年编程下来还不能背出80%的api,那么智商就在平均水平以下了。
  但是事实是大多数程序员记不住api,这就是IntelliSense惹的祸了,看似很方便的鼠标一点,却失去了将api刻写到脑中的机会。这也是所有的Hacker对Visual Studio不屑一顾的根本原因。当我们看到一个Hacker用文本编辑器来写程序的时候,其实他不是在耍酷(园子里面的很多朋友把这称为“装”),他只不过是用正确的方法来做正确的事而已。
  所以当你采用微软模式编程,那么开始会非常快,但是没有积累,最后只是黄梁一梦而已。而Hacker所使用的Hacker模式, 开始会很慢,然后会越来越快。效率会呈现线性增长(这是亲身体会,绝不夸大)。
  其实著名的 Hello World 惯例也包含了这样的一个隐喻,认认真真的象写Hello World一样“一个字一个字“写每一个程序,最后自然会成为高手。
  还有很多例子,也体现了Hacker“以我为主“的思想。
  大量的Hacker都在纷纷转向动态语言,这是因为动态语言具有api容易记住的优良特性(比如参数的顺序可以是任意,这个可以大大减轻记忆量),因此当CPU不再是瓶颈后,动态语言成了最佳选择。
  大多数的Hacker都喜欢做底层,因为底层的api数量最少, 随版本的变动最少,所以他们可以用较少的力气来保持或者增加他们的效率。
  所有的Hacker都对微软技术很头痛, 因为微软非常喜欢推出新的api,因此当一个新版本推出,即使一个顶级Hacker,效率也可能会损失50%以上。这会令他们非常抓狂。
  即使是.Net之父Anders他也喜欢做底层,他研究的是语言特性,涉及的api不过几十个而已。如果让他来写asp.net,效率可能和我们也差不多。
  其他的例子还有诸如为什么要用跨平台,为什么要使用Vim/Emacs,Hacker如何通过大脑来大大减轻眼睛的负担,从而能干到60岁,等等涉及很多方面的方法和实践,其实都体现了这个思想。
  结论:Hacker们用一个看似慢,实则快的可持续发展的方式来发展他们的大脑。他们往往抢占最佳地形,摘得营养最丰富的桃子。而程序员往往用工具商给的所谓高级工具(比如微软的Visual Studio),其实也就是一把锄头,每天加班加点,也只是在贫瘠的土地上割点青草吃吃。
     重量级秘密之二 :保护眼睛
     前面提到过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,就是闭着眼编程序的。
    转载:http://www.cnblogs.com/frand/archive/2010/11/27/1889618.html
            http://www.cnblogs.com/frand/archive/2010/11/29/1891356.html
   
建议大家再去原地址看看,那里的评论同样精彩!!

阅读(1172) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~