成为高效程序员的几大搜索技巧

  对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。

  如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。因此,搜索技巧对高效程序员变得愈发重要。

  现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。我们正变得更加高效、高生产力,并能够解决更多的问题。但这是否意味着在构建软件时,拥有好的搜索技巧就足够了呢?本文将讨论,搜索技巧在程序员知识的形成过程中的作用,以及如何高效使用搜索技巧。

  知识的类型及它在程序员大脑中如何成长。

  有三类知识:

  概念知识(为什么、是什么、如果—— 语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。根据这类知识,能够找出体系结构或代码必须按特定方式设计的原因,以及从中选择最佳 设计方案的备选方案和逻辑是什么。概念知识,不是指用特定编程语言解决特定问题,而是对问题的长远看法和理解。

  • 用途:对复杂的开放式问题寻找新的解决方案,并创建稳健的软件系统。
  • 收获:学习计算机科学、体系结构以及编程概念,在实际实现和经验的基础上,构建自己的理论。

  实践性知识(如何做 —— 过程中的)—— 关于如何解决特定编程问题的知识。这类知识不需要深入理解实现方法选择过程中隐含的概念及基本原理。搜索技术在这里最重要,因为对有限的编程语言问题所采取的特定解决方案,搜索能相对容易的加以共享并说明。

  • 用途:用已证实的和已知的解决方案快速解决问题,而不是每次都重新发明一种新的方法。
  • 收获:搜索现有的解决方案,通过例子学习或提出自己的解决方案并以后对其重利用。

  隐性知识(专业知识、经验及直觉)——基于软件系统实现过程中所积累的个人经验,在大脑中形成的内在知识。通过强大的大脑功能, 隐性知识可以综合并协调其他两种知识。这类知识很难传授,因为它的大部分都存储在我们的潜意识中。在特定环境下,它和直觉一同发挥作用,能够在经验、对概 念性和实践性知识的反馈和评估的基础上,制定最佳决策。

  • 用途:利用自己的专长、经验及直觉来实现最佳解决方案。
  • 收获:构建软件并从结果中学习知识。

  设计模式(还有架构、领域及其他)是不同类型知识相结合的有趣的例子:“如何做”的例子,这些例子中隐含的概念及实现过程中积累的经验。这种知识的表现方式是模式成功及广泛应用的原因之一。

  随着越来越多的可供使用的实践性解决方案和示例出现在网络上,人们大脑中的实践性知识的价值越来越小。我们不需要记住实践性知识。现在我们能够 处理软件构建过程中几乎所有可能遇到的常见编程问题。然而,除能够解决问题的示例或从哪搜索这些示例以外,一名大师级的程序员还知道更多的知识。他能够提 出自己的解决方案,制定大部分最佳决策,并采用最好的方式应用它们。此外,很难在网上找到新的、复杂的、领域性的及特定环境下的问题的解决方案。而且,对 所有重要的软件工程,在制定优秀解决方案的过程中,都需要高水平的软件开发理论、这些理论的应用经验、对系统的深入了解、问题空间及环境等相关知识。

  因此,在软件开发过程中,概念知识和隐性知识仍然是非常重要的。在使用搜索技术时,我们应当努力扩充各种知识,而不是仅仅解决特定问题。随着解决更高级问题的能力的提高,你会取得成功,成为更高效的程序员。

  可解决实际问题的高效搜索

  A. 查找

  • 1. 定义——弄清楚要解决什么问题,并以要查找的内容为焦点。网络上有如此多的有趣的材料,以至于搜索过程能轻易地占掉你全部的工作时间(和个人时间)。
  • 2. 检索(使用标准的Google、代码搜索或其他的检索引擎)—有很多关于如何高效的使用检索引擎的建议。
  • 3. 浏览结果(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)-> 阅读 -> 评估(人力物力、所需工具及函数库)

  B. 使用

  • 1. 复制代码 - 单独复制(针对这一目的,带有长钉技术的显式单元测试最适合)
  • 2. 清除代码 - 仅保留最小限度、相关性代码,清除解决方案中的其它代码。
  • 3. 在系统中应用代码。

  C. 学习

  • 1. 理解——你做了什么及你为什么那样做——从代码和实现中学习。
  • 2. 扩充知识——
    • a. 实践性知识:解决问题的特定方法、技巧及风格;
    • b. 概念知识:学习新概念、提炼现有的并构建自己的概念;
    • c. 隐性知识:明智地使用并学习搜索到的解决方案,经验会自然而然地得到增长。
  • 3. 收集(链接、意见、参考文献、阅读清单)—任何对你今后搜索、发现及学习有用的有趣信息。为这些目标积累知识。

  你还有其他高效搜索代码的诀窍吗?欢迎在评论或微博中和大家分享。

转载于:https://www.cnblogs.com/cyjch/archive/2012/02/21/2361623.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink运行原理_Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。Flink Runtime作业执行流程分析整体架构图Flink Run…

vb 获取系统声音的电平_质量好的背景音乐系统套装效果图

笔者是主张低阶设计的,但不一定是越低阶越好,前面已经讲过是以分而治之的手段,达致阴阳融合之目的。分而治之就是把高低音单元的互相不协调的部分和缺点去掉,保留各自的优点,以达到互补融合之目的。有扩声系统中才存在…

vue初级尝试

为了跟上前端后台化的潮流&#xff0c;本少不得不开始关注vue&#xff0c;下列上机代码是针对App.vue进行的更改 数据渲染----一般键值对&#xff0c;数组&#xff0c;对象和对象数组<template><div id"app"><img><h1>{{msg}}</h1><…

钉钉产品介绍_钉钉正式推出智能OA:免费开放、一站解决“人财物事”管理难题...

9月2日消息&#xff0c;阿里钉钉今日正式上线智能OA产品“OA审批”&#xff0c;通过开放工作流、审批流引擎&#xff0c;向中小企业提供场景全面、定制简易、操作门槛低的OA协同服务&#xff0c;实现企业管理流程、业务流程的全链路数字化&#xff0c;一站解决人财物事管理难题…

同方知网软件_国产精品软件天若OCR:支持图像识别/自动翻译/公式识别等

日常生活中有时候我们会遇到某些文件以截图方式发送的 , 想要提取其中的文字内容进行整理就需要靠识别。毕竟如果内容较多的话靠手打可能是个费时费力的事情&#xff0c;OCR识别方面的软件很多但是多数软件都是收费的。在收费软件里自然也有价格便宜和价格比较高的&#xff0c;…

n维椭球体积公式_物质的量浓度公式如何应用

我们常用到的物理量一般有长度、时间、速度等等&#xff0c;物质的量也和这些概念一样&#xff0c;是一个物理量的整体名词&#xff0c;今天小编就为大家介绍一下什么是物质的量&#xff0c;物质的量的浓度公式是什么。1、国际单位制7个物理量长度(单位&#xff1a;m)、质量(单…

Hadoop中RPC机制

Hadoop中RPC机制 RPC(Remote Procedure Call Protocol)远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。Hadoop底层的交互都是通过rpc进行的。例如&#xff1a;datanode和namenode 、tasktracker和jobtra…

C++中如何读取一个数的位数_求1000以内的水仙花数

点击上方 蓝字关注我们大家好&#xff0c;我是阿汤哥。看知乎上有朋友说还不明白怎么判断水仙花数&#xff0c;今天我们就来看看这个问题。(PS&#xff1a;“求1000以内的水仙花数”这道题阿汤哥记忆犹新。到现在还记得这是我大一上学期期末考试的编程题。)怎么求水仙花数&…

双向绑定v-bind

通过v-model绑定输出数据<script> export default {data(){return {pagestyle:https://v4.bootcss.com/docs/4.3/dist/css/bootstrap.css,pagecss:https://v4.bootcss.com/docs/4.3/examples/sticky-footer-navbar/sticky-footer-navbar.css,mytitle:v-bind bootstrap样…

xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...

上篇““色觉地图”的建立&#xff08;一&#xff09;&#xff1a;光感受器、色匹配实验与CIE RGB坐标系“中说到&#xff0c;人的色觉是线性的&#xff0c;我们可以用叠加原理“混色”——这意味着色觉的空间固定不变&#xff0c;我们可以任意选择一组基底&#xff08;或说坐标…

Nginx的应用之动静分离

Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离&#xff0c;减少了不必要的请求消耗和延时。 动静分离后&#xff0c;即使动态服务不可用&#xff0c;但静态资源不会受到影响。 应用实例 1、准备环境 系统角色主机名IP服务CentOS 7.2反向代理Nginx_Proxy192.168…

3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习

文献解读英语学习只需10分钟锐医学院致力于专业康复教育培训同时&#xff0c;也在康复领域专家的合作下&#xff0c;一直在研究康复领域最前沿所取得的研究成果、存在的问题以及发展趋势进行系统和全面的叙述和评论与各领域康复专业人士分享。文献解读有助于发现前沿性问题&…

node.js通过回调函数获取异步函数的返回结果

html文件代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>我的node.js首页</title> </head> <body></body> </html> 通过buffer流读取html文件var fs require(fs);…

bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01;你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01;编辑&#xff1a;业余草zhuanlan.zhihu.com/p/94144867推荐&#xff1a;https://www.xttbl…

tcp 四次挥手_tcp三次握手和四次挥手

SYN&#xff1a;一个很小的包&#xff0c;tcp的第一个包&#xff08;同步序列编号&#xff09;ACK:确认响应SYN、ACK:为1表示确认连接FIN表示关闭连接&#xff0c;PSH表示有 DATA数据传输&#xff0c;RST表示连接重置。Acknowledge number(ack)&#xff1a;确认号&#xff0c;大…

ssh登录服务器提示错误no hostkey alg

ssh登录服务器提示错误no hostkey alg ssh root192.168.1.100 -vvv提示失败&#xff1a;no hostkey alg 登录到192.168.1.100服务器 rm -rf /etc/ssh/ssh*key systemctl restart sshd #我还是移走了&#xff0c;没有删除。因为之前安装了telnet服务&#xff0c;因此不用担心连…

ms查约束具体代码_ECCV 2020附代码论文合集(CNN,图像分割)

ECCV 2020 共接受 1361 篇论文&#xff0c;涵盖了包括目标检测&#xff0c;语义分割&#xff0c;图像分类&#xff0c;点云&#xff0c;图像重建&#xff0c;神经网络模型等热门主题。对计算机视觉感兴趣的小伙伴们也许你们已经阅读完论文并对论文的内容跃跃欲试了吧&#xff0…

路径规划算法_自动驾驶汽车路径规划算法浅析

自动驾驶汽车的路径规划算法最早源于机器人的路径规划研究&#xff0c;但是就工况而言却比机器人的路径规划复杂得多&#xff0c;自动驾驶车辆需要考虑车速、道路的附着情况、车辆最小转弯半径、外界天气环境等因素。本文将为大家介绍四种常用的路径规划算法&#xff0c;分别是…

【转载】interpolation(插值)和 extrapolation(外推)的区别

根据已有数据以及模型&#xff08;函数&#xff09;预测未知区域的函数值&#xff0c;预测的点在已有数据范围内就是interpolation&#xff08;插值&#xff09;&#xff0c; 范围外就是extrapolation&#xff08;外推&#xff09;。 The Difference Between Extrapolation and…

vue computed使用_vue computed正确使用方式

最近面试中&#xff0c;遇到一个小伙子&#xff0c;谈到了vue中的 computed 和 watch 区别&#xff0c;最后得到了一个让我瞠目结舌的答案&#xff0c;只用 watch&#xff0c;从不用 computed 模板内的表达式非常便利&#xff0c;但是设计它们的初衷是用于简单运算的。在模板中…