写给在校学习编程的计算机专业大学生的话

    今天看到一个在校大一的同学的帖子:转帖如下:

我大一这一年

    http://topic.csdn.net/u/20120802/13/e7f6638f-e82c-4381-a89b-a0d3b24de0d8.html

    ....
   大一下的假期自学大二上的数据结构一部分,看得我有点小晕。又继续强化c和c++。

   因为学校是二加二所以课程比其他院校快半年,大二的专业课特别多,课程也多,我又选修了java和vb,现在后悔了,觉得没马么多精力,看来大二我要很忙很累了,   

    唉。。。。。。。


        每次看到这样的帖子,总感觉又有人和先前我走的路一样了。记得曾经的我,在大学里,认为学会了java是比学习c或者c++高级的。会用xml比其他都厉害,唉,为什么那个时候都希望都学会几门语言呢?而把基础并且最重要的东西没去深究(算法、数据结构、离散数学、编译原理、操作系统、计算机组成原理......)

  

    看罢上面的帖子,我写下了下面的回复,现在重新组织和整理一下:

 1)  大学不要去捣鼓太多的语言,注重算法和数据结构。这块东西是编程之魂.

 2)  建议语言的学习路径: C -> C++ ,这两部分学通了(C/C++的本质要把握)。

      如果想往底层去探究,比如:C语言的函数一般在computer上是怎样调用和返回的。可以有重点的侧重学一下汇编(PC上的x86汇编就可以了)。

      如果不是到了大三、大四找工作的需要,我建议按照这个路线走。把c/c++/汇编,算法、数据结构、OO思想等多看看。 这个时间段真的没有太多其他时间来学习java这类的东西。 面向对象的思维,在C++里面已经可以体现了,可以看相关的书(比如:设计模式,重构)。当你把C++和OO思维相结合之后,(不要用C的思维去写C++,那样你没有进入OO的领域)

3)大三阶段

    有了上面的基础,再来学习java/C#之类的,很多东西都有似曾相识的感觉。基本上来说,只要关注一下这些语言的语法细节,不用多久,就可以上手了。

    在这个阶段,如果有兴趣和时间,可以自己尝试写写 编译器(搞通编译原理),自己整理一下数据结构和算法。

    学习了新的语言之后,在往下要学习语言的话,可以考虑动态语言。可以学ruby或者python。不过个人倾向推荐学ruby,它号称anything is object。到了这个地步,你又进入了新的世界,以前类必须在编译或者运行之前要确定好,到了动态语言,发现代码尽然可以在运行时动态的创建类。基本上到了这个阶段,可以令你对OO的理解进入全新的思维。

4)大四阶段

    大三下或者大四阶段,这时就差不多可以进入不同的领域来学了。

    如果你的基本功扎实,并且也想后面进入有前途的行业。建议可以开始学习 图形编程和游戏开发了。如果想往web方面发展,就可以侧重这块了。总之,到了这个阶段,差不多是你开始往新的领域去入门。并且你也可以,多种领域走马观花一遍。然后找找自己感兴趣的东西。至于要不要考研,我感觉在现在的国内大学环境中,如果没有实际的编程经验的积累,暂时还是不要去考研。可以等后面工作一段时间,自己看看是否需要进修。网上有一篇帖子,我感觉总结的非常好。

转一下:计算机专业要不要考研——写的很棒 http://blog.csdn.net/caiyunfreedom/article/details/6793577.


        最后关于OO的思维,建议多多思考封装的概念。我认为OO的本质是去封装变化的东西,不太变的东西其实用不着OO的思维的。至于很多C++书上来就是继承、多态等概念,造成初学者认为有继承、多态才是OO,呵呵,我感觉这是阻碍了许多新学着的思维。据说C#设计时,对于是否支持继承,进行表决过,基本上高手级别的人都不希望有继承的机制,不过最终为了易用还是加入了继承机制。 从这点来看,继承不是OO的固有特性,可以抛弃它,只是有些语言通过它来提供复用的功能。

         因此,对待继承的问题,OO设计原则是,优先考虑组合然后才是继承。 在ruby的语言体系下,发现继承基本都可以不用了,通过module可以达到代码的复用。不过ruby这个语言还是加入了类派生的功能,或许人们感觉继承的东西好理解一些。

        其实OO编程,不就是 obj.send(msg) 往一个对象发送消息嘛。至于消息是怎样处理的,这是obj自己内部的事情(这就是封装的内涵所在了)。 然后把 松耦合、高内聚的概念一套,很多OO的思维就融汇一体了。 封装变化的东西,优先组合然后继承, 松耦合高类聚。基本就是OO的原则了。反过来看,这些都是为了后续最小代价来拥抱变化(毕竟需求是多变的),如果没有需求的变化,基本上也不会引申这么多方法和原则了。如果精通OO思维,发现其实用C语言也是可以写出OO风格的代码的,因此OO思维基本和语言没有多大关系,它是灵魂,并且没有强制规定具体的招数的。


      


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值