`

巧用“搜索”解决自学编程遇到的难题

阅读更多

引言:相信每个自学编程的人,入门之路都经历了许多坎坷。不过我们身边藏着很多“良师”,多以利用总是能够带来惊喜。善用“搜索”就是其中一位。 
本文选自《一路编程》,如何通过搜索解决自学编程中遇到的问题。

  假如你在做一个 JavaScript项目,其中你得到了一个字符串格式的日期(比如, ’2014-10-08’),你想要计算下一天的日期是什么。我们可以用 parseInt将字符串转换成文字,所以你就用了这个函数。

function nextDay(str) {   
  var num = parseInt(str);  return num + 1; 
} 

var date = '2014-10-08'; 
var dateParts = date.split('-'); 
alert(nextDay(dateParts[1]));

  一切顺利。然后有一天你意识到你的程序产生了一些很奇怪的结果,但只是在老版本 IE浏览器才出现:你的程序认为 ’2014-10-08’的下一天是’2014-10-01’,而不是 ’2014-10-09’。你设置了一些断点并单步调试代码,你会发现 parseInt看起来坏了:当参数是 ’08’时,在大部分浏览器中你会得到 8,但在 IE中你会得到 0。你发现了这个问题,但你不知道如何修复它。现在你要怎么办呢?随着你不断地编程,你会不断地遇到类似的场景。比困境更加让人沮丧的是不知道如何脱离困境。

parseInt解释 
为什么老版本 IE的 parseInt会做如此奇怪的事情呢?原因是parseInt也对十进制之外的数字有效(比如二进制、八进制,以及十六进制)。如果你不告诉parseInt你在使用什么进制,parseInt就用它认为昀合理的进制来解析数字,而’08’看起来像是个8进制数。新的浏览器倾向于默认使用 10进制,即使字符串以 0开头,但老版本 IE仍然认为’08’是个 8进制。不管怎样,你应该总是在使用parseInt时指定进制:parseInt(’08’, 10);(以 10为基,或者十进制)会在所有浏览器中返回 8。在 Google时代,每个人都是搜索专家。不到几秒钟,你就可以找到各种信息,比如你正在看的电影女演员的八卦信息。因为互联网以前和现在都是由程序员搭建的,互联网上关于编程的信息格外的多。当你遇到像前面parseInt这样的问题时,你肯定会找到答案,只要你知道在哪里找以及怎么找。

找到正确的关键字

  如果你不知道要搜索什么,你就不可能找到结果。在第一次我要用转义字符时就遇到了这个问题。我不知道有种叫做转义字符的东西。我所知道的就是撇号在破坏我的字符串。在 parseInt例子中,你可能并不知道哪里出问题了,那么你要如何搜索一个解决方案呢?关键在于找到正确的搜索关键字。如果你在找一些针对某个编程语言的东西,就在搜索中包含这个编程语言的名字。然后想象其他遇到同样问题的人会如何描述这个问题。例如,在搜索 parseInt问题的结果时,一个好的查询可能是“ javascript parseInt returns 0”。当我运行这个搜索时,第一条记录就返回了我要找的答案。 
如果你不确定要搜索什么,Google的搜索建议可以帮助你。在你输入查询的开始部分时,提示可以帮助引导你找到可以搜到昀佳结果的查询关键字。这些建议意味着其他人搜索过这些关键字并且得到了昀佳结果,所以你也许能成功。下图展示了在搜索 parseInt解决方案时,一些有用的(以及一些不那么有用的)建议。

升级

  你要找的资源依赖于你处于学习的哪一个级别。比如,如果你在考虑学习写 Python程序,你想要找些关于用 Python的好处的介绍性信息。在这样的例子中,你会想要用类似“ why use Python”(为什么使用 Python)和“Python features”(Python特性)这样的搜索关键字。在你决定 Python适合你之后,你会想要学习 Python基础。这时,你要搜索一些类似 “Python tutorial”(Python教程)这样的东西。在你用 Python工作一段时间后,你也许会遇到一个问题,需要使用正则表达式。你已经知道什么是正则表达式,以及在什么时候要使用它;你只是需要知道如何在 Python中使用它。那你可能就会搜索“Python regular expression”(Python正则表达式)或者“ Python regular expression documentation”(Python正则表达式文档),找到关于 Python中正则表达式如何工作的文档说明。现在假设文档抽象,难以理解;你可以搜索“ Python regular expression tutorial”(Python正则表达式教程)或者“ Python regular expression example”(Python正则表达式示例),找到一些比较容易消化理解的 Python正则表达式信息。这些例子要说明的就是,如果你在搜索关键字中指定你处于哪个级别,你就更容易找到需要的信息。

错误

  错误可能让人特别困扰,因为你的代码不工作,同时错误信息看起来又特别模糊。不过错误信息有一个好处:错误信息中的文字基本上总是不变的。这就意味着,其他人也见过相同错误信息,并且很可能已经找到了解决方案。当你遇到一个不理解的错误信息,复制粘贴整个信息到谷歌,一般你都会找到问题的答案。

以终为始

  在一开始,你也许并不知道自己到底要搜索什么。你可能不完全理解要解决的问题,或者甚至不知道你需要学多少东西才能解决它。仅仅因为你不完全确定你要找什么,并不意味着你不能搜索它。以终为始,追本溯源。首先,搜索你的昀终目标,在你搜索结果的过程中,留意不熟悉的字和短语;然后,搜索所有这些看起来相关的关键字,再次记录结果中所有不熟悉的字和短语。 
  当你到达一个点,能够理解几乎所有搜索结果中的东西时,就可以开始学习那些你不理解的东西,直到你又到达一个点,这时你了解的知识足够搭建你本来要搭建的东西。这个过程会帮助你在达到目标的过程中学到很多很棒的知识,或者,至少帮你意识到你的目标也许需要比预期更多的工作和学习才能达成。 
  这种追本溯源式的搜索引导我学习了 Web编程。我之前提到过给我的第一个网站实现“自动补全”功能。那时我并不知道那是自动补全,所以我搜索了一些类似 “google search suggestion”的内容,这让我发现了关键字“autocomplete”。我读了一些关于 autocomplete的文章,确保那就是我要找的东西,并且发现了关键字 AJAX。我了解到 AJAX就是实现基于用户输入的文字展现搜索推荐的技术。我做了些 AJAX调研,发现你必须写 JavaScript才能使用 AJAX。所以我开始学习 JavaScript,直到我学了足够的知识,可以使用 AJAX,我就可以搭建自动补全系统了。在这个过程中,我学到了很多 HTTP、Web服务器,以及数据结构的知识。我相信用追本溯源的方式解决编程问题会有给你很大的回报。

识别高质量资源

  不幸的是,互联网上不是什么东西质量都很高。编程信息和其他内容都是如此。小心那些质量不高的网站和书。因为相信网站上那些过时、写得不好的信息,我学到很多错误指导和坏习惯。不幸的是,在能够区分高低质量资源之前,你也许得吃几次亏。如果你访问的网站有一大堆广告,特别是它们跟编程基本没关系或者一点关系都没有,那你就要小心了。小心那些尝试把各种话题都囊括进来的网站(比如, About.com包括了报税、园艺、编程,以及发型设计)。当你见到那种说你要学的东西很简单的声明,也要小心,如果太简单了,你很可能学到的是错误方式。大部分编程语言、库和框架都有网站,包含完整的、高质量的文档。这些网站一般包含完整的入门信息、初学指导、教程,以及参考材料。从这些网站上找到的信息通常都是高质量而且正确的。

个人博客:隐藏的宝藏

  尽管你要小心从一个非官方网站上得来的信息,你还是可以在博客上找到一些有价值的信息。专业程序员喜欢把他们解决过的问题写出来,通常以博客的方式发表。文档和教程很棒,但没有什么可以跟真实的人描述一个真实世界的问题及其解法相提并论。不过在你相信这个信息之前,还是要调研下作者。看看他们的 LinkedIn简历、StackOverflow档案、GitHub档案,以及任何其他你能找到的资源。如果他们看起来明白他们在说什么,你就找到了一个很好的信息源。这类博客就像编程导师;他们给你如何更好编程的免费建议。记住,如果你接收他们的建议,要在文档中提一下那篇博客。

  本文选自《一路编程》,点此链接可在博文视点官网查看。 
                       图片描述

分享到:
评论

相关推荐

    避开10大常见坑:DeepSeekAPI集成中的错误处理与调试指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    前端分析-2023071100789

    前端分析-2023071100789

    基于kinect的3D人体建模C++完整代码.cpp

    基于kinect的3D人体建模C++完整代码.cpp

    搞机工具箱10.1.0.7z

    搞机工具箱10.1.0.7z

    GRU+informer时间序列预测(Python完整源码和数据)

    GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    复件 复件 建设工程可行性研究合同[示范文本].doc

    复件 复件 建设工程可行性研究合同[示范文本].doc

    13考试真题最近的t64.txt

    13考试真题最近的t64.txt

    Microsoft Visual C++ 2005 SP1 Redistributable PackageX86

    好用我已经解决报错问题

    嵌入式开发入门:用C语言点亮LED灯的全栈开发指南.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    自动立体库设计方案.pptx

    自动立体库设计方案.pptx

    手把手教你用C语言实现贪吃蛇游戏:从算法设计到图形渲染.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    性能对决:DeepSeek-V3与ChatGPTAPI在数学推理场景的基准测试.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    从零到一:手把手教你用Python调用DeepSeekAPI的完整指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    为什么你的switch总出bug?90%新手不知道的break语句隐藏规则.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    用deepseek变现实操流程

    用deepseek变现实操流程,小白必看。

    10个必知的DeepSeekAPI调用技巧:从鉴权到限流全解析.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics