C#基础知识整理:写在前面的话

    当我们还在学校的时候学的最多的东西是编程的基础知识,不论是C,C++,C#,Java等。当时我们并不能体会到学好那些语法有什么好处,不明白为什么计算1+1=2,还要去分析寄存器中放了什么,移除了什么,堆和栈如何变化的。不明白学总线,学编译原理干嘛。当时总想一口气做出一个软件来,认为这样才是学会了编程。
     然后,后来我们离开学校了,开始编程了。这时我们还是菜鸟阶段,想的最多的还是如何写出一个软件,当你用鼠标拖出一个窗口,或是用C写了一个复杂的处理方法并用到了项目中。我们发现学校学的大部分有什么用呢?于是我们认为终于会编程了,终于是一名程序员了。
    可是,当我们在项目中承担的任务越来越多,你所写的代码占据重要作用的时候。亦正是从菜鸟向大虾,或从大虾向大牛蜕变时,这时我们遇到了这样几个名词:逻辑错误,性能,效率,稳定,代码质量。这个时候学校所学的东西就体现出来了,这里已经不光是计算机方面的知识了,数学,物理,化学,生物,地理,通信,电子,传感器等,无所不包括。毫不夸张地说,这个阶段谁的理论基础扎实,谁才能真正完成进阶。如果没有理论基础作支撑,纵然写了N个项目,也只是菜鸟行列里熟练一些的菜鸟而已。可能大家不明白为何要包括:数理化这样的知识。数学那是必须的,在编程的道路上走得越远用的越多。通信,电子,那更有必要,因为你不可能一直写的都是在电脑上运行的程序,当我们要开发手持端或其它支持高级语言的终端时,就需要了解它们的工作原理,才能写出相应的程序。
    所以当我们认为做出了一些东西后,不要沾沾自喜,于是突飞猛进。这时需要适时停下来,重新回顾学校的知识,所谓:欲速则不达,正是这个意思。
    也许我们还会遇到这个问题,这么多语言该学什么?哪种语言好?这也是初学者常犯的疑问。我想说的是,什么语言都可以学,关键看你学得有多精。大家看武侠小说中经常描述到:但凡武功化境的人,一套供练武的人入门的五步拳,施展开来也是威力无穷。那么编程语言呢,各式各样的编程语言,让人觉得是多么的高深。可是尽管语言繁杂,语法不同。但是它们的最终目的都是一样,与电脑交互,说得本质一点,就是和硬盘和内存条打交道。也就是说这些高级语言原理都一样,只不过表达方式不同。C#中GDI+,C++里的GUI都包含有如何画界面,至于如何画,两种语言语法各不相同,可是本质呢,其实还是一样,无非就是点阵上怎么显示点的问题。这样真正学会了其中的一种原理,再学另一种只是几个星期,几天甚至理论扎实的人只是几个小时的问题。
    所以,就拿我们国家那些计算机方面泰斗级别的人物来说,大部分都是60,70年代,用着386,486这些机器,凭着打孔的纸条来写代码的人。当时虽然没有高级语言,但是他们已经通过在纸条上钻孔和不钻孔已经对电脑的本质完全了解了。再到后来不论出来什么新的语言,他们只要查查相应的语法完全运用自如。当然我们今天是没必要拿钻孔纸条学习编程,但是不论哪一种编程语言的书,对基本原理是不会改变的,所以只要有一门语言进行深入学习后,其他语言已经没必要专门学了,只是在需要的时候拿来用就行。
    所以不能浮躁,要踏实稳步前进。编程如此,其它无论什么职业亦是如此。

你可能感兴趣的:(C#基础知识整理:写在前面的话)