以前的学习,一般需要预先在肚子里存储下足够的知识,必要时,就从海量的信息中提取所需的部分。但是,到了信息领域大大超出”四书五经”的新时期,预先无目的的吞下海量信息的学习方式就有些不合时宜了。现在一般是先知道要学什么,然后有目的的去寻找答案,这种方式看上去更加有效率。

不过知道学什么然后去学习这种方式要求学习者拥有一个包罗万象的信息库,以供随时抽取各种目的信息;其次,是需要一个强劲的信息检索工具,以便高效率的从信息库中提取信息。很明显,Internet可以充当那个海量的信息库,而搜索引擎,则正是寻找光明之火的绝好工具。

搜索引擎

相信用过浏览器的人都曾经在搜索框输入某些关键词,然后从浏览器返回的网页中筛选自己需要的信息,这个过程就是搜索。但是大部分人并不知道搜索引擎(Web search engine)的存在,并不知道google与baidu这两大搜索引擎的区别,并不知道怎样精确地搜索。

搜索引擎其实就是从互联网检索信息的软件系统,搜索引擎的基本工作原理包括如下三个过程:首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。

google搜索引擎的工作流程:

  1. 你写博客、或在Twitter上推微博、更新站点等诸如此类往Web上添加内容的操作
  2. Google bots程序(一种作为搜索引擎构件的智能代理程序)抓取你网页的title和description、keyword等内容
  3. 一旦被Google爬虫访问到,网页几秒内就被索引了
  4. Google基于链接评估域名和网页的总体PageRank值
  5. 检查网页以防止作弊行为
  6. 在对页面做了损害分析后,现在每个页面都有很多用于辅助用户搜索的数据片(比如检索关键词)反向引用着它
  7. 用户发出搜索请求
  8. Google会用同义词匹配与你的搜索关键词语义相近的查询结果
  9. 生成初步的查询结果
  10. 对查询结果集按权威性和PageRank进行排序,重复的查询结果被剔除。
  11. 对查询结果进行过滤处理
  12. 最终返回给浏览器端的用户一个人性化的、布局良好的、查询结果和广告泾渭分明的有机查询结果页面。

国内主要的搜索引擎就是百度了,大部分人用的也是它,不过据好多技术大牛说搜索还是不要用baidu,用google是王道。我本人几乎没用过百度,因为我没有用它的必要,google很好地完成了我想让它做的。

关于吐槽百度的文章有很多,吐槽点主要有下面几个方面吧:百度公司的非常浓重的商业化,搜索结果很差,有很多虚假广告。陈皓的作环保的程序员,从不用百度开始写的不错,可以看一下。

大多数时候我们只是输入两三个关键词并且以空格分开,然后开始搜索,这样做搜索结果的命中率并不很好,要想得到精确的搜索结果我们需要更加高级的搜索技巧,当然这些技巧并不难。

搜索时过分常用的、单独存在没有意义的词汇往往被忽略掉,比如冠词”a”、”the”;介词”of”、”in”、”on”、”at”、”to”;连词”and”、”or”、”but”;从属连词”that”、”which”、”when”;代词”my”、”his”、”them”……等等。要对忽略的关键字进行强制搜索,则需要在该关键字前加上明文的”+”号,另一个强制搜索的方法是把关键字用英文双引号引起来。因为被英文双引号引起来,搜索引擎就强制搜索这一特定短语。其他常用技巧如下:

  1. 另外还有减号(-)。比如,"the most imporant benefit of education" – "united states"要求Google返回含有”the most important benefit of education”但不存在”united states”的文章。
  2. 另外一个威力无穷的符号是星号(*)。Google支持通配符搜索,即搜索字符串中可以包含星号(*),用来替代任意字符串。比如,想找历史上”最怎么样的”老师的话可以搜索most * teachers in history such as
  3. 还有一个运用相当灵活、经常带来意外收获的符号是波浪号()。把波浪号()加在某个单词前面,是在告诉Google:除了给出的关键字之外,还要搜索与波浪号(~)后面的那个单词相关的词汇。
  4. 在指定网站中搜索的语法site:。比如,"the purpose of education" site:http://www.time.com/就是要求Google只返回http://www.time.com这个网站里的含有"the purpose of education”的文章。

还有下面这些高级技巧:

  1. filetype:语法,在某一类文件中查找信息。比如要搜索几个资产负债表的Office文档搜索:资产负债表 filetype:doc OR filetype:xls OR filetype:ppt
  2. inurl:语法,搜索的关键字包含在URL链接中,”inurl”语法返回的网页链接中包含第一个关键字,后面的关键字则出现在链接中或者网页文档中。不过”inurl:”后面不能有空格,Google也不对URL符号如”/“进行搜索
  3. allinurl:语法,”allinurl”语法返回的网页的链接中包含所有作用关键字。
  4. intitle:allintitle:语法,搜索的关键字包含在网页标题中。
  5. link:语法,搜索所有链接到某个URL地址的网页。注意:”link”不能与其他语法相混合操作,所以”link:”后面即使有空格,也将被Google忽略。link只列出Google索引链接很小一部分,而非全部。一般说来,做友情链接的网站都有相似地方。这样,可以通过这些友情链接,找到一大批具有相似内容的网站。

还有一些比较高级的用法,具体自己搜索去吧。

问与答

有时候通过搜索得到的答案并不尽人意,这时候如果能在网上提出自己的问题,并有相关领域的人来回答该是多么好的一件事啊。没错,确实可以这样做,至少在计算机行业可以。目前IT方面最好的问答网站毫无疑问是StackExchange,它有相当多的子节点,上面的问答质量相当的高,不过是英文的,需要有一定的英文水平。

而在国内,IT行业的问答网站主要有SegmentFault,正在起步中,社区风气也不错。另外还有知乎,上面包含各行各业的话题,里面回答的质量也是相当的不错。

虽说有这么多好的问答网站,但在提问前一定要自己先搜索一番,不要轻易就去求人。只有当自己经过一番搜索仍无法解决问题时,再去问别人。通过搜索,你可以更加清楚自己的问题所在,也能更加明白地描述你的问题。提问时,还可以加上自己已经搜索到的一些结果,供回答问题者参考。

提问也没有那么简单,关于如何提问可以参考智慧的提问以及什么样的问题是一个好问题,这里简单的总结一下(当然是IT行业的,其他行业可以借鉴这里或者自行搜索):

  1. 有错误的一定要把错误码都贴出来,产生错误的那一段程序代码也要一并提供,需要做错误重现,你自己的一些尝试,很重要,避免其他人浪费时间。
  2. 讨论性的问题一定要说出你自己的观点。
  3. 表述要清晰,不止语义清晰,另外文字排版也要清晰明了,便于阅读。
  4. 不要大喊大叫、不要抱怨、语气请低调、尊重他人。

当然问答网站不只是用来问问题的,你也应该积极地去回答自己熟悉的相关领域,这样才能丰富社区知识,提高社区质量。当然了,回答问题也是有学问的,可以参考How To Be A Good Guru这里有中文版的。

简单总结一下回答的要求:

  1. 不要回答你不知道答案的问题;
  2. 先解释给自己(如果自己是提问者,你的回答是否能让自己明白?)
  3. 授人以渔,只提供最低限度的帮助
  4. 展示你的操作过程
  5. 有分寸地使用幽默
  6. 如果你不能说出有用的信息,就别说
  7. 避免使用术语、难懂的缩写和俚语
  8. 永远不要用”RTFM”回复。RTFM:Read The Fucking Manual”,去读该死的手册。另外一个常见的是: STFW:Search The Fucking Web,搜索该死的网络,或者友好一点的”Google 一下”。
  9. 回答要深思熟虑
  10. 保持一颗新手的心

网络课程

搜索和问答往往只是获取碎片化的知识,要想建立系统化的认识,至少要认真地上完一门课然后慢慢建立自己的认知体系。以前只能通过学校系统地学习,而现在网络课堂的兴起无疑降低了学习的成本,提供了诸多方便。

现在网上公开课领军的三驾马车是CourseraUdacityEdX,当然必须全部是国外的公开课。在国内相对不错的公开课有网易公开课多贝公开课等。


发现果壳做了一个MOOC学院,不错的mooc导读网站,如果没有心仪的课程,可以现在这里随便浏览一下。

果壳mooc学院

update: August 20, 2014


公开课有传统学校课堂无法比的优点,比如如果在学校你缠着老师讲上3遍,或者让老师等一下让你和同学们讨论一会,那你一定会把老师逼疯。而在网上听课,则可以随心所欲地”折磨”老师:拖动滚动条,让老师气喘吁吁地一路小跑,或者让他把那一小段说上一百次。最重要的,你可以让老师随时”闭嘴”,拿起纸笔,自己推导一下,甚至编个小程序试试。如果做对了会很开心,如果没做对,发现错在哪,不也很开心吗?把被动地听,转换成主动地发现,学到了,你就是赢家。

关于公开课的学习这里提供几个资源:

  1. 如何学习网络公开课?
  2. 学习网络公开课,如何提高效率?
  3. 如何做到流畅阅读英文资料和听懂国外公开课?
  4. 听不懂美国大学公开课如何应对 ?

其实上面的几个资源只不过是我在知乎上面搜了网络公开课,然后挑选的结果,强大的搜索会让你找到你想找到的资源。

选一门自己喜欢的课,听下去,就这么简单。


另外,TED里的演讲也不错,很多经典。可以批量的下载TED或者网络课程的资源,具体可以看阳志平的文章Mac入门笔记(6):优质课程

update: August 30, 2014


社交网络

当你学会了搜索,学会了提问与回答,并且认真听了课程,确实知道了很多之后,那么你还想做什么呢?我想做的就是分享!

得益于现在强大的社交网络平台,分享变得如此之简单。我们可以分享自己的小作品或者是学习总结之类的。分享的目的在于传播,在于交流,当然也可以获得一些”赞美”、”威望”。

其实分享也是一个测试的过程,读你文章的人越多,测试就越彻底。再读你文章的时候,读者可以提出自己的疑问,而你可能就需要对文章的某部分做进一步的解释,或者发现自己文章中的不当之处。

通过社交网络你可以关注有共同爱好的人,读他们的文章,尽情的和他们交流,这是多么一件美妙的事呢!!

文章订阅

在这个信息泛滥的时代,要想获取高质量的文章,需要有一双”火眼金睛”,还需要有强大的工具金箍棒。

要想有”火眼金睛”,必须要有足够的阅读量。你需要读相当多的文章,然后从中筛选出高质量的文章。然后就需要使用金箍棒了,这里金箍棒就是google reader(可惜的是,马上要关闭了,我至今没找到可以替代的阅读器呢)。我们可以把高质量的博客或者站点交给google reader,这样就可以获取最新的文章。

至于用reader的好处,说不出来的,你用上一段时间就知道了。可以透漏的是,通过google reader我知道了许多。


目前(update: 2014.8)来看最好的订阅器无疑是feedly,不过由于众所周知的原因,国内访问不了(也不算访问不了,只不过得花点钱访问而已)。不过Android上面有一款应用press,可以把feedly订阅的文章导进去。mac上的应用Reeder据说可以流畅的订阅文章,只是要收费而已。你看,花钱买服务是王道啊。


如你所见,本文的好多方面也是我通过搜索获得的,所以,尽情去搜索,去探索未知的世界吧。

更多阅读

Google搜索引擎的工作原理
Google搜索从入门到精通
搜索笔记
MOOC:更好和更时髦的教育系统
在Coursera,随时都是学习的好时候