最终问题还是被我解决了。我使用了什么关键字?答案很简单,既然正面攻击无效,就旁敲侧击。想一想,如果运行平台是Windows,如何实现该功能?Windows下通常用“GetModuleFileName”API实现。如果有些程序员要把Window的程序移植到Linux下,他(她)该拿GetModuleFileName怎么办呢?答案出来了,google“GetModuleFileName linux”。搜索结果第一条标题是“Qt-interest Archive - location of the program i am running”,就是关于如何获得一个可执行文件的路径的。分析一下google第一页的搜索结果,发觉有一些干扰信息(如何判断干扰信息我将在后文说明)。这说明我们需要稍微修正一下关键字。google“GetModuleFileName +linux”(这里的加号表示linux作为关键字必须出现在搜索结果中)。搜索结果第17条标题为“Guide to Making Relocatable Applications :: autopackage”,这就是标准答案了。
可以看出,解决问题的关键有两个要素。第一个要素是相关的背景知识。作为业内人士,我知道很多公司和个人正在将Windows平台下的软件移植到Linux上。我也知道Windows下如何获得全路径。第二个要素,结合背景知识发挥想象力,通过一些有特点的细节搜索到正确的答案。“GetModuleFileName”就是细节,我想到了可以把这个词和“linux”结合在一起搜索。
让我再举几个例子,说明如何从细节入手,找到问题的答案。
如果我要找VB(Visual Basic)语言写的源代码的话,我会加上“”end sub“”关键字,因为这个关键字是VB的语法特有的。如果我要找C/C++代码参考,我会加上“CVS”作为关键字,这是因为很多开放源代码的项目都是用C或者C++写的,而这些项目都是用CVS作为版本服务器,并用CVS服务器的插件公布到网上的。VB语法和开源软件,这是我的背景知识。但具有相同背景知识的人不一定能找出关键字来。重要的是观察。观察VB的代码,观察开源软件的主页,发挥想象力,从细节中提炼出关键字。
读到这里,读者是不是有点开窍了?解决问题分两步走。首先要有背景知识。然后是发挥想象力,将看似无关的细节结合起来,提炼出关键字。
3.3. 如何解决复杂抽象的问题
一些复杂抽象问题不可能快速找到答案。但是只要方法正确,这些问题最终还是可以使用google一步步解决。步骤是这样的。首先你对问题进行一般描述,从描述中取出关键字google。接下来阅读google的搜索结果,选出有价值的文章。然后从这些文章中分析出有代表性的关键字,继续搜索,阅读结果。重复以上步骤。要注意的是,关键字不应冷门,因为相对于问题的复杂性和抽象性,你的背景知识是不够的。搜索、阅读、搜索的步骤重复多次后,应该对问题有所了解了。在尽可能多地收集资料后,现在可以得出一个初步结论(不要忘记收集不支持该结论的资料)。下一步可以从大问题中提炼出小问题,使用前述的技巧解决小问题。这样做的目的是获得对大问题的切身感受,不是试图解决大问题本身。关键是多角度收集资料。资料不应是相互证明的,最好是互相冲突的。我再强调一下,由于问题的复杂性和抽象性,不要期望在短期内使用特殊技巧解决问题。有了结论,有了支持和反对的资料,又做过一些小的试验,你下一步要做的就是将结论,资料,试验结果提交讨论(超人可以光速飞行,你不可以)。就个人能做的工作而言,你做到这里就不错了。从问题本身来说,复杂抽象的问题的真正的解决,需要许多人长时间地讨论和试验。
下面我讲给出演示,说明这类问题如何着手。
我们以“软件开发行业的新手应该学习什么编程语言,如何学习”为例。如前文所说,应该选择一般描述的关键字。所以我建议你不要把和编程语言有关的关键字加入,而是应该选择如何学习编程的关键字。“how to”就是中文的“如何”,是老外技术文章最爱用的标题。(题外话,“how to”是我个人的王牌关键字)。“learn programming”的中文意思就是“学习编程”。加上前面所说的“how to”,完整的关键字为“”how to“ learn programming”(注意:how to 前后的英文双引号表示将how to这个词组作为一个词来搜索)。
[1] [2] [3] [4]
现在我们看一看搜索结果。搜索结果第五条“Teach Yourself Programming in Ten Years(十年才能学会编程)”就是一篇很好的文章,介绍了学习编程正确的态度和方法。其他的还有诸如“How To Pick A Programming Language(如何选择编程语言)”,你应该比较感兴趣吧。还有诸如“How To Become A Hacker(如何成为黑客)”,这可是一篇经典文献啊(这里的黑客是指优秀的程序员)。其他的还有“How to Get Started with C++(如何开始学习C++)”,“Instant Hacking : Learn how to program with Python(如何使用python编程)”,“How Java Works(java是如何工作的)”,“How C Programming Works(C是如何工作的)”,“How to Program Perl(如何学习Perl编程)”,“How to: Learn Visual Basic Programming(如何学习Visual Basic编程)”等等。
关于《Teach Yourself Programming in Ten Years(十年才能学会编程)》这篇文章,有必要再谈一谈。希望你不要被这个标题吓住了。让我告诉你一个小秘诀,关于如何判断选对了关键字的秘诀。作为初学者,你不了解软件开发,就象我不了解如何导演电影。所以,也许你自认为没有能力分析搜索结果。有一个办法可以帮你在初次搜索的时候作出正确的判断。作个初学者,你会自认为对软件开发的“常识”和流行趋势还有点了解,例如你认为好程序注释多,例如你认为编程可以在21天你速成。这可能是一种偏见,google是没有偏见的。如果你自认为使用了正确的关键字,google的结果却都是一些和你的“常识”唱反调的文章,说明了什么?说明你选对了关键字。
假设你选好了几种编程语言,现在该是了解那些语言的缺点的时候了。老外对于某种语言和某种文化最爱用的批评语就是“is dead(要玩完了)”,例如“C++ is dead”。现在就让我们google“C++ ”is dead“”(注意:is dead 前后的英文双引号)。搜索结果有点出乎意料?搜索结果竟然大都是“Java is dead”,这不表明Java就是一种很差的语言,进一步的结论需要阅读搜索结果。现在我们调查的编程语言是C++!让我们实行更严格的关键字匹配,google“”C++ is dead“”(注意:C++ is dead 前后的英文双引号)。终于得到相关的文章了。这些文章不仅讨论了C++,对于你选择其他编程语言是很有帮助的。例如标题为“khakipants: things to learn”的文章就讨论了学习OCaml和Ruby的必要性。让我们再试一试其他编程语言(这样多来几次你爱上了搜索),google“”Visual Basic is dead“”,google“”Perl is dead“”,google“”Html is dead“”。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试如何使用google解决问题(2)在线全文阅读。
相关推荐: