现在的位置: 首页 > 综合 > 正文

我来告用诉你学什么有用

2012年06月04日 ⁄ 综合 ⁄ 共 4673字 ⁄ 字号 评论关闭

今天看博文,看到这些文章,又联想到大二即将毕业,于是修改了一下这篇文章,当做对一下大一大二所学的内容的总结吧。


 一、计算机专业素养

         1,高等数学:为了及格,同时帮助概率及格 

         2,概率:为了证明高等数学可以帮助及格 
         3,线性代数:如果你学习计算机图形学,就是opengl/direct3d的话,里面的3d模型的空间坐标用矩阵来表示的,如果你需要把它们进行投影,叠加,移动,就需要矩阵乘法/变换/转置等等,所以还是很有用的 
         4,离散数学:主要是给你打下计算机数据模型的理论基础。里面包含集合,数,图,等等,更重要的是如果你以后要搞研究,研究0错误程序,就是完全没有bug的程序,就需要用它上面的推导理论来对程序经行证明。如果你要通过系统分析员,这个也是要考试的 

          5, 数字电路/计算机组成/计算机技术:如果你是一个很深入的程序员,你会问:为什么浏览器可以显示那么多东西->有html语言->html语 言是怎么开发的->高级语言->高级语言怎么完成的->汇编->汇编怎么来的->固化/机器语言->机器语言如何能 操纵计算机->在节拍电路的干预下,内部芯片的结构把0/1字符串译码,操作累加器,总线,内存做不同的操作那好,这个过程差一个东西都不可以,如
果你只学习里面的高级语言部分,那岂不是神龙见首不见尾,感觉很不爽???所以你要能自己做一个计算机出来才好!!! 


          数字电路是学习门电路组成的,就是如何把流动的电信号保持下来,同时让他们有规律地变化 ,计算机组成是让你用门电路来设计内存/cup/时钟等等
计算机技术是让你综合学到的东西,做一个简单的计算机出来。 
有了这些知识,当然还要包括编译原理,软件工程,操作系统,数据库,网络,你学习其他的语言,什么vc/vb/deliphi等等,每种语言不超过3个月你就是高手。你要学windows程序,要用api,只需要15天就可以作出像模像样的东西。当然,我这里是指语言本身而言。有了这些基础和语言掌握的熟练,你想学数据库编程,好,复习一下数据库的课程,查阅一下sql的语法,1天就有眉目了。你要学网络编程,选择一种库,看看文档,明白函数的用法,也就
是一两天的问题。等你做出点东西,有了信心,你也就有了经验。这个时候去明白j2ee/.net 等等的frame work,就很容易了。参看以下design pattern,你也就胸有成竹,做个小组长也可以。再过几年,有了机会,说不定就当了manager,等了到了三十多岁,你不想干软件了,你有计算机组成的基础,找几个高手带你一下,你可以去做单片机的汇编语言编程,可以去做embeded system 。

所以,学好了基础,也就是厚积薄发,后面你想怎么发展都可以! 

          学了数字电路才知道,原来很神秘的电脑是由一些触发器,逻辑门组成的,把它们集成再集成,就成了电脑 了,译码器,全加器,计数器...... CMOS不过就是一种存储器,BIOS不过就是面向硬件的一种已编好的子程序,(和C的库函数差不多,我认为)学好了汇编,我可以自己编(还让我花了30人民币,买了一本CMOS设置书,认为它很高深莫测)!


二、编程能力

       不学好C,怎么学好WINDOWS程序设计,怎么能做一个优秀的程序设计人员 
  不学好前人花几十年时间总结出来的数据结构,你的进步能有多快,那是让你踩在巨人的肩膀上。(你要是天才,我就没话说了,不过要是学了,你会更天才) 
  这是我自己经历的一点学习基础课的过程,它给我解疑释惑,当然这些问题在行家眼里可能不值一哂,但它是每一个新手必经的过程。 
  更为关键的是,基础课给了我们最核心的知识,让我们能在离开学校后有继续学习的能力。它给了我们一个知识结构,让我们能在他的基础上扩充,把新的东西加入自己的知识框架中,这是基础课重要的意义所在。很多人提到基础学好 之后,学习新东西很快,就是这个道理。 
  不可否认的是,基础课很枯燥,很费劲。但这要看你怎么去看它,你想一想,学好了他,就能抓到计算机的本质,能让他对你俯首帖耳,这难道还不够激动人心吗?老在别人的基础之上作设计,却不懂所以然,不闷吗? 
  既然讨论的题目是给在校大学生一点建议,那我也说一点儿。 
  先说技术层面的,在学好专业课的基础上看一些学校里不讲的新知识,新技术,能促进你的融会贯通,但不可本未倒置 。 
  再说最关键的,最想说的,请在校的学生们珍惜你的时光,不要都 去打了游戏,谈了恋爱,时光宝贵,机会难得。 
  我经常对自己说,如果再让我上一次学,我会...... 
  可是不会了,我只好对自己说,如果我现在再不学,就会...... 
于 是我努力去学,边工作,边学习,舍不得丢掉一节课,在校的学生们可能无法体会听老师讲课的幸福,自学时怎么也搞不清的东西,老师一句话就茅塞顿开,老师那 清晰的思路也让你受益匪浅(在这里应该感谢那些老师们,虽然他们有些时候的简略很让人恼火)。但越学,心里越没底,有太多的东西我都没学好,更有很多东西 根本就不知道,正所谓皓首穷经。 
  我不时的咒骂自己的懒惰,也许是过于愚笨,努力不够,学习计算机也有三年多了,直到现在,我才觉得自己开始了解计算机,才明确了方向。 
  我从文科转入这一专业,而且也不小了,就凭着我对计算机有着强烈的兴趣。他是人类智慧的体现,程序设计更是一种艺术,他能让我们的才华得到充分发挥,我会继续努力下去的,虽然有些迟了,但为了不更迟。 
  希望在校的学生们能多珍惜一些时间,不要比我还迟。 
       如果觉得自己接受能力强的话就可以开始学C了(注意不是C++),如果感觉有困难也可以先学Pascal过度一下。还有很重要的一点就是千万不要一开始 就学VB,DELPHI,VC之类的东西,这些东西在一开始学会对你造成很坏的影响。有可能会把你引入另外一个错误的学习方向而忽略了真正应该掌握的东 西。学C主要是学过程话的程序设计,学会把自己的程序分成许多的函数(或过程),养成良好的编程习惯。这时可以多看一下高人的程序,不一定要懂意思,主要
是学会别人程序的格式(比如变量如何起名,怎么划分函数)。除开掌握基本的控制流语句外,应该学习一些很简单的I/O函数和数学函数。C的学习主要是你舍 弃原来BASIC程序那种把所有语句积成一大堆的风格,要学会使用函数,提高代码重用性。对于指针之类的东西如果实在看不懂可以先不去管,到后面会有办法。

  
    学完 C我认为接着最好学习汇编。这个或许有许多人都会反对,然而我个人认为这样是很好的。从最基本的DOS汇编开始,买本《IBM PC汇编程序设计》(清华黄皮)一定要一点一点吃透,实在看不懂就跳,反复的严读是一定可以看懂的。汇编是一定要掌握的,因为它涉及到很多最基本的知识。 掌握了汇编和对I/O有了个很彻底的认识后,应该去学编译原理。这个东西并不要精通,但是一定要知道,在大脑里要有一个这样的概念,这对你对程序语言的控 制能力都有很大的帮助。这样最基本的学习就算完成了。一般智力正常的人前一段东西应该都是可以掌握的。接着后面的学习就要看你自身的造化了。

        当你能够比较自如的用C编写一些小的计算程序时,你就可以开始你的数据结构的学习了(数学的学习主要是在学校,自己要多用心)。数据结构你可以一点一 点漫漫看,并不需要专门空出一段时间来专门研究,这样的目的是让你能够很好的掌握它,要学会用数据结构的知识来规范自己的程序设计和提高程序的效率。不要分散自己学习的注意力,要知道数据结构是异常重要的(相信我,绝对没错)。

         如果你觉得自己已经对于树,连表,堆栈之类的东西和排 序,递归之类的算法已经十分清楚,就可以开始学习C++了。学习前一定要有个正确的认识,那就是C和C++是两个不同的东西。学习C++是为了学习面向对 象的程序设计,这个时候你对于指针应该也能够掌握了(有汇编的基础),主要抓住C++和C相比的一些新特性,对于多态之类的特性要注意理解掌握,如果没有
搞懂就坚决不要往下学习。一些基本的概念掌握以后可以
看一些别人设计的程序,学习别人怎么利用面向对象的方法来设计程序的。这个东西也是人之间拉开档次的 一个环节,可以和数据结构放在同等重要的地位。我就见过有的人都大学毕业了还搞不懂virtual到底是怎么一回事情。

          其实我认为学到这里你已经为你成为 一个优秀的程序员打下了很好的基础,你已经能够应用C++,懂得面向对象程序设计,对数据结构掌握很好,掌握汇编和编译原理。接下来的学习就是基于操作平台的了,一般是先学windows(Microsoft毕竟是老大),先学win32 api,搞请windows基本消息机制和原理,有汇编基础基本上不会碰到什么困难。其实只要会了API,其余什么MFC,VCL都是囊中之物了,都不过
是对于API的封装而已。VC,C++Builder都可轻松拿下,这只是开发工具的问题。以后的OLE(ActiveX),.NET,数据库就要看自己 的发展方向而定了。我在这里强调的是前面的基本能力的学习,后面操作平台虽然知识体系庞大,然而毕竟比较死 。

         最后编程能力的高低主要还是有以下 几点决定:1。编程的习惯 2。数学能力(包括逻辑思维,分析问题的能力) 3。对数据结构的认识能力 4。经验的多少(包括多使用语言的掌握能力) 

         学习编程的道路是充满艰辛,漫长而曲折的,作者罗列了一堆自己知道的编程方面的知识,并且给出了一个具体的顺序,所谓先学什么,后学什么;没学会什么,就一定不要去学另一个什么.....其中很多内容有一些道理。但是总是难逃片面。 
           从入门到精通一类的东西看的太多了,难道真的凭借一本书就能从一个电脑盲编程精通的专家了么。我郑重的建议那些想“速成”高手的人,放弃你的想法吧。一个计 算机专业的本科生,要花上4年时间才能毕业,需要学习的专业知识岂是一朝一夕就能掌握的。就算去除一些公共课所占用的时间,我觉得要入计算机行业这个“门 ”,至少需要两年的时间。两年后才能说,对计算机有一些了解了,知道了计算机的基本组成原理,对时钟晶振,中断芯片有一定了解,用汇编简单控制8259编
程。也知道了一些计算机程序设计语言方面的原理,掌握了一俩门传统的样板编程语言,了解了i++和++i对于VC的编译器来说意味着什么,有了一些数据结 构方面的认识,能把现实生活中的一些问题用程序模拟出来。 

           但这一切也不过是刚刚入门而已,只是打基础。至于以后再学习Windows系统原理,消息机制,掌握这个类库,那个类库;抑或是研究Linux内核,进而了解嵌入式系 统开发工具和方法,那要看个人喜好了。我只是举几个例子,但是随便哪个,要敢说自己已经完全掌握,至少还要几年吧。 
          如 果上面的东西中有的已经很精通了,可以称为专家了,那么恭喜你,你可以考虑把这些东西再总结,提升一个层次,从系统架构角度回顾一下要实现某个需求,通常需要使用什么技术,多少人,多长时间来开发,成本多少,收益多少,风险又有多少,还可以总结出一些控制软件开发进度的方法,生成软件的方法,人们把这些方 法归纳起来叫做软件工程。而你,也应该是一个项目经理了吧。 如果这些东西都学会了,再次恭喜你,你可以考虑能不能把现有的客户拉到自己身边来,找个人给自己投资,成立自己的软件公司。成为浩浩荡荡的软件创业者中微不足道的一员。


           文章参考地址已经找不到,感谢原作者!


抱歉!评论已关闭.