首页 > 技术文章 > 杨中科与如鹏网网友的对话—阐述了C、C++、Java之学习与程序化的思维

zwios 2014-12-24 23:06 原文

【如鹏网网友】:请问老师,C要学到什么程度才能去学JAVA之类的面向对象的语言呢?
【杨中科】:能写有一定难度的程序。比如写一个俄罗斯方块、聊天软件什么的。面向对象的核心还是面向过程,面向过程都没学好呢,理解面向对象纯属越学越糊涂
【如鹏网网友】:对,当初就是C都没学好,所以学C++也是越学越累
【杨中科】:我反感大学这一点。上学期学C、下学期学C++。完全违背学习规律。应该在学完C后安排一个学期的实战开发课。像咱们如鹏网的课那样。积累的足够的开发经验,明白了“一切语言、面向对象都是纸老虎”以后再学其他的。
【如鹏网网友】:我也好反感,可是没办法,还好遇到了杨哥,哈哈,贵人呐
【杨中科】:现在大学里完全把编程当成高数、概率教。。。一切语言的本质都是if else、while、for。输出、处理、输出
【如鹏网网友】:嗯,现在我从头学C,理解比以前深刻,对这点很有体会
=========================================================
【如鹏网网友】:能精通C语言就能很快得熟练C++吗?这两个不是不同得吗
【杨中科】:C++的面向过程部分还是C语言。C是C++的基础。C++只是加了面向对象特性的C。C++以前就被叫做“带类的C”
【如鹏网网友】:但是在编程的时候不是思路不是不一样得吗?
【杨中科】:一样。整体上是面向对象,但是具体每个函数还是面向过程。就像美国风格的建筑和中国风格的建筑在整体布局上有区别,但是到具体的时候还是钢筋、水泥搞起来的。只有掌握了微观才有宏观的角度。
【如鹏网网友】:即使我现在只懂C,只要很精通C就可以很快掌握C++了?
【杨中科】:
面向对象和面向过程不是敌对关系而是相辅相成的。编程最难的不是面向什么什么。。。而是程序化的思维方式。也就是给你问题,你能不能站在计算机的角度来思考怎么解决这个问题。具体用什么语言、什么函数库都是次要的。我有时候面试人的时候甚至要他们画流程图就行,我只看他有没有程序的思维,不关系具体细节
【如鹏网网友】:只要熟练得掌握一种语言去编写很多得程序就可以了吗?你那个半天学会PHP的故事我看了,我有点不可思议。
【杨中科】:没什么不可思议的。让一个开了一辈子宝马的司机去开大奔,他决对不用再去学半年
【如鹏网网友】:那我学好了C能一天就学会JAVA吗?
【杨中科】:Java还是有面向对象的。所以还需要一定的学习时间来熟悉面向对象的概念。
【如鹏网网友】:那我不是还不懂面向对象???
【杨中科】:你先要学面向过程呀。否则就走火入魔了
【如鹏网网友】:我真得觉得我有点像你文章说得那种人:什么都学,什么都不懂
【杨中科】:
面向对象是跑,面向过程是走。走都不会,就别想着跑。别急。踏实下来学好C。半年之后你就发现很多事情都明白了。很多人都不踏实,总是想这想那。
【如鹏网网友】:是啊 。你当年学那个是面向对象还是面向过程啊?
【杨中科】:面向过程。面向对象我是毕业以后工作时才慢慢学的
【如鹏网网友】:为什么我们得老师都不跟我们说这些的呢
【杨中科】:编程的本质是面向过程,面向对象只是添头。我甚至反对在大学里教面向对象的课程。因为面向过程都没学好就想学面向对象。就像学土木工程的连一块混凝土的力学分析都没弄懂的人就去学盖楼,最后只能是盖成危楼。别心急,把C语言搞精通了,学面向对象会非常快,如果说学C语言需要N天的话,学面向对象只需要N/50天,面向对象只不过是数据、函数的一个不同的组织方式而已,思维方式还是面向过程的。我调查过,那些所谓学过VC的学生,也号称是用面向对象的程序写东西,其实什么是面向对象都没真正弄明白。写出来的代码也一团糟,这就是C的基础没学好的必然后果。
【如鹏网网友】:那我现在应该静下心看C得书籍了?我该看哪方面得啊?
【杨中科】:别总是看,要练。先把C的书复习一遍。然后看如鹏网的《C语言也能干大事》的视频讲座,自己写一些有一定难度的Windows程序出来。要用C写程序,别总盯着书。
【如鹏网网友】:
我今年大四了,我都没什么程序得作品,连个很小很小得系统都做不了,悲哀死了。我能用三个月得时间来熟悉你说的这些基础吗,而且能开发系统,可以吗?
【杨中科】:就抓住C语言吧。三个月熟悉C语言绝对没问题,然后做一个拿的出手的作品
【如鹏网网友】:我们毕业要做系统还要做网站
【杨中科 】:做系统还是做网站都是毕业以后的事情。现在的主要任务是把自己卖出去,卖个好价钱。至于毕业以后做什么,别操心
【如鹏网网友】:主要是我不知道该往哪学。我也一直在学C
【杨中科】:不要“学”,要“做”,要“写”,要Coding。写出东西来
【如鹏网网友】:我最近看那MFC得视频,就像听天书一样
【杨中科】:
别看那些东西了,别在浪费时间在“学新东西”上,大学生的通病是“学学学”、“学新东西”,从来不实践。你最熟悉的是C语言,就学C语言,深入研究C语言,然后用C语言做出有用的东西来。你要是学MFC,又要学C++。大量的时间浪费在“学”上,而不是“做”上。
我面试的很多人又会Java、又会C++,可是我让他写一个简单的程序他都不会写,连流程图都不会画,只懂一些零散的Java、C++的语法,根本没有程序化的思维方式。这就是“学”的后果。
要写!coding!coding!coding!
剩下的几个月别学新东西了。要勤动手。用现有的C的知识来写东西,什么Java、C++、MFC之类的一边去。一切语言都是纸老虎,唯有程序化的思维才最重要。

推荐阅读