花了一个多星期的时间将c#primer plus 中文版看完了,PDG的,程序代码看不清楚,只好看着书用脑子想,很多命令记不住。现在基本搞清楚面向对象是什么意思了,对面向对象提到的很多名词也有了一些认识,准备自己搞个小程序练练手。可惜,问题来了,一块蛋糕放那里,不知道从那里下嘴~~~~!基本的方法和数据都可以写出代码,可惜不会串起来,我要是想继续学下去该怎么做?请教各位老师~~~!
另外,我想说一下,我这一个多星期学习的一点体会,请大家指点一下。
面向对象我只看过C#,我感觉面向对象让编程者把精力从重复的编写代码中解放出来,从而能够专注于实际问题的解决。但是编程者现在面临的问题是要记忆大量的基础类库和其他开发人员编写的大量辅助类库,还要记忆很多的这些类库的使用格式,固然对象的定义和调用遵循特定的格式,但是参数类型和数量总不能不记住吧?所以我说编程者从一个噩梦出来又进入了另一个噩梦。而且随着类库的不断扩充,将来一个编程者写程序的时候一定先搜寻自己的记忆,查找是否存在固有的类库可以使用,然后开始寻找庞大的公共资源库,如果都没找到,还要自己重新编写自己需要的类(注:因为字段,属性,方法,函数等等在C#中都做为对象,所以这里都使用了类这个包含一切的词,晕,还有记忆新名词)。以前写程序,就是命令+作者的算法。现在是命令+自己(或别人)的算法。现在问题来了,如果不考虑别人的算法的话,面向对象给我们提供的就如前面所说,从一个噩梦转到另一个噩梦。如果使用别人的算法,问题又来了,如何从别人那里获得算法呢?1、不考虑算法,直接使用;(就是不用脑子那种)2、学习别人的算法,拿来自己重写,写好了自己用。第一种情况,就属于前面的噩梦那种情况了,而且如果你进化你的算法思想的话,你很可能在N年以后成为那些有先进算法思想的人的跟班。(想想看,如果一个国家都这样会怎么样?)第二种情况,如果别人不提供算法思想会怎么样?算法思想应该属于有知识版权的,如果都收费会怎么样?提供类库的微软和其他公司会永远免费吗?我记得看书的时候有提到有个工具可以查看DLL文件的构造,又出现2种情况,一是你可以看到DLL的全貌,这种情况是不是就属于侵权了呢?第二种情况,你只能看到外部接口,那你也学不到人家的算法思想了。总之一句话,面向对象恐怕不完全是好事,建议大家把学习的精力放在算法思想上面(用词可能不太确切,我是初学者)。
如果将来面向对象完全主导了程序设计领域的话,中国必定要发展自己的计算机硬件系统和计算机语言系统(软件开发),因为从我所学习这一个多星期以来,我看到的是,微软将自己的操作系统和软件开发系统(计算机语言)与计算机硬件系统绑定到了一起,表面上看,用.NET所开发的软件可以在不同的平台上运行,但是,一是它离不开.net公共环境,二是即使转化为公共语言以后,它还要面临硬件平台的选择。现在反而多了一个卡脖子的东西,就是微软(不是中国的其他国家)的.NET公共环境,如果微软在这上面做手脚,我们怎么办?
一定有朋友说我杞人忧天,我还是学我的习,请大家帮我指条路,我下面该怎么学?

解决方案 »

  1.   

    你现在的状态就是自己动手写点小东西,比如通讯录什么的。先把语法熟练了面向对象的话,先看看启蒙书,java与模式,设计模式精解,面向对象开发实践之路—C#版有所理解之后再回头看看你一开始写的小程序,看看思路上有什么不同,面向对象好在哪里
      

  2.   

    回2楼,顺便补充些东西。
    先谢谢楼上的指点,马上准备动手。我是不是应该找个什么简单点的实例教程一类的练练手?
    下面是补充的内容:
    其实,我一个多星期以前之所以会想到要继续学习程序设计,是因为我想给一个游戏写外挂,别人提供的现成的DLL,我只要把流程控制好就可以了,但是必须使用它的开发环境,而且还要学习VB的许多知识。我就想既然要学VB不如干脆选择一个语言,摆脱一切束缚,自己写界面,只使用它的DLL多好。
    于是,我开始选择。最初的选择是易语言,相信大多数人都知道这个名字,但是最好我放弃了。原因有二个,一是我看到很多人说用易语言写的程序极容易被反向,而恰好我在网上搜到一篇文章,说的是如何利用C#的一个功能实现代码的模糊编译。第二个原因是,我看到易语言中没有关键字,我不知道他们是怎么实现的,但是我觉得这是个问题,比如,我要申明一个变量的类型,我该怎么说?计算机不会模糊识别我的命令啊,我们人在对话时,之所以会产生歧义就是因为没有关键字的申明,但是我们有语调,我们用音律来告诉另一个人,我说的话里面的每个字所表达的准确含义,尽管如此仍然会有误会发生。我觉得计算机是无法完全理解我的命令的,回到变量类型的声明上,我告诉计算机,我下面要使用一个正整数数组,这个数组很大(为了强调为什么必须使用数的类型,一旦使用浮点数,数组的存储空间将达到100G以上,这是个假定)。那么我该如何告诉计算机?我说正整数 数组 数组名,这应该让计算机理解吧?可是由于没有关键字,这里的正整数 数组都是一个无确定意义的符号,计算机如何理解?那我必须告诉计算机这里的正整数是一个变量声明的词,这样我必须再写一句,定义 正整数 是一个定义数据类型的词,问题又来了,这里的定义也是一个无确定意义的符号,我还要告诉计算机这个定义的词的含义,于是我陷于无穷的定义词的语义的苦恼中。这是我没有去学习易语言的第二个原因,简单的讲,我认为它的设计思想还不到位。其实还有另一个原因,就是在它的论坛上有人告诉我,它需要相当麻烦的方法才能给自己定义类库,不好意思我又回到了代码重用这里来了,我觉得代码重用确实是一种语言是否是好的语言的一个重要标准(现在),如果它不能给自己扩充功能,我还要学习其他语言,这似乎不太合乎逻辑呀~~~
    其实我很希望我们有自己的计算机语言,具他们的开发者的话说,易语言是地道的中文计算机语言,它可以在我们国家推出自己的计算机硬件和汇编系统以后,马上重新编译而应用于我们的系统。当然,我在这里也不苟同一些网友的看法,他们认为如果语言不是从汇编系统直接开发成中文就不是真正的中文语言。我想说的是,汇编是基于机器语言编写的,C是基于汇编语言编写的(不知道对不对),那么如果C语言是由美国以外一个懂得英语的中国人写的话,它可以选择两种表现手法,一是英文,一是中文。(当然,那个时候是没有扩充的UNICODE字符集的,但我们可以假设有,基于硬件如何实现字符的传送和输出,请自己去看计算机原理)。那么如果它选择了中文而不是现在的英文表现手法,那它是不是应该叫中文语言呢?我想应该是的。那我们回过头,C++是在C语言上扩充来的,如果它的实现者也使用中文表现手法呢?我们再转下头,易在C的基础上开发而来,它使用了中文表现手法,我是不是确实应该叫它中文语言了?
    下班了,我要回家了,以后有机会再补充。
      

  3.   

    lz首先你现在是起步阶段不要烂七八糟的学一堆东西,没用。你应该就找准一个学,c#简单好入门。自己做点简单的东西树立一下自信心
      

  4.   

    嗯,好的,我中午忘拿移动盘了,一会找找我硬盘应该有实例教程的,练手开始。谢谢FUADAM~~~!