这篇文章是我在2007年5月14~22日分段发表在CSDN的C#专题研究群组的,8月份做了合并。2007年2月19日开始自学程序设计。5月份开始学习上网,出于一种对于狂热的学习程序设计兴奋的心情,想和群友做一些互动交流和摸索怎样发表文章,就把自己的想法发表了出来。那时候只有七本C#的书籍,现在有44本了,考察得较为全面些,所以,以现在的眼光看来,有一些看法是需要修正的。不过此处只是出于管理的方便,把它拷贝在这里,没有做修改。原文是:
大家好!我是新加入的205号,虽然不会写代码,但是却研究了一些重要的学习方请大家参考。 今天已经很晚了,我会尽快地抽时间把它写出来。
以下研究结果仅限个人观点.
一 C#的书籍
二 C#研究的总体布局
三 主体学习方法研究报告
一 C#的书籍
虽然经济比较拮据, 在短短将近三个月的时间里,我所购有关程序设计的书籍花了4~5千元, 其中C#书共有七种, 它们是:
<<C#高级编程>>(第四版)
<<C#入门经典>>(第三版)
<<C#程序设计入门>>(洪恩)
<<C# Objects中文版>>(韩磊 戴飞 译)
<<Visual C#2005文件IO与数据存取秘诀>>(章立民研究室著)
<<Visual C#2005程序开发与界面设计秘诀>>(章立民研究室著)
<<信息系统开发实例精粹C#版>>
相关重要书藉:
<<编程卓越之道>>(第一卷 深入理解计算机)
<<代码大全>>
<<程序设计语言实践之路>>(裘宗燕 译)
二/C#研究的总体布局和规划
1 研究总体布局和规划; 2 相关认识 。
1 研究的总体布局和规划
学习C#, 并不是仅仅只学习一种教材就行了, 要做通盘地思考, "胜兵先胜而后求战, 败兵先战而后求胜"(孙子兵法)。因而要有一个总体布局和规划。即以网络为基础,以C#为主体和SQL 2005的学习组合,将来注意三个方向的发展:网络方向,桌面方向和系统方向。简释如下:
(1)首先要有网络的思想。现在可以不学,但是在规划的时候要有。因为有了这一步规划,在学习C#的时候,如果遇见网络方面的问题,会以准备有素地思想去面对它,不会产生畏缩和逃避的心理。
(2)桌面程序在规划时,看作是网络的一种特殊形式。
(3) 在往系统方向发展时,要学好C、汇编、计算机组成和高级体系。
(4) 试作自己创作一种计算机语言和偿试写一种简易的编译器。即使做不成,也会在学习和实践的过程中学会很多东西。
2 相关认识
(1)学习者要跳脱出来,不要认为计算机程序设计,就是程序设计的全部。其实,真正的程序设计存在于日常生活和工作、事业之中,等等。首先要有生活和思想,其次,才是语言表达的问题。自然语言、图、表、现象等,都可以编写程序,学习C#语言,只是想用软件的形式,把它表达出来。
(2)从哲学上看(主要是马哲和黑格尔的精神现象学),C#不过是消除计算机历史上出现的矛盾现象,做到比较好罢了,由于经过语言创立者的精编,在将来的一段时间里,会呈现出一种令人惊叹的完美。作者自己的感觉是:学习JAVE,不会出现太坏的情况,学习C#,喜爱其精编和系统的完美,有时候也担心其独裁,虽然在C#设计的时候,具有平台无关性的特性,私下揣测:实现较好的时候,应是在MS遇到强敌或具有新的战略构想的时候,才可以较好的亨受其平台无关性。否则,只有一个字,盼,或者干脆不要去想这回事,如果实现了,就当作意处的惊喜。
(3)学习C#,是可以分解的。在作者所修习马哲和精神现象学中,几乎是大量的分解,已经成为日常思维的一部分。因而,可以在很多地方,可以看到C#的分解、破碎、完整与精妙之处。可以看到它的逻辑体系。
三/主体学习方法研究报告
我所研究的方法主要是将C#的学习分解为两部分:普遍性部分和特殊性部分。普遍性部分主要是指程序设计语言的逻辑体系结构的通用部分。然后将它们自编为10~20个主题,然后对于每个主题采用单科结业的方式,进行学习。注意,是采取逻辑主题的方式进行学习,而不是采取某种教材的方式进行学习。
为什么要采取这种学习方法呢?有两个原因:
1、在学完C语言前两章后,对于程序设计语言有了具体的感性认识,想先学C#,再学C,要优先掌握C#。这样产生,将C#和C的共同部分找出来的想法,学习这些共同部分,期望能取得同时收益C#和C。
2、每一种C#的教材,都有它优秀的地方和不足地方。风格随作者而有所不同,这样会给读者带来不便。在总结出程序设计语言的通用逻辑主题的方法后,以此作为指导思想,竟然意外地发现,如果以逻辑主题为主导,可以看出各个教材的好的地方和不好的地方。如果比较各种教材,《C#高级编程》(第四版)为最好,但是对于布尔逻辑却避开了没有讲。《C#入门经典》(第三版)也有很多可取的地方。也参考了其它一些书。
后来又发现了采用这种学习方式还有其它几个好处:
1、逃跑起来比较快。如果发现C#将来不行了,可以防守住其通用部分,弃掉其不合适宜的部分,快速地逃跑到理想的语言或平台上。不过现在看来,以C#设计的这么优秀,10~20年的生命力应该是有的吧。
2、由于特别注重程序设计的通用部分,而这种通用部分又是C和C#共有的,因而在心理上对于高级语言、中级语言和低级语言的落差比较小。尤其是《编程卓越之道(一)深入理解计算机》非常有效。
作者以菜鸟身份,从几本书中总结的不成熟地逻辑主题是:
C#关键字。 //英语的正确读音(正音);//正义;//要求熟背。
数值的表示。 //见《编程卓越之道(一)》
数据类型。 //简单数据类型;//值类型和引用类型。
数据的运算。 //运算符和表达式。
布尔逻辑。
流控制 //条件语句;循环语句;转向语句。
复杂的变量类型 //类型转换;枚举;结构;数组;字符串。
函数。
应用程序的组织。 //命名空间;程序集。
调试和错误处理。 //要学CSC和VS2005。
面向对象。
IO操作和文件系统。
总之,主体学习方法是对于C#的学习要具有分解的思想,先重点学习其通用部分,以逻辑主题为主导来统率各种教材的学习。对于每个逻辑主题,要从各种教材进行扬弃,最终要精通其基本、辨析清楚各种重要细微的变化、具有成熟的使用经验和常练其本功等等。最后从C#的全局系统的角度对于C#的学习进行优化。
以上仅属个人看法,讲出来也只是出于一种参与的态度,也欢迎和希望将来各位群友能对于作者所遇见的疑难发表成熟和不成熟地指正和参与。
原文链接: http://groups.csdn.net/csharp/topic/cd83054a-7e03-4d8a-b729-edff02b48783.aspx