或许你会认为这篇文章的内容极为基础。事实上,我也是这么觉得的。但从很多同学的留言以及QQ群中的讨论来看,还是有必要简单地科普一下,分享我的一点“搜索”经验。
如果你在学习编程的过程中,以及平常的生活中,可以很自然地利用搜索引擎解决问题,那么你已经达到本文所期望的目标。否则,你应当认识到:
正确地使用搜索引擎是学习编程的必备技能
现在是互联网的时代,学习的方式已经同过去完全不同。二十年前你想去学习一门新技能,只能通过问人、图书馆查资料、买书、上学习班等现在被称之为“线下”的方式。后来,搜索引擎在一定程度上改变了整个世界的运作方式。如今你遇到问题,第一反应不是去用搜索引擎,而仍然选择问人,那我只能善意地认为你是个“复古”的人。
当然可能更多时候是,你用了一下搜索引擎,但是没得到你想要的结果,于是你又只好去问人。这种情况,你就需要一点搜索引擎使用技巧和意识:
用 google 作为你的默认搜索引擎
google 是目前这个星球上最好用的搜索引擎,没有之一。按理说,在开放的互联网上,有一个最好用的产品,你没有理由不去用它,而要勉强于其他拙劣的替代产品。然而因为一些众所周知的不宜在公开场合讨论的原因,你可能不得不选择一些名声不那么好的搜索引擎。
所以,如果你立志成为一名程序员,那么为了更好地get“搜索”这项必备技能,首先还得获取另一项不宜在公开场合讨论的技能。这就不是我们今天要讨论的了。
选择合适的搜索关键词
提出一个好问题,本身就对解决这个问题起了很大的帮助。选择搜索关键词也是一样。如果你只是用“我安装python为什么不成功”、“运行python的时候报错”这样空泛的大白话去搜索,天知道这要怎么解决……
- 用关键词,而不是整个句子
虽然现在的搜索引擎已经在语义分析和分词上做得相当成熟了,但还是建议用关键词来描述你的问题,这样可以使你的问题更加具体和精准。通常,用空格分割的1~3个关键词,可以比较得到比较好的搜索结果。
- 直接使用报错信息搜索
如果你是在为你的程序无法运行而寻找解决方案,那么直接使用报错提示信息进行搜索是最好的选择。一般来说,代码异常,都会输出异常的类型和位置,而应用软件的错误甚至还会提供对应的错误码,以便于定位和解决问题。用这些信息去搜索,比你用自然语言描述错误现象要精准几百倍。
- 添加范围限定的关键词,缩小搜索范围
比如你要搜索python相关的一个问题,那么在你的关键词里加上python会好过直接搜索你的具体问题。比如你想了解Requests模块的具体用法,如果不加上python,则很难找到你要的信息。更进一步,如果你清楚你的问题是django方面的,那么直接加上django关键字会比加python更有效。但要注意,你得分清你的问题属于哪个范围。如果是因为你的数据库和你操作系统不兼容而导致的问题,你却一直用python关键字进行搜索,那就跑偏了。
- 避免引入歧义
有的时候,你会发现你搜索的关键词会导向一个被热议的问题,但你确信这个问题并不是你想要的。这时候宁可放弃这个会导致歧义的关键词。当然还有另外的解决方法,稍后我会提到。
还有时候,歧义是因为你错误的推测而带来,比如上个例子中的“python”导致查不到数据库的问题。所以在搜索过程中,你需要根据情况调整你的关键词。
- 逐步修正关键词
复杂的问题往往无法一蹴而就地解决。搜索的过程也是一个反复思考的过程,需要通过已有的结果推断和修正,最终达到目标。
分辨搜索结果的质量
最近一段时间,国内某知名搜索引擎被众人口诛笔伐,对于搜索结果的排名和误导也是其中一条罪状。虽然搜索编程相关的资料不太至于让你上当受骗,但搜索结果的质量还是有可能影响到你的学习。可能你下载到的软件不是官方正版,而是被植入了木马病毒的版本。也可能你轻信了投放推广的培训机构,去上了一个糟糕的培训课程。更多的情况是,搜索出的结果里,有很多无效的、重复的甚至错误的内容,耽误你的时间,误导你的方向。
鉴于此,如果你无法选择更好的搜索引擎,那我只能建议你,认真分辨搜索结果的质量。要对搜索结果保持怀疑的态度,不要只迷信排名靠前的结果,它们可能是推广(注意点看,一般搜索引擎都有标注),也可能是做过一些排名优化,或者仅仅是运气好排到了前面。下载软件包尽量去官方的网站,查阅资料尽量选择官方的文档。另外,独立技术博客的质量要高于那种挂满小广告的资源站。
对于编程方面的问题来说,还有种选择是直接去相关的网站进行搜索。这里强烈推荐又一个程序员的必备工具:StackOverflow。多次有人问我,英语不好能不能编程。我的回答是,可以,但你会错过很多好东西。比如这时候,你就只能去用中文同类网站。有个SegmentFault属于国内做得不错的,但在内容上肯定无法与StackOverflow相提并论。
另外,知乎也是个可以搜索问题的去处,但一般是偏向评价性质的问题,而非具体的技术问题。
搜索引擎的高级技巧
大多数搜索引擎,除了直接搜索关键字,都还会提供一些高级功能,常用的包括:
- 站内搜索 site
示例:在搜索框中搜索
python site:zhihu.com
就可以把搜索结果限定在知乎内。对于一些没有站内搜索或站内搜索不好的网站来说很有用。
- 完全匹配 ""(双引号)
示例:在搜索框中搜索
"matching query does not exist"
可以得到精确匹配这段文字的结果,而不是把它们当做多个关键词来搜索。
- 去除结果 -(减号)
示例:在搜索框中搜索
django -unchained
单纯搜索django,会得到一部分同名电影《Django Unchained》的结果。通过减号可以去除包含unchained的结果。注意减号前面必须有空格,后面必须没空格。
- 文件类型 filetype
示例:在搜索框中搜索
python filetype:pdf
得到的结果都是pdf类型的。这对于搜索文档或者ppt很有帮助。
百度现在将时间、文件类型、站点三项过滤加在了搜索结果的上方,这点我觉得还是不错的,毕竟大多数人不会像程序员一样习惯使用代码和符号语言。
最后,对于需要写论文的同学来说,还有个不能不去的地方就是
scholar.google.com
同样,如果你又没法好好使用它,要找替代品。那我真心不想告诉你还有个
xueshu.baidu.com
因为我试过了,这上面连我自己的论文都搜不到!