也谈第一门编程语言应该学什么


很久了一直思考程序员应该先学哪门编程语言,必须掌握哪些编程语言,如何一个学习顺序。正好看到金老师也在研究第一门编程语言选谁(http://blog.csdn.net/bitfan/article/details/7939691),在此也表达一下个人看法。

   金老师说到的第一门编程语言必须“有趣、简单、有用”的观点,我是基本同意的。

    首先,如果一开始没趣,不能激发学习者的兴趣很难让学生能够继续学习去,没有第一步的入门更难说以后坚持学好编程语言了。但实际上,“有趣”的不一定是编程语言本身,而在于用编程语言干什么,比如做一个简单的游戏,一个简单的应用,让初学者有一个学习的欲望,并且能够通过自己的努力完成一个完事的应用开发,使其具有成就感。假设是C语言,其实也不妨把编程语言与硬件结合,去控制一些LED,做个简单的时钟,也会让初学者很有兴趣;通过VB做一些简单的俄罗斯方块、计算器之类的应用也很有趣,等等。总之,趣不一定在语言本身。

    其次,”有用“就不是一个简单的问题,当然如果像Matlab之类的语言学会之后可以做很多计算,对于一个工科学生、以后的科研工作者、其它研究性工作来说可能非常有用,但对于一个程序员来讲也不见得非常有用,这要看以后的职业生涯,不同的职业道路学的东西应该是不一样的。

   特别地,对于金老师所说第一门语言”必须能充分地体现现代软件开发的基本思想和技术成果”不是很赞同,因为第一门语言的学习过程中承载的东西过多会使初学者消化不良,反而会打击其积极性,心生畏惧,知难而退。

    话说回来,其实在研究第一门编程语言应该是什么的时候,我们应该先确定一下学习第一门编程语言的目的。个人认为每一门编程语言学习目的不是学会如何开发可用的工程软件,也不是为了真正掌握这门编程语言,而应该是帮助初学者转换思维,理解人与机器的沟通方式。前些天帮助北京某一高校设计手机软件开发课程,一个学期的课程,零计算机基础,没学过操作系统、微机原理、数字电路等,更甚的是根本没有学过一门编程语言,让我着实头痛,96课时要学一门编程语言还要学习手机软件开发的相关技术。人的思维方式的转变是非常慢的,所以出现的问题就是一边学习编程语言本身,一边学习手机软件的开发,由于对语言本身难以理解,导致整个课程的进行非常困难。这使我想起自己开始学习第一门编程语言----C语言的时候,虽然考试成绩很好,但自己当时的感觉还不是很透彻,心里总有些东西并不是很理解,比如函数、递归等,也是后来才慢慢地理解透的。对于学生来说,一个学期的课程只要能理解编程语言是怎么回事儿,理解编程语言的一些基本概念已经足够了。

    再从实际工程应用上来说第一门编程语言。在程序员当中,学习路线主要分为两类,一类是开始学习C语言,继而学习C++,后转向Java/C#或其它语言;另一类是开始就学习Java/C#的,后来由于工作需要也学C语言或C++。前者,由于学习C语言和C++的过程中把编程的基础知识学得很扎实,在理解Java与C#的时候就比较快而且深,因为从计算机硬件到Java整个知识链是完整的;但对于后者,由于在学习Java的时候,很多底层的知识都没有学习,对底层不太理解,再转而学习C/C++会感觉难度要比Java大很多,而且由于人本身的惰性导致C/C++也学不好。从兵法上来讲,前者属于“破釜沉舟”一类,由于后方没的退路,因为C/C++职位不多且对计算机综合技术要求较高,要想有工作或者提升层次必须转型学Java/C#;而对于后者则不同,因会Java/C#,工作机会也很多,如果学习C/C++学不好,照样可以有很多职位供选择,不能够发挥最大的潜力。所以,结果就是前者很更可能成为更高级的软件技术人才,而后者更难。而且,一旦精通了C++,再去学习Java/C#已经不是问题,只是熟悉一下编码规则而已,所以,前者也是比较自然的一种学习路线,但其入门门槛较高,开始需要一定的毅力才能通过那个阶段。

发布了311 篇原创文章 · 获赞 225 · 访问量 84万+

猜你喜欢

转载自blog.csdn.net/Nocky/article/details/8037158