知识的积累(转载自梦想风暴)

2024-04-14 13:18

本文主要是介绍知识的积累(转载自梦想风暴),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最初认识Darwin的时候,我还是个没毕业的新手。那时,我在公司做毕业设计,题目就是用C++对部门内已有的一套C的库进行封装。那套库就是Darwin开发的,这次封装工作也是在他的领导之下进行的。当时,我对C++有着说不清的好感,心里认定那是成为高手的必经之路,因此很乐于参加到这个工作之中。Darwin当时的C语言已经达到了相当高的水准,而对于C++了解十分有限,大概比“C with Class”高不太多,这一点从当时的讨论上可以清楚的看出来。没过多长时间,我惊奇的发现,他对于C++的理解一下子加深了许多,有许多他谈到的东西已经不是我能够一下子理解的了。又过一段时间,他开始给大家讲设计模式,而之前他对于设计模式可以说是一窍不通,因为他看的是我买来后尘封许久的那本GoF经典。我惊讶于他吸收知识的速度,不仅仅是简单的学习,而是可以深刻的理解。

C++之父在《C++程序设计语言》第一章中,谈及学习C++时提到:“你学习一个新语言的方式依赖于你已经知道些什么,还依赖于你的学习目的。”

作为一个程序员,学习是生活中无可避免的部分。在面临项目压力时,通常学习的目的都是十分明确:解决遇到的问题。这时真正起决定性作用的基本上是自己的知识积累。工作几年之后,我开始理解这一点。对于一些真正用到的新技术,大多数时候,我只是简单的翻翻文档就可以拿过来用了;对于一些理念上的东西,也可以比较快的吸收理解,并能提出自己的一些见解。其实,并不是是我比毕业前后变得更聪明,而是我比那时接触的东西更多。所谓的新技术大多来源于已有的技术,有了基本的东西,面对新技术的时候,把它与已有的知识联系起来,在脑子简单比较一些异同,就可以对这项技术的优劣有个认识,再加上项目的实践,我便知道了这项技术运用在实际的项目中能够解决什么问题,比之从前的解决方案有何差异。

以我个人的一些经历而言,知识积累的过程中,思考是非常重要的一环。孔老夫子几千年前就教导我们说:“学而不思则罔,思而不学则殆”。在这个信息爆炸的年代,每个希望自己进步的人都会面对着一大堆要学的东西,盲目的学习,而不去思考,只会让自己迷失于知识的汪洋之中。在学习的过程中,思考可以让我们把新知识和已有的知识联系起来,这样,新知识便也不在孤单,而已有的知识也常常能被催发出新的活力,二者彼此推动,加深知识的理解。

记录,是促进思考的一种方式。我经常愿意向别人推荐blog,因为我每次写blog的过程都是我对一个主题进行深入思考的过程,有意或无意。自己想明白是一回事,把它解释明白又是另外一回事。当然,独乐乐和与人乐乐还是有所差异的,一个是加深自己理解,一个是与人分享。侯捷先生曾借用过胡适先生的一句话,“发表是最好的记忆”。,也许blog不比书籍、杂志等媒体,也许我没有那么多的读者,我并不在乎这些,德不孤,必有邻,能与人分享就好。记录的结果也常常使我有案可查。我的大脑能够记得东西是有限的,许多细节都会随着时间而消逝,知道哪里可以找到比记住全部细节更加有效。《恶斗EJB》写就之后,不知道有多少次被我重新查看。记录还可以比较好的锻炼自己的表达能力,谁说程序员只擅长写代码,写文章和写代码一样,只要多练习多思考,就能达到一个不错的高度,至于再进一步提升,那就要看天分和造化了。^_^

交流,是另外一种促进思考的方式。从小我就是一个比较愿意表达自己观点的人,工作之后,受Darwin的影响,这方面表现的越加明显了。交流之中遇到不同的观点简直是一件再正常不过的事了,毕竟大家经历不同、对问题的理解不同,正是有了这些不同的观点才使得交流更加有意义。和一些朋友讨论测试驱动开发时,一个一直从事测试工作的朋友提出的观点让我们几个程序员觉得非常新鲜,而我们对测试驱动开发的讨论也改变了他对单元测试的认识。只有从不同的角度理解问题,才能把问题看得更加的全面。有条件要讨论,没有条件创造条件也要讨论,现在一些的条件使我与外界的程序员交流的机会并不多,所以,除了参与一些网上的讨论之外,我们几个关系要好的朋友也经常自发的组织起来,利用业余时间进行各种各样的交流。

知识的整理可以帮我理清胡乱的思绪。整理是一个看起来容易,却需要很大功夫才能完成的。Martin Fowler值得我们尊敬,并不是他有多么伟大的发明创造,而在于他把一些知识(重构、分析模式、企业应用架构模式等等)很好的整理出来,让后来者可以很方便的进行学习。以同样方式让程序员们敬仰的还包括整理出《设计模式》的GoF。《代码阅读方法与实践》的价值所在也并不是其中具体涉及的阅读技巧,而是其对阅读代码所需内容做的整工作。

有了整理,与之对应就是摘要的工作。为什么同样的内容,有人写了一本书,而有人用一章甚至几句话就能够把核心理念描述出来,这便是摘要的工作。荣膺第14届Jolt大奖的《测试驱动开发:使用指南》用了第二章一章的内容,把一些常用的重构手法点明。对于大多数的重构工作来说,这些内容基本够用了,而对于重构,Martin Fowler写了一本书。同样用了一章来说明重构的还有Robert Martin的《敏捷软件开发》,书中还用了一章说明了测试驱动开发。当年关于考试的教导中常有“把书读薄,再把书读厚,最后把书再次读薄”的绕口令,其理念与此大抵相同。

谈到知识整理,不由想起了信息的整理。想必许多人和我一样,硬盘上存了大量的资料。不过不知道你是否能在需要的时候,快速的找到自己所需的内容。小时候养成的习惯让我很愿意把自己的东西随便乱扔,其结果经常是要什么不见什么。最初开始搜集资料的时候也常常是信手放置,结果往往是不知道自己有了些什么,用的时候也无处可寻。后来见founder_chen的资料整理工作做得相当的到位,需要时可以很轻松的找到,便也开始逐渐整理自己的资料,分门别类的进行整理,果然效果好了许多,以致于现在许多同事找资料的时候,首先考虑上我这里来查找。

不知不觉就着这个话题写了这么多,这应该算是我所作的又一次整理吧!

这篇关于知识的积累(转载自梦想风暴)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903091

相关文章

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

JAVA初级掌握的J2SE知识(二)和Java核心的API

/** 这篇文章送给所有学习java的同学,请大家检验一下自己,不要自满,你们正在学习java的路上,你们要加油,蜕变是个痛苦的过程,忍受过后,才会蜕变! */ Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类

JAVA初级掌握的J2SE知识(一)

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。 1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道