好东西大家分享:程序员学习的三个境界

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
语出朝禅师青原惟信:“老僧三十年前未参禅时,见山是山,见水是水。及至后来,亲见知识,有个入处,见山不是山,见水不是水。而今得个体歇处,依前见山只是山,见水只是水。”
 
第一境界:见山是山,见水是水
       内涵:初次接触,随意观察,表面印象,没有深入探讨。
 
       对于我们程序员来说,初识一门程序语言,乃第一境界。了解这门语言的语法,如何声明和初始化变量,如何用三大基本结构:顺序、分支、循环,如何写函数,如何构造类,了解这门语言的函数库、类库……特别是对于我们计算机系的学生来说,课堂上讲的全部搞清楚,作业全部完成,考试轻松90,也仅是达到了第一境界而已。但是,很多计算机专业的同学却没有这样的意识,总以为课堂上学会了,就通了,牛先吹在前面,说“精通某某语言,同时还精通某某语言……”,让人“肃然起敬”。而真真开始做具体的项目了,却还是停留在“作业”阶段,一连串函数写到底,或者就是一个类通吃……不懂如何划分模块,不知道怎么设计类的结构,“高内聚低耦合”就更别提了……退而求其次,用软件流水线模式来分配任务,在编码阶段提供一个模块的功能、入口及出口,仅要求完成模块的功能吧,确实功能实现了,打开源码一看,程序结构一团糟,编码毫无风格可言,没有任何注释……曾经听过印度一个教授的讲座,印度计算机学校的高中生大都已经达到了在“第一境界”中游刃有余的地步,唉,感叹国内的计算机教育。
 
第二境界:见山不是山,见水不是水
       内涵:进入怀疑、批判阶段,疑团满腹,眼前是假象。
 
       一般,达到了“第一境界”后,初识了一门语言,是远远不够的,按理应该是继续深入下去。但是,对于我们计算机系的学生来说,却只能遵照计算机高等教育的要求,学完了C,就是汇编,然后就是C++或JAVA,抑或.NET,假如学网页,又是ASP、JSP、JavaScript、AS(Flash)……一个接着一个,都是表面印象,什么都懂,什么都做不来。是否会思考一下,难道计算机程序语言就那么回事么?语言间是否存在着什么本质关系?……假如有过如此思考,那么恭喜了,你已经在摸着石头过河,河对岸就是“第二境界”。
所谓“第二境界”,就是否定阶段,不断地怀疑、批判这些的表面印象,然后通过推理、思辨得出事物的本质。这些否定,或许感受不到,但却时刻隐藏在学习的过程中。那么程序语言的本质又是什么呢?思想。面向对象思想应该是耳熟能详了,其实面向过程有思想,编写程序代码的时候有思想,写文档的时候有思想,测试的时候有思想……思想无处不在,却悄无声息,如何把握就成了这个境界的关键。
对于面向过程来说,分层,划分模块,确定数据结构就是重中之重;面向对象的精髓就在于如何把现实世界抽象出一系列具体的模型,以及确定模型的各部分彼此之间的关系,然后具体到面向对象的技术,继承与组合,耦合与内聚,信息封装,消息传递,以及重构、设计模式等等;编写程序代码时,如何通过缩进、换行来使代码的阅读更为方便;实现具体功能时,如何对数据结构的进行合理的操作,以及算法的实现;写文档时,如何做到自己写的东西结构清晰,其他项目组的成员能够一目了然;测试的时候,单元测试、集成测试如何来做,测试应该在何时进行,是否需要TDD,软件的构建周期如何确定……
除了以上这些一目了然的思想、准则,我们计算机系的学生其实应该算是幸运的,因为每天,在课堂上,我们都接受着一系列计算机科学家们所总结的理论、技术、经验和思想。数据结构,算法,微机原理与接口技术,数据库,操作系统,软件工程……虽然我很重视这些课,有个计算机专家说的好,语言是外功,基础是内功。在大学里学习的时候,我们应该做到以内功为基础来练外功。但事实上,这些计算机基础课是否确实有用,还是存在不少争议。记得曾经某高校硕士就公开叫板教育部,说自己3年硕士白读,学了7年计算机理论,发现自己根本跟不上计算机技术发展的潮流,虽然这有点偏激了……还有在csdn上转悠,发现讨论高校计算机教育的帖子,最后大多都成了水帖……感叹,所以对于此,我持保留意见……但就从我自己的经验上讲,好好学还是不会错的。1年以前,我大二时做一个J2EE的项目(J2EE框架+Flex),确实把那些基础全部扔在了一遍,整天抱着Thinking in Java和Java API Specification,充其量还有一本数据库原理及UML参考资料;但是当我投入Linux的怀抱,学习系统编程的时候,微机原理,数据结构,操作系统,几本以前积了一层灰的书都放在了案头;做网络编程的时候,则是TCP/IP原理;现在涉及到了嵌入式Linux系统,要写设备驱动,微机原理与接口技术,逻辑电路,汇编语言,操作系统则是必备的参考资料。
对于计算机专业的同学们,今后到底从事什么方面基本还是未知数,所以应该为将来做好一切可能的准备,好好学习这些理论技术,要知道,任何前沿技术都是以计算机科学理论为载体的。
 
第三境界:见山只是山,见水只是水
       内涵:分析后获得领悟和证明,用事物的本质重新看待原有事物。
 
       这里的“只是”又回到前面那知识表面上了吗?不是,也没有落到第二阶段“不是”的层面上。这个“只是”就是看出事物真正实质性的东西,通过对它表面的东西的观察,看到它“只是”,再通过经验去推理、去分析,然后形成一种独有的理念,看出事物的另一面,也就是更深刻的一面。但是这还不够,还要在这种基础上再进一步观察,在某种高度上观察,此时会发现原来“只是”这个东西。
       在学习编程过程中,当达到了第二境界时,你就会发现学习编程语言异常容易,本质相同,不同的仅是表面的语法结构和函数库而已。学好了C++,学好了面向对象思想,再学Java能不轻松么?至少我仅花了2天就学会了使用Java语言,但仅是使用而已。在这个时候,既然思想已掌握,入门很轻松,那么就要想着如何去使用认识到的思想来重新回归到学习语言的过程中,去精通一门程序语言,让其成为自己的立足之本。
       选择一门最感兴趣的语言,熟练掌握标准库,熟悉编程细节和技巧,熟练使用与该语言相关的编译器、调试器,然后逐渐从语言层次向底层靠拢,程序的汇编码,VM Specification等等都要有所了解,这样才能从本质出发去使用编程语言及分析代码,查错也好,性能瓶颈分析也好,都有很大的帮助。当你可以说能够做到驾驭这门语言的地步,能够使用其来和谐地指导实践,那么说明,你已经合格了。
       对于我们计算机系的同学们,无论学过了多少种语言,精通一门语言是非常必要的,这里所说的“精通”,当然是指使用这门语言达到了第三境界。
       通过不断地学习、练习、实践(项目)的方式,我个人认为,要达到第三境界,应该是远在天边、近在眼前的事,主要就在于你自己,有没有这样的信念。
 
PS:最近在看一本关于“禅悟”的书,结合自己3年来计算机本科的学习实践,有了这样的一些感慨,就趁着还在大脑记忆曲线的波峰,写下了这些心得……关于“禅悟”,弟子愚昧,并不清楚到底参悟了多少。“道可道,非常道”,能用语言来表达,执着于文字表面,说明我离“道”还相去甚远呢。如此生动活泼的“禅”,却被我这个不知天高地厚的“褴外人”给荼毒了,在此谢罪……
华为资深工程师:码农不等于程序员...... 期间一位驰骋商界多年的老友问:“你现在在华为做什么工作呀?”我很骄傲地说:”系统架构师“,可是他却愣了很久。但当我老婆在旁边补上一句“码农“时,老友瞬间秒懂,却把我受伤的心孤独地留在风中凌乱。作为与 UNIX 同年代的人,我当初选择计算机专业仅仅是因为抓到什么就学什么罢了。本科毕业遇到互联网危机,便没有想法地去读了研,研究生毕业找工作,面试官问为什么要做软件开发。答曰:“不给钱都喜欢做的事情,何况... 阅读详情

相关推荐

三个世界及其有关概念

三个世界及其有关概念 数据库管理的对象(数据)存在于现实世界中,即现实世界中的事物及其各种联系。从现实世界的事物到存储到计算机的数据库中的数据,要数经历现实世界、信息世界和计机世界三个不同的世界,经历两级抽象和转换完成。 认识抽象,概念模型 1现实世界:客观存在,事物以及其关系 2信息世界:概念世界,客观事物以及联系的抽象表示实体:客观存在,相互区别,人,事,物,抽象事件 属性:实体的某一特性属性...

weixin_41210618的博客 2953

程序员学习视频汇总

程序员学习资源

Chailyn的博客 3368

三个境界——致计算机系的同学们

三个境界——致计算机系的同学们 语出朝禅师青原惟信:“老僧三十年前未参禅时,见山是山,见水是水。及至后来,亲见知识,有个入处,见山不是山,见水不是水。而今得个体歇处,依前见山只是山,见水只是水。” 第一境界:见山是山,见水是水       内涵:初次接触,随意观察,表面印象,没有深入探讨。        对于我们程序员来说,初识一门程序语言,乃第一境界。了解这门语言的语

echo 'narcissus' 1967

计算机学习资料(全)——含视频资料

一、前言 内容涵盖开发所需工具如eclipse、idea、maven、MySQL等、Java开发学习视频,包含多家培训机构内部视频,以及网络直播视频等,整理不易,还请点个赞再走吧! 所有资源均为互联网收集以及其他途径获取,非商业用途,如有侵权, 请联系作者删除,谢谢! 资料会持续更新,欢迎在GitHub上更进,或者微信公众号或者博主个人博客或关注博主CSDN博客查看最新资料; 我的GitHub 微...

一个成长中的程序员,期待用技术的眼光生活 5738

程序员10大境界

本文转载自:http://student.csdn.net/space.php?uid=1318585&do=blog&id=60100程序员10大境界<br /> <br />自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。 <br /><br />那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程

lr2131的专栏 6056

程序员应知——学习、思考与分享

有人说,程序员是个苦差事,一辈子总是要不停地学习学习新的技术,学习新的架构,学习新的工具,一旦一段时间不学习,就会发现其他人嘴里冒出来的新鲜词,自己已经搞不懂是什么了。的确,作为程序员学习很重要。还有人说,做程序员是典型的脑力劳动者,每天都要思考,想怎样才能做出更易于扩展、安全性更高的架构,思考如何才能够满足客户的需求,思考如何才能够让自己做出来的程序可维护性更好,思考如何让自己的产品更容易被用户所接受,很多很多需要思考的问题。另外,每次做完一个项目,总是要思考一下在其中获得了什么经验和教训,学到了什么

凌云工作室 2万+

你认为程序员的最高境界是什么?

参考了一本很老的书《编程高手箴言》中提到程序员怎样才能达到编程的最高境界?一个程序员的成长可分为如下六个阶段。 Ø 第一阶段 此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。对应的薪资<10w。 Ø 第二阶段 此阶段能精通基于某种平台的接口以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。对应的薪资10w...

极客重生 1409

C++ 程序员到高级架构师,必须经历的三个阶段

摘要:每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。每个程序员、或者说每个工作者都应该...

程序人生的博客 1万+

GitHub上还有程序员考公指南这种东西

本文转载自 大数据文摘 最近,拼多多事件的发酵再次把互联网打工人的996推到了风口浪尖。 虽然并不是每一个猝死事件都能与“过劳”建立直接联系,但互联网行业超负荷加班处理Bug是家常便饭,虽然收入高于很多行业,但经常熬夜、工作强度大,不少程序员开始寻找新的出路。 近日,在GitHub上,一份程序员考公指南冲上热榜,几天时间不到,被标星2.4k,累计分支有289个。 (GitHub地址:https://github.com/coder2gwy/coder2gwy) 据作者介绍,这份指南的目标人群是

m0_46163918的博客 1万+

程序员到高级架构师,必须经历的三个阶段

摘要:每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。 每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。今天给大家分享的是一篇来自腾讯C/C++架构师对普通程序员的职业建议,希望对你有启发。 对于大多数的程序员,可以分为以下三...

程序人生的博客 1万+

华为大佬:做一个快乐的程序员,而不是码农

前段时间,与几位友人小聚,大家互道工作顺利、平安健康云云,期间一位驰骋商界多年的老友问:”你现在在华为做什么工作呀?”我很骄傲地说:”系统架构师“,可是他却愣了很久,但当我老婆在旁边补上一句“码农“时,老友瞬间秒懂,却把我受伤的心孤独地留在风中凌乱。 作为与UNIX同年代的人,我当初选择计算机专业仅仅是因为抓到什么就学什么罢了。本科毕业遇到互联网危机,便没有想法地去读了研,研究生毕业找工作,面试官...

web前端技术交流群:457188470 2038

华为大佬:做一个快乐的程序员

春节假期,与几位友人小聚,大家互道工作顺利、平安健康云云,期间一位驰骋商界多年的老友问:”你现在在华为做什么工作呀?”我很骄傲地说:”系统架构师“,可是他却愣了很久,但当我老婆在旁边补上一句“码农“时,老友瞬间秒懂,却把我受伤的心孤独地留在风中凌乱。 作为与UNIX同年代的人,我当初选择计算机专业仅仅是因为抓到什么就学什么罢了。本科毕业遇到互联网危机,便没有想法地去读了研,研究生毕业找工作,面试官

代码湾 9833

分享一个我自己的程序员学习方法

五年移动端程序员浅谈学习方法之了解多种学习方法并寻找最适合自己的。在这里我会,简述部分学习方法,来分享自己的学习方法。 朱熹的《观书有感》这样说道:问渠那得清如许?为有源头活水来。我们只有不断的学习,不断的补充活水,才能让自己的认知更加的深厚扎实,让自己的知识更加的“清如许”。 大家在获取新知识的时候是否遇到了如下的几个问题?: 1.得了“懒”这种病,明知道自己必须要学这样东西会对自己提升很大,但就是懒得去学。 2.有的小伙伴呢,会去看一些教材教程,或者视频教程来学习,但看着看这睡着了,当起了睡

兔狲超凶的博客 732

学习Python的三种境界

前言 王国维在《人间词话》中将读书分为了三种境界:“古今之成大事业、大学问者,必经过三种之境界:‘昨夜西风凋碧树,独上高楼,望尽天涯路’。此第一境也。‘衣带渐宽终不悔,为伊消得人憔悴。’此第二境也。‘众里寻他千百度,蓦然回首,那人却在灯火阑珊处’。此第三境也。我从入门Python到现在也没有多少时间,所以写如此大的一个题目必定会引发各种批判,当然我没有想造一个大新闻,只是想根据自己的学习历程做一个简单的总结,同时将这三个阶段对应的一些好的书籍简单介绍介绍。

Java干货 1451

程序员如何高效提升学习能力?做到这三点,你就会与众不同

前言 众所周知,现在是一个知识爆炸的时代,知识更新非常快。据测算,一个大学毕业生所学到的知识,在毕业之后2年内,有效的不过剩下5%。对于软件行业而言,这种形势更为明显,我们赖以立足的,不在于我们现在掌握了多少知识,而是我们有多强的学习能力。 互联网时代,IT技术的发展日新月异,新技术层出不穷,具有良好的学习能力,能及时获取新知识、随时补充和丰富自己,已成为程序员职业发展的核心竞争力。本文中,笔者不谈代码理论,只是结合多年的学习经验,一起分享下提高程序员学习能力的三个要点。 要善于读书 .

python6_quanzhan的博客 1637

只需4个步骤即可快速学习任何东西

△向上生长, TO BE TO UP. 程序员的充电站△如何成为优秀程序员第2期分享转载请联系授权(微信ID:qianpangzi0206)我可以保证你们中的许多人已...

十年互联网开发老兵,陪你一起学技术 3642

【职业发展类】程序员职业生涯的四重境界,你处于哪一重?

导师:James 咕泡学院CEO,10年行业经验,7年互联网工作经验,曾就职于惠普、大众点评、互联网金融行业。三年面试官经验,有丰富的教学和实战经验。 程序员职场小白如何规划未来? 丸子:导师,我刚工作还不到半年,现在在一家小公司每天CRUD,感觉学校里学的东西在实际工作中能用到的地方并不多,想打破这种现状该做些什么努力? James:其实程序员的职业生涯可以简单的划分成四个阶段,你才工作半年,有些知识确实有点匮乏,今天我就给你介绍一下程序员的整个职业生涯,希望你能够从中获得一些感悟。 01第一重境界:.

taotao100595的博客 302
上一篇: 待阅:20070808(未阅)
下一篇: 好东西大家分享:给所有想从事软件研发的年轻工程师的忠告与建议
nitamade
博客等级 码龄24年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值