我的计算机学习过程与.net学习过程(二):大学一年级

     2001年的9月10日,离今天正好7周年,我背着个行李包,踏进了浙大之江校区的校门,听说是当年司徒雷登住的地方,时天色已晚,就睡了。第二天,一觉醒来,听人说美国纽约世贸双塔大楼被恐怖袭击了。没来的及细看,我匆匆去办入学手续了。
     发下来一群的书,一本《C Programming Language》,英文的,200来页,吓着我了,英文的怎么学;又一本《Structured Computer Organization》,英文的,1000来页,能砸死人,吓倒我了,居然还一个学期学完;再一本《计算机文化基础》,中文的,讲了咋在Windows98下删除复制文件、咋上网的,急忙开看,啥没看懂,于是,我被吓死了。
     过了一个星期左右,发下上机卡了,我们室友7个浩浩荡荡就开过去了,找好机子,第一个问题来了——找不着开机按钮,请室友帮忙开机后,我对着那白茫茫一片,偶尔嵌着一个个四方的小图案的东西,蒙掉了。第一次上机,连个北也没找着。
     此后不久的一个晚上,我跟着一个室友去上机,看到他弄出来一个带着红围巾的憨态可掬的一个小企鹅,还一闪一闪的,顿时,我的敬仰之情又开始滔滔江水了。他帮我进了一个聊天室,看到不少叫“菜鸟”、“老鸟”的人,心想,怎么大家都喜欢叫鸟呢。我发出了第一条消息:“大家好,我是XXX,希望能跟大家成为好朋友。”
     强烈的紧迫感危机感让我有如热锅上的蚂蚁,我看了一个月的《计算机文化基础》,上了一个月的机,我还是啥也没明白。终于,在一天晚上,我照着书本上的步骤,成功地换了一张桌面背景。我清楚地记得,那个晚上,我是飞着回到宿舍的。

     有了这一次的成功,接下来就好办了,很快,我就学会了剪切、复制、粘贴等操作。最主要的,是我理解了Windows是怎么管理计算机的,理解了窗口、菜单、按钮是怎么一回事,有了这个,学习起来就是水到渠成、事半功倍的了。一个人的学习,入门非常重要,入了门了,就已经学了一半了。

     回到程序设计方面,在我看到《C Programming Language》时,我就决定全面拥抱它了,一方面是我的高中老师说过它是非常优秀的,另一方面,这是课程,没办法不学。在第一节课之前,我对它做了预习,英语功底比较弱的我看起它来味如嚼蜡,一片一片的单词都不认识,于是,我决定去买谭浩强的那本《C语言》,用它来代替这本天书了。谭浩强的书写得确实非常好,但是,放弃啃英文书也使我付出了很大的代价,在以后的大学生涯中,几乎所有重要的教科书都是英文的,块头一个比一个大,而期末考试的卷子也是英文的,啃不下英文书的我也只能去找相应的中文书籍看,但常常找不到非常好的中文书籍。我丧失了一段非常好的学习英文的时光。老外的书写得确实好,非常敬业,不像国内的很多书,错误百出,而且到处存在抄袭。在此,也奉劝大家好好学习英文,多看看老外原版的书。

     我写得第一个C语言程序是俄罗斯方块,是在Turbo C下编写的,是我们的课程作业。那个时候,我们手里拿着几张软盘,排在机房外的长长的队伍中,等待上机写代码,不少人边排着队边捧着书,不原意浪费排队的这段时光。那是令人怀念的一段日子,人人都争先学习,唯恐落在它人之后,我们的宿舍晚上11点是要熄灯的,而走廊的灯光是不熄的,每当11点之后,走廊上就摆上了好多凳子,借着这暗弱的灯光,半坐半跪地匐在凳子上学习,有的甚至学到凌晨3点,这种事,我也干过。

     我很庆幸我们的老师没有把我们教成语法狂人,而是教给了我们实干的本领,我也很庆幸我在大学学的第一门语言是C语言。因为有了C语言,为我接下来学习面向对象,学习C++、C#、Java打下了坚实的基础。在这里,我建议,所有没有学习过经典C语言的都去好好学一下,相信你会受益匪浅。

     我的俄罗斯方块倾注了我极大的心血,然而,在我完成它时,我的同学已经完成双人的坦克大战了。浙大真是个藏龙卧虎的地方,我这个曾经的学习上的尖子在这个地方,看到了很多高不可及的东西。

     后来,隔壁宿舍集体租了一台机子,在那天的重装系统仪式中,我们附近好几个宿舍的人都来了,一来是为了观赏重装系统这样的“百年一遇”的大事,更重要的,是他们宿舍打出的广告,说要装一个叫什么“叉屁”的这么难听的名字的Windows最新版本,于是,我们都来一睹芳容来了。头一次见到,那蓝色的塑胶般的窗口,原来还可以这样的阿,我们叹为观止。

     很快,一年的时光就过去了,大家的学习都取得了很大的成果,我也跟大家一样,是一个长着朝气蓬勃的脸的新新青年,遥望着明天更好的阳光。然而,很多意想不到的事情在接下来的一年中发生了,打断了我正常学习的路子,而很多同学也走到了学习上的转折点。在那个有点不堪回首的一年里,我遇到了.Net,也开始了一直到现在的.net的学习。

posted @ 2008-09-10 20:53 中华小鹰 阅读(2441) 评论(44)  编辑 收藏 网摘

  回复  引用    
#1楼2008-09-10 21:07 | 铁[未注册用户]
建议你还是精通C/C++吧,不要去学C#,否则你会后悔没有钱途的
  回复  引用  查看    
#2楼2008-09-10 21:17 | 吉他爱好者      
建议你还是精通C/C++吧,不要去学C#,否则你会后悔没有钱途的
  回复  引用  查看    
#3楼2008-09-10 21:18 | egmkang      
....
你确认谭的那本C写的非常好?????
lz路还很长.
大一就面向对象.......
我现在大四了,都还是OB一个.....OO,还远着了.

  回复  引用  查看    
#4楼2008-09-10 21:19 | egmkang      
我不建议你去学C++,你就能把C学好,就很牛逼了.

  回复  引用    
#5楼2008-09-10 21:19 | 子曰2[未注册用户]
现在孩子了不得了。高中生就反汇编。
  回复  引用  查看    
#6楼2008-09-10 21:23 | 隨風.NET      
他写的可是回忆录
  回复  引用  查看    
#7楼2008-09-10 21:26 | aspnetx      
还有下文不?
  回复  引用  查看    
#8楼2008-09-10 21:40 | 曲滨*銘龘鶽      
因为有了C语言,为我接下来学习面向对象,学习C++、C#、Java打下了坚实的基础

C++、C#、Java 是你学完了?

还是你准备要学?

  回复  引用  查看    
#9楼2008-09-10 21:40 | gussing      
校友好,大一在之江的是01届吧,不是2007年入的学。
我是02届的,刚进校门时被shock到了,因为当时的紫金港就是个大工地,连路都没铺好。转眼间6年就过去了。

  回复  引用  查看    
#10楼2008-09-10 22:07 | egmkang      
@子曰2
高中反汇编.....
牛人啊.

  回复  引用  查看    
#11楼2008-09-10 22:07 | 真见      
铁 [未注册用户]
晕,,有人不是说学习C语言的人要么是失业要么在学另一门语言么,这说的可是很有道理地,,而且C++能做的事情C#不是照样做吗,而且C#主流多了。。。

  回复  引用  查看    
#12楼2008-09-10 22:09 | egmkang      
我大学学了三年的C#,相当多的课,约有6门左右.就算程序一句不会写的,也能熏出来一点吧.
但是当我大三的时候再仔细回嚼C的时候,那种感觉是无法表达的.......

  回复  引用  查看    
#13楼[楼主]2008-09-10 22:13 | 中华小鹰      
@egmkang
我想每个人都可以对事物发表自己的意见,我也可以对我看过的书发表自己的意见。在我看来,谭的那本书确实是本好书。
我是大二学的OO,不是大一,不过,我觉得,如果到了大四了,还不懂得OO的精髓的话,似乎就有点说不过去了。

  回复  引用  查看    
#14楼[楼主]2008-09-10 22:15 | 中华小鹰      
@曲滨*銘龘鶽
我说的是学语言,而不是学它的框架、类库,这可要区分开来。
我想,如果你掌握了这门语言的思想,你就查不多学会了这门语言了,而框架、类库的话,严格说就不属于学习这门语言的范畴了。

  回复  引用  查看    
#15楼2008-09-10 22:15 | 横刀天笑      
07年还这情景?还软盘?
  回复  引用  查看    
#16楼2008-09-10 22:17 | egmkang      
@真见
C++能做的事你确定C#能做???
你自己去看看Vista里面除了.NET Framework以外,还能找到几个运行在.NET的程序???
你自己去看看Vista里面最简单的notebook.exe是用什么写的???

  回复  引用  查看    
#17楼[楼主]2008-09-10 22:18 | 中华小鹰      
@横刀天笑
不好意思,01年,一时笔误。

  回复  引用  查看    
#18楼2008-09-10 22:18 | egmkang      
@中华小鹰
呵呵.
那么只能说明我菜了.o(∩_∩)o...

  回复  引用  查看    
#19楼[楼主]2008-09-10 22:26 | 中华小鹰      
@egmkang
你说到回嚼C,感觉无法表达,是不是指用C来写太费劲呢?
其实,我们在讨论一门语言强与弱的时候,太容易把它们的比较变成了类库、框架的比较了,我想这是不对的。
语言的比较,我想如果从它所体现的思想上来比较的话,会更有意义很多,比如说C与C++,最根本思想的不同是面向过程与面向对象的不同,C++跟C#、Java,最根本的非托管与托管的不同,而php体现的是动态的思想,F#体现的是函数式的思想等。从这个层面上理解,我想会更深刻很多。

  回复  引用  查看    
#20楼2008-09-10 22:34 | egmkang      
@中华小鹰
呵呵.
不是太费劲了,是太他妈的好了.从那个时候,我就爱上C语言了.
简洁明了,功能强大....................
OO是一种思想,跟语言无关的.如果真正掌握了OO,就是用C语言,也能写出来封装的很好的代码;如果没有掌握,就是用C#有这样优秀语法的语言,写出来的还是那个鸟样.
动态的我的体会不是很多.这两天用JS,感觉JS的OO就是相当的动态.也算是开阔眼界了.

  回复  引用  查看    
#21楼[楼主]2008-09-10 22:40 | 中华小鹰      
@egmkang
是啊,我觉得目前学语言,最根本的还是C语言。
非常同意OO是一种思想,跟语言无关这句话。

  回复  引用  查看    
#22楼2008-09-10 22:52 | egmkang      
@中华小鹰
我是高中学QB,java的.学的不深.
大学苦学三年C#,到现在发现走了很多弯路.要是当初选择C的话该有多好.
后悔不已....哎

  回复  引用  查看    
#23楼2008-09-11 08:15 | zeus2      
@egmkang
Vista Notepad是用的MFC还是直接SDK ?

  回复  引用  查看    
#24楼2008-09-11 08:48 | 蜗牛身上的一只蚂蚁      
你确认谭的那本C写的非常好?????
不知哪个大侠说过..这书害了多少人....

  回复  引用  查看    
#25楼2008-09-11 08:55 | 球球      
其实学完C直接学JAVA或者C#就可以了,C++那东西碰了以后陷得太深。
  回复  引用  查看    
#26楼2008-09-11 09:02 | egmkang      
@蜗牛身上的一只蚂蚁
:-),这个就不知道了.我电脑上面2003+SUSE.有一次cp同学的Vista的notebook.exe想reflector,可是居然没有CLI header.我当时就就对.NET没信心了.而且遇到MS的人事,也说MS内部其实C/C++是居多的,.NET很少.
你若想研究,查看一下依赖就知道了.我觉得SDK居多.
@zeus2
非常同意

  回复  引用  查看    
#27楼2008-09-11 09:11 | love&tiger      
那么早就接触编程了呀
  回复  引用  查看    
#28楼[楼主]2008-09-11 09:56 | 中华小鹰      
@蜗牛身上的一只蚂蚁
我是看过他的书好几遍的,所以,我想我还是有资格来评价这本书的。到目前为止,我仍然觉得那是一本好书。

  回复  引用  查看    
#29楼2008-09-11 10:12 | 镜涛      
貌似很久的回忆。
  回复  引用  查看    
#30楼2008-09-11 10:17 | 巫云      
真不理解,你们看懂看懂没有。人家2001年就在浙大读大一了。
  回复  引用  查看    
#31楼2008-09-11 10:49 | 非主流程序员      
浙江大学确实是高标准,一上来就英文书。我喜欢双语的,不仅看的过瘾,还可以学学翻译,只是国内太少双语标注的书了。
其实我感觉代码这东西,靠的是领悟和勤奋,看看前几年“熊猫烧香”的作者就知道了,没几个高学历的,但是人家很专。能写出那种病毒的人,C语言和汇编水平已经高不可攀了。而且,那几个年龄也就20来岁。只可惜不走正道。
PS: 浙大确实够前沿的,01年就.NET了。那时可是刚刚出来。

  回复  引用  查看    
#32楼2008-09-11 11:43 | Cat Chen      
@egmkang
拜托……Vista里面大多数自带的应用都是用WPF重写的。Microsoft这样做,就是为了推广.NET,证明连Vista自带的程序都敢用.NET做了,说明.NET确实可依赖而且性能还不错。

  回复  引用  查看    
#33楼2008-09-11 14:17 | 真见      
@egmkang
可能我说得有点那个了,,我意思是微软更注重C#些,我后面强调了主流2个字。

  回复  引用  查看    
#34楼2008-09-11 21:26 | egmkang      
@Cat Chen
呵呵,MVP都出动了!!!!貌似很强的嘛.欢迎欢迎.
请问WPF是什么?WPF基于什么的?到底是谁在屏幕上渲染?
我是一个菜鸟,麻烦帮我科普一下.谢谢.
好不容易问同学要了一个Vista下面的notepad.exe文件.Reflector一下,说是"notepad.exe' does not contain a CLI header".本人不知道什么叫做"CLI Header",所以没办法验证.他说没有那就没有喽.
用UltraEditor分别打开XP和Vista的notepad.exe,一片数字,就挑一两个重要的吧.XP下面有这样的:55 53 45 52 33 32 32.Vista里面也一样,没仔细看多了什么.

用Dependency Walker分别打开XP的notepad.exe,Vista的notepad.exe和我自己写的两个C# 2.0程序(一个Console,一个GUI程序),查看依赖.XP下面的全部正常,Vista的(在XP下面查看的)有6个分红的不知道是什么??我想USERS32.DLL应该算是比较重要的吧??再来看看自己写的两个程序,没有一个程序直接依赖什么GDI32.DLL,USER32.DLL,直接依赖的只有mscorlib.dll.我想请问一下,mscorlib.dll是什么东西???麻烦科普一下.
还有,为什么Vista的notebook.exe里面会有这东西: CreateWindowEx,RegisterWindowMessageW,DrawTextEx等等?难道.NET写出来的程序会有这么先进??

猛然间发现一个小小的记事本,居然需要148KB.考虑到内存对齐,其绝对的尺寸绝对不下于100K.本人比较菜,写出来的程序从来没上过100K.其中有一个上过100K,那是因为有很多的字符串常量存在.难道MS的人实现一个记事本需要100KB的二进制代码????

我菜头一个,有什么说的不对,欢迎斧正.

  回复  引用  查看    
#35楼2008-09-11 21:32 | egmkang      
@真见
MS的C#只是Web和Win32 UI的开发利器,当然仅限于手写代码.当然,这是个人看法.
说道主流,我不知道Java,C/C++跟C#相比,哪个更主流一些???
http://www.javaeye.com/news/3451
这个网页你看过没有??

  回复  引用  查看    
#36楼2008-09-11 22:07 | egmkang      
@Cat Chen
把我写的所有的东西当作字符串str;
str=str.Replace("notebook","notepad");
汗一个先,跑到%WinDir%下面一看,居然不是notebook.exe..........居然是notepad...

  回复  引用  查看    
#37楼2008-09-11 22:39 | 藏积      
确实很强,看来我也要多看点英文原著了!
  回复  引用  查看    
#38楼2008-09-11 23:47 | 真见      
@egmkang
失敬了,你应该是大学生吧,,不然不会了解C++,C++我没接触过,不过照MS的更新勤奋来看,他相对来讲应该是注重C#些,,我相信那个网页,但我也相信国内C#比C++用得多,,因为在我的想象中搞C++搞得好肯定是30出头的人了,你也看到了,博客园这个.Net社区写的绝大部分文章都是C#的。

  回复  引用  查看    
#39楼2008-09-12 08:48 | hoodlum1980      
@egmkang
这有什么奇怪的,一个商业用的应用程序,才100kb,代码量又不算大。我记得写一个pda程序,几万行的代码编译出来就是100多k了。

  回复  引用  查看    
#40楼2008-09-12 09:17 | egmkang      
@真见
:-)
20出头,感觉比我猛多了嘛.失敬失敬.你应该也是大学生吧?
我没说过我了解C++.我看过一点语法,感觉复杂程度相对于我的智慧(我还有么?)还是太难了.我想我即使30出头,C++应该还是newbie一个吧.
最要命的是,我到现在还是OB,OO一点都不懂.哎,没救了.
MS是一个精力旺盛的中年男子,哈哈.不过跟他在屁股后面跑,还倒是蛮累的.还好,我就学了C#2.0. 3.0等上几年再说吧,2.0的东西已经很好了,很够用了.要3.0的干什么??
其实MS每次更新.NET Framework,都会伴随着C/C++编译器的更新.VC6.0的时候,MS感觉就是在单干.VC7.x之后,MS的C/C++编译器对标准支持越来越好.我想这里面的辛苦成分不可能是C#编译器那五人组(应该是五个吧)所能比拟的.从VC6.0的不标准向C++09甚至以后C++0x的迁移,难度那是相当的大.希望MS不要放弃努力,希望MS拥抱标准.这样对大家都有好处.
再说两句废话,.NET更新是快,现在貌似也开源了.但是你要想到.NET只是对旧有的东西的再封装.我记得我曾经研究过.NET 2.0的Array类的排序,因为我想看看快排到底是怎么个样子的,然后就一直跟踪,发现绝大部分的排序,都会去调用TrySZSort()这个静态外部方法.表面的东西可以给你看,真正核心的,没门.........

  回复  引用  查看    
#41楼2008-09-12 09:26 | egmkang      
@hoodlum1980
看来这位老兄没听懂我说的话.
大凡应用类程序,都不是从最底层干起.你写一个记事本,总得要一些类库之类的支持吧???
notepad若是用.NET写出来的,那么只需要依赖mscorlib.因为.NET封装了相当多的实现细节,所以要是.NET写出来的notepad,我就要怀疑,这个仅仅是一个notepad么??一个notepad没有多少需求的,用了.NET你都要100K+,难道你想实现一个简单的Word??哈哈.
notepad依赖MFC,那是不可能的.因为我还没有发现哪一个版本的Windows自带MFC的运行库.
notepad依赖API,也就是用SDK写出来的.那么他才有可能达到100KB的二进制代码.因为mscorlib封装那些细节实现,他都需要自己去实现.
不知道现在说明白了么?
你也说的很明白,一个几W行代码PDA程序编译出来100K左右.那么,你想过没有,让你去实现一个记事本,需要几W行代码??

  回复  引用  查看    
#42楼2008-09-12 11:59 | hoodlum1980      
@egmkang
--------------您老兄说的意思我不明白。也不想说下去了。用SDK写程序并不需要把系统的一些随操作系统发布的DLL静态链接进去,这就是DLL被微软提出来的原因。

--引用--------------------------------------------------
真见: 铁 [未注册用户]
<br>晕,,有人不是说学习C语言的人要么是失业要么在学另一门语言么,这说的可是很有道理地,,而且C++能做的事情C#不是照样做吗,而且C#主流多了。。。
--------------------------------------------------------
这个见解。。。从观点上来看有些问题。设计目标和适用场合不一样,其实可以认为没什么可比性。如果我要争辩c++就是比c#好或者c#就是比c++好是一个毫无意义的事情,所以如果我要列举c++实现起来方便,c#实现起来困难的例子就没太大意思了。

  回复  引用  查看    
#43楼2008-09-12 12:05 | hoodlum1980      
--引用 egmkang--------------------------------------------------
你的意思我有点明白了,你觉得一个记事本只需要几k甚至几百bytes就能搞定的事情。但我认为你过于低估记事本程序的功能了。这里面也需要很多算法和特别处理的。至少搜索,替换,插入,删除,拖动文本,处理大文本,不同编码,换行等等。一个软件从demo到要能用还是需要很多细节工作的。

  回复  引用  查看    
#44楼2008-09-13 18:13 | egmkang      
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1288571




相关文章:

相关链接: