作为开发者,您每天有多少次因为工作上的问题求助于 Google?这个库该怎么用?您遇到的问题有没有现成的修复方案?
答案也许是:每天至少一次。
如今,互联网为开发者节省了大量时间。无论遇到什么问题,您都可以用合适的关键词在 Google 上搜索,在很多情况下能立刻找到符合需求的结果。
例如,如果我们想知道如何逐行读取文件,可能会进行以下搜索:

第一个结果就是一条高票的 Stack Overflow 回答。

开发者已经变得依赖互联网,这有显而易见的好处:它帮助我们快速解决许多问题,让我们更高效。但作为开发者,没有网络连接,我们还能保持高效吗?
让我们先回顾一下互联网蓬勃发展之前的情形,那时网络上可用的开发资源非常有限。
在我记忆中,二十年前,当我们遇到要解决的问题时,会尝试这样的办法:
- 在书中寻找答案:无论在公司还是家里,开发者都收藏着许多与本领域相关的书籍;遇到棘手问题时,我们会翻阅它们,希望找到解决方案。然而,书籍不可能覆盖现实世界中的每一个问题,我们常常找不到想要的东西。
- 请教同事:另一种办法是依靠同事的经验。我们会问是否有人遇到过某个特定的问题,并希望对方有解决方案。
- 钻研代码:有时,在使用某个库时遇到问题,最有效的办法是调试这个库本身,弄清如何解决问题。我记得在使用一个 CORBA 总线时,可用的资料极少,我们不得不调试那个外部库,才弄明白到底发生了什么。
- 联系技术支持:有时我们遇到复杂问题,又拿不到源代码,只能联系解决方案提供商,希望能找到解决办法。例如,我记得有一个复杂的 DCOM 问题,我们联系了微软。解决问题花了三个星期,因为首先得找到对的人,而这并不容易。
幸运的是,网络已经成了开发者的金矿,只需点几下鼠标,我们往往就能找到解决方案。但依赖互联网有哪些弊端呢?
- 养成复制粘贴的坏习惯:当开发者在网上找到解决方案时,他们可能直接把它复制粘贴到自己的代码里,只要能跑,就转去做别的事了。他们可能不会尝试完整理解所采用方案背后的原理。
- 变成懒惰的开发者:开发者可能变得懒惰,有时干脆懒得自己搜索解决方案,直接抛出一个基础问题,指望别人替他们查资料。事实上,Stack Overflow 上有多少基础问题只需一次非常简单的搜索就能得到答案,实在令人惊讶。
- 它可能减少开发者之间的交流。
回到最初的问题,并聚焦 C++:在没有网络的情况下,您能快速找到这些基础任务的高效解决方案吗?
- 检查一个 std::string 是否以另一个字符串开头。
- 检查一个 std::string 是否以另一个字符串结尾。
- 计算一个数的阶乘。
- 检查一个数是否为素数。
您可以试着自己解决这些问题,然后可能会惊讶地发现自己对互联网有多依赖:没有网络,即使是基础任务也未必那么容易。越来越依赖网络本身不一定是问题,但我们应该意识到其中的弊端。在上网搜索之前,我们可以先花几分钟试着自己解决问题,弄清楚它到底涉及什么。这能帮助我们用正确的关键词进行更有针对性的搜索,并在找到解决方案时,完整理解其背后的原理。
