我大约刚开始学编程时就看到这篇文章了(下面简称《C#风潮》),这是一篇被转载了上万次的名文,可参见这里 文章搜索。今天无意间又看到它,《C#风潮》显然是很不错的文章,作者列举学习中的实例包括自己的经历,将自己对技术学习的深刻理解,清晰地展示给我们,并指出了学习的方向。又一年就要过去了,现在重读,联想这几年的经历和认识的发展,我觉得有一些新的体会。

  文章的第一句话是:“我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。”

  作者没有直接解释原因。为什么呢,现在我有点明白了。很显然,如果你能比别人更早地认识到一项新技术的潜力,你就比别人有更好的发展机会,获得更大的收获。作者的想法是,作为初学者,他不太可能具备判断技术前景的能力。其实这种能力其实在真正的技术人员中,也只有少数人具备。

  接着,作者对大学的师弟师妹们忽视基础课程,学习C#等“先进”语言感到痛心。可是,为什么同学们会把课本扔了呢?我来解释吧,乏味的课程、过时的教材、水平低下的师资、脱离实践的教学让大学生们失去了方向。作者是非常有才华的,他在大学的成功是个别案例。说实话,中国的大学教育让每个有识之士都痛心。

  最近常在看李开复等大家的博客,开始体会到一点学习的本质,就是忘掉你学到的知识和技能后剩下来的东西。不管是大学生也好,初学编程者也好,如果没有面临眼前的生活压力,就请追随自己的激情和兴趣,选你最喜欢的技术吧,不用管那些科班的教授专家怎么说。你可能走得不是他们指定的阳关大道,但关键是,要去学,有目的地学,不管是C#也好还是汇编也好,都可以找到共通的学习方法。

  如果你对新技术感兴趣,完全可以勇敢地去追。当然也不能为了赶流行风潮,看到别人追我也追,而是为了它的学习价值。确实有绝大多数新技术是昙花一现,但有旺盛生命力的技术也在不断扎根发芽。现在早已证明了,当年涌现C#语言及其所在的.Net平台不是一阵风,而是一场革命。即使某项技术失败了,也未必就是技术本身的问题,比如可能是过于超前了,但其中蕴含的思想却可能非常可贵。将思想和方法学到手,会让人终身受用。

  接下来作者讲了几个初学者的误区。第一个是“认为计算机技术等于编程技术”,这个说不上什么误区,人的认识是随着对事物了解的逐渐深入而提升的,这是一个持续无止境的过程。很多人开始连网络和服务器都搞不清,自然不会对计算机技术有多全面的认识。不过我认为,对于初学者来说,只要能像作者后面说的“日三省乎己”,时常想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣之类问题,对计算机技术认识自然会丰富并立体起来。

  第二个误区是“咬文嚼字的孔已己作风”,双手赞成,这显然是应试教育的恶果。有个作者的师弟跟他说:“C++ 太难了,学了这里忘了那里,学了继承忘了模板。”作者的回答道:“你不去学就容易了”。作者说,“死抠C++的语法就和孔已己炫耀茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。”编程是创造性思维的结晶,不像马哲那样可以靠死记硬背,而要结合实践加以理解贯通。而如果你对这个技术点的应用有相当的心得,让你再描述一下这个知识点,你说得会比国内绝大多数技术书籍上那些专家写得还要好。

  联想到前几个月,园子上有个热门文章关于最近面试的一点感想,讲面试时询问对方“delegate在.net framework1.1,2.0,3.5各可以怎么写”的问题。老赵为此连作三篇文章(从.NET中委托写法的演变谈开去)详述了对delegate这个技术点的心得,事实充分,论证严密,证明这确实是一个能够检验面试技术人员水平的好问题。这才是真正地学懂了、学会了!不过好问题也是有条件的,这个问题将来会在网上广泛传播,要是再有面试官出这样的题目,就值得商榷了,有可能会真的招到像孔已己一般的牛人。不过时下的环境各种浮躁,从那篇文章的评论中,可以看到山间竹笋和墙上芦苇盛行,连孔已己都不多见了。

  

  第三个误区点到《C#风潮》文的核心,“不顾基础,盲目追赶时髦技术”。作者举了自己的亲身经历,并与同学对比,看上去很有说服力。综合看这篇文章,作者不经意泄露了他的潜意识,即从汇编到C++到VC的道路才是编程的武学正宗,其他都是“歪门邪道”。作者下面对各个编程相关课程的描述也证明了这一点。

  首先,编程语言没有高低之分,编程开发者的水平,当然也包括他的报酬,和他用语言没有关系。C++程序员能拿到的薪水,C#或VB程序员一样能达到,并且未必就得比C++程序员付出的努力多。只是由于C#是更容易入门的语言,所以菜鸟程序员要多得多,显得好像不如C++“高贵”,其实这反倒是它先进的体现。

  至于说数据结构和操作系统原理是学习编程的基础,前者还算可以,可以使你更好地理解性能、存储、算法的概念。至于操作系统原理,如果你有志于参加个Windows 8开发(微软总部已经在招聘了),当然是必须学好的。但对于一般地C/S、B/S以及嵌入式开发,我实在是想不明白了解操作系统原理有什么必要性。当然了解了更好,但是可能还不如花半小时研究一个性能测试工具的使用更有意义。

  其实,并不是先学HTML和VB导致作者的同学在毕业时输给了作者,而是那位同学不够努力和专注。他没有在Web开发上,达到与作者相同的高度。我认为初学者真正的第三个误区是(如果第一个算的话),不明白成功源自努力和专注。开始作者说,师弟师妹们把课本扔了花钱买C#、ASP的书看,但据我所知,绝大多数人花钱买了书,看不几页也丢到一边了。大学新生,只要去将毕业的师兄师姐物品处理摊拉,肯定能淘到好多新书。同样,很多人买了电脑,开始是想练编程,过不多久就成了网游用机。

  这也不能怪这些初学者。国内出版的技术书籍水平实在不敢恭维,近两三年还好了些,翻译的书多了,也有个别不错的国内作者,但对初学者一开始就看出某本书的价值还是困难了点。再就是应试教育环境下长大,大家自学能力和意识普遍很差,大学里又没有人指引,实践机会也少,遇到一些困难和困惑,结果自然就是放弃了。

  

  作者还以课程描述的形式,设计了他理想中的Windows程序员技术学习路线。我想他认为这条路线适应于所有想成为程序员的人,但还是保留了一下。我觉得《操作系统原理》、《计算机体系结构》大致了解一下就行,不了解也没太大关系。《数据结构》还是比较重要的,尤其是其中的思路和方法。英语的重要性就不用说了,至于《大学英语》就算了,那不是我们需要的,多看原版技术书籍和文章吧。软件工程也非常重要,作者的学习方法非常值得称道:“不要花太多的时间 去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获”。许多开发人员甚至技术管理人员,都完全没有软件工程的概念和意识,你如果有,哪怕是一点,也是将对未来你的发展弥足珍贵。

  这些课程中,作者相当推崇《Windows 程序设计》,现在情况也不一样了。作普通windows程序设计,.Net平台下开发效率要远超过C++平台。就是在C++平台中,VC++也属于较难上手的,C++ Builder则容易得多。我们有很多的选择,每个人的情况都不一样,适合自己的才是最好的。

  最后,作者谆谆提出了对初学者的忠告:为你的将来着想,把最多的时间花在学习上。只要去学,只要不是学害人的东西,学什么都要比把时间荒废要好得多。环境也许无法改变,但你可以改变自己。

  纵观全文,不可否认,《C#风潮》是有部分保守的观点。 但多年之后重读此文,在到处是浮躁的大学,浮躁的业界,浮躁的社会中,这篇文章依然能闪光。

转载于:https://www.cnblogs.com/gooddasenlin/archive/2009/12/28/1633862.html

重读《由C#风潮想起的-给初学编程者的忠告》有感 (转载)相关推荐

  1. 初学编程者如何摆脱搭建开发环境的困扰?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 你是否也有过类似惨痛的经历:一不小心设错一个环境参数或路径,代码就死活也跑不起来:明明严格按 ...

  2. 初学编程最应该知道的8个学习方法,可惜之前没人告诉我……

    想要学好编程并不容易,除了需要对编程有很大的兴趣,还需要你在学习过程中能够持之以恒,克服重重困难.而且学好编程后,在工作过程中,还需要学习新的知识,以免落后于其他人. 那么,初学编程,有哪些好的学习方 ...

  3. 初学编程,到底选Java还是C++?

    初学编程,到底选Java还是C++? 近几年由于IT行业的火爆以及互联网的不断发展,很多人看到了互联网未来一片光明,想要加入IT这个行业,但是很多人在参加培训或者自学的时候,对C++和Java的选择犹 ...

  4. 想加入程序员行列 初学编程选择Python怎么样

    想加入程序员行列,初学编程选择Python怎么样?Python是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,推荐你尝试Py ...

  5. 初学编程者必知的五个网站

    初学编程者必知的五个网站 发表于9小时前| 7150次阅读| 来源CSDN| 43 条评论| 作者钱曙光 程序员编程编程语言计算机职场 摘要:学习编程能锻炼你的思维,形成一种思考方式,让你更好地思考一 ...

  6. 初学编程者开始Revit 二次开发自学教程

    ADN 的AEC WorkGroup的Saikat 和我一起开发了一个面向初学编程,但是对Revit产品熟悉的爱好者学习Revit二次开发的自学课程.一共七课.这个课程面向全球的Revit用户,用英文 ...

  7. 老夫聊发少年狂之初学编程

    老夫聊发少年狂之初学编程 毕业多年,80年代学的计算机早就还给的老师,现在重新开始学习编程 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学 ...

  8. 初学编程,学哪种语言比较好?

    学习编程语言之前,首先要搞清楚"编程语言"这个概念.我们通过有固定格式和固定词汇的"语言"来控制他人,让他人为我们做事情.语言有很多种,包括汉语.英语.法语.韩 ...

  9. 随笔——初学编程,急而不慌

    晚上看学生的博客.刚学几周C++的同学,水平差别已经相当大了.前两年的差别没有这么大,刚起步,投入多少直接决定了感觉是否能来.为一些同学的状态着急,初入大学的懈怠期何时才能出来?! 一位同学发来了私信 ...

最新文章

  1. YOLOv5在最新OpenVINO 2021R02版本的部署与代码演示详解
  2. 产品运营必须知道的几个概念,什么是用户群体?
  3. (chap4 IP协议) IP协议
  4. 在caffe上fine-tuning网络
  5. 【招聘(深圳)】华强方特文化科技集团 .NET工程师
  6. python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...
  7. andpods授权码订单号分享_微信OAuth2授权登录
  8. 关于mysql的几个问题
  9. java信号量源代码_Java信号量Semaphore原理及代码实例
  10. 放弃吧,Hibernate 4直到4.3.0 Beta1还没有解决Proxool连接池不可用的问题
  11. Effective Java(一)—— 创建和销毁对象
  12. 数据库系统概论第五版(王珊) 课后习题答案
  13. 关于Mac安装破解软件,未知来源消失的问题
  14. php 微信公号授权登入,laravel实现微信公众号授权登录实战
  15. gif透明背景动画_用“万彩动画大师”点亮你的微课
  16. 计算机二级考试是可以任选一种吗,计算机二级考试内容是什么_可以任意选择吗...
  17. vue 使用gsap(TweenMax)
  18. h3c虚拟服务器设置方法,h3c 设置虚拟服务器
  19. 第一次写,好不容易,最基本的C++题目
  20. js逆向加密五邑大学教务系统密码AES实现模拟登录(仅供参考)

热门文章

  1. 计算机编程平方怎么按,电脑键盘上怎么打平方,次方之类的
  2. android的json数据解析,Android数据解析-JSON解析
  3. 计算机网络:IP地址和子网掩码的关系
  4. svn服务器端下载linux,Svn linux服务端安装及配置
  5. Java注解方法实现BigDecimal保留两位小数(案例详解)
  6. 汇编语言实验十完整代码和详细解析
  7. 素质、职教、信息化:教育实时互动的新命题
  8. linux修改用户用户名,linux怎么修改用户名
  9. 无意识和潜意识,两者的区别是什么?在考试中一般如何考查?|小白心理-312/347考研答疑
  10. 对象及日期定时器、延时器