小弟今年大三,在一所名不见经传的二本高校就读软件工程专业.个人兴趣关系,课余时间一直在学习Asp.net技术,现在进入了学校的网站开发小组,做了两个简单的项目,感觉自己Asp.net技术一直在实践过程中进步(感谢CSDN提供的帮组).感觉很美妙.然而个人认为Asp.net属于比较高层的开发技术,门槛相对较低,会类似技术的人随便都可以抓出一大把.所以更向往于接近底层的技术,比如算法、汇编等。但又觉得学习过程中缺乏真正意义的实践机会,比如编写一个走迷宫的算法和帮学校做一个网站,两者都是实践过程,但觉得后者来得更有意思。或者是学习较底层技术,需要更长的周期才能到达真正意义的时间阶段?总结:向往更底层的技术,然而学习过程中又感受不到学习高层技术时带来的快乐。所以困惑自己因改如何选择技术路线?

解决方案 »

  1.   

    真正的东西是在你身边而你不能意识到的,那些“汇编、算法”对你来说是另一种时髦,追求到它你会陷入与现在一样的困惑。你之所以觉得大家都很容易用asp.net搞出点小东西,是因为像datagrid之类这些组件很多。但是,大家之所以都没有突破也是因为永远不摸组件设计的门槛,你不能自己开发一个有创意的东西也让千百万程序员去用你自己的成果。技术,不在于你学到了多少东西,而在于你做出了多少东西。
      

  2.   

    真正的ASP.NET门槛一点都不低!你仅仅是跨入了MS推荐的ASP.NET中的RAD开发方式门槛,正如楼上 sp1234(如果大就都是为了写个网站自娱自乐,永远不能进入asp.) 说的,你觉得ASP.NET容易是因为你可以拖放控件,你放个DataGrid就实现了以前ASP程序员几小时的工作,但如果要你写个DataGrid呢?自己要开发一个Web控件甚至革新Web开发技术确实比RAD要难,但起码这在.NET中是可以实现的。首先说说Web控件开发,仅仅是一个合成控件可能还容易,但如果要写一个FreeTextBox就不那么容易了。其实如果原理弄懂的话,HTML Editor是很容易做的,而FreeTextBox的难度就在于它要以ASP.NET的方式来提供编程接口,同时它还有良好的设计时支持。至于革新Web开发技术,这就更难了,要求你用Reflector去看.NET代码和理解ASP.NET内部的运作原理,然后添加更好的技术方法,例如Community Server就能够不基于ASP.NET 2.0而用自己的方法去模拟了MasterPage。如果楼主对“底层”有兴趣,就应该去研究ASP.NET的底层,例如HttpHandler、HttpModule,有关的Parser和CodeDOM,aspx解释编译方式,等等。我搞了4年的ASP,然后转过来又搞了2年的ASP.NET,至今仍然觉得自己不懂ASP.NET呢,因为ASP的底层不能动而ASP.NET的底层可以动,所以ASP.NET的可研究深度就比ASP深了n倍。
      

  3.   

    很感谢前辈的指点。看来我自己对技术本身的认识还存在误区,对技术的追求比较盲目。所谓“底层”“高层”只是个好含糊的概念,我本身对Web开发很有兴趣,但有些言论总是说搞Web开发是比较浮躁,比较急功近利。而学汇编、学C、学操作系统才是计算机专业的正道。难道真的是这样吗?
      

  4.   

    web才是互联网的全部啊
    楼主
      

  5.   

    “而学汇编、学C、学操作系统才是计算机专业的正道。”这肯定是有资历没有实力(知识已经是十年前的)的人鼓吹的。这些东西,肯定应该尽量掌握,这就像学习开车的人一定要懂一点道路的基本知识,例如高速路和普通小马路都要分得清楚、懂得规则。但是这些都是简单工具,而且有各种说法。就拿操作系统来说吧!你学了操作系统,现在让你立刻写一个linux下某台(中)机器接视频卡采集和播放图像的驱动程序你能写出来吗?肯定不能。这是因为大学里讲的操作系统也只是入门知识,而且连已经过时或者方法非常不得当。unix源代码已经公开了三十年,对流设备或者块设备的高层读写代码不过几十行,你们写设备i/o程序的时候会首先去读人家的代码认真学习吗?如果大学里有这样的教师能够抛开庸俗的教材直接教你们最实用的技术,你们反而接受不了。这是现实!大学是对教育和赚钱的平衡的结果,教不了多少现实需要的技术,特别是工课的工程技术,特别是软件系统。而asp.net决不比一套 linux 操作系统代码简单。.net framework则更是复杂很多倍。
      

  6.   

    这是一个好贴,建议加入精华区。
    选择学习什么与你的兴趣/条件等都有关系,一般在项目实践中学习比较好。
    要做底层开发C++/VC++相对好些。
    不管学什么,坚持努力,深入学习,总有一技之长,什么学精了都很好。
      

  7.   

    “web才是互联网的全部啊”?不一定,可能在WWW出现之前早有人用这样描述过telnet,呵呵……但反正现在.NET Framework就足够多地方让人去研究的了,MS出于它的暂略部署而推荐大家用RAD方式看待ASP.NET,而实际上除非非常RAD,否则ASP.NET在可维护性上面不必ASP好,甚至可能还要差。RAD的ASP.NET,感觉上就如同那些自称为J2EE却跑在Tomcat上面的小玩意儿,Enterprise在哪?研究深度在哪?
      

  8.   

    首先要明白用ASP.NET技术来干什么?这才是要研究的问题。
    比如用来开发电子商务网站,那么应围绕这个项目去研究。
    又比如高级控件开发。。
      

  9.   

    我和你的处境一样的,我是我们学院网站的主管,一直都是研究.net的,成长的确是烦恼,学校要东西,不能不做,但没办法,做这些已经有些厌倦,因为身边同龄的没有相同的语言,整天都是忙考试,光会考试了,做东西一窍不通,这是事实,各位前辈也别说的太严重,想想你们原来在学校是什么样?
        话说回来,虽然一直在搞.net,但是现在对方向有些迷惑,因为微软自己都没有解释清楚什么是.net,于是一方面继续着,另一方面还要花时间来学其他不会的东西,但是睡觉前常在想,总要精通一门,而且要和自己的价值取向联系起来,看看现在外面的程序员,兼职的时候跟那帮人一起共事过,至少人家每个人都有几根白头发的,看的都对自己未来开始害怕,而且他们都是埋头苦干,自己在学校也一样,一个人没什么,换来的就是能养活自己这个结果,但是对于国家的软件业,看一看,都是做一些中间件的,真正的核心没有,为什么?又要谈教育问题,国外很早就开始评论中国教育问题了,学生上个大学,要么想着以后怎么挣钱,要么想着以后怎么当官,这也不能完全怪教育,因为这是个社会问题,个人是没办法解决的,因此,困惑时要看你的价值取向的,如果你有个天下为公的精神,研究底层的理论和实践,最终和志同道合的搞个名堂出来;要么走大众的路,以后毕业了进公司做个IT民工,混口饭吃吃.
        个人评论一下国内的IT业,成功的真的太少了,微软中国肯定算不上,因为微软不是中国的;联想?只会拼拼装装,用的还是别人的核心;用友?金蝶?只会用别人的平台搞些中间件吃饭;在我有限的视野里能让我能佩服的也就是盛大和华为,尽管盛大当初是做韩国代理,尽管华为有抄袭嫌疑,这些暂不谈,至少核心的东西是自己拥有的,我最佩服的就是这一点!想想当时盛大和韩国闹翻,但很快,一个壮观的研发场面是让人不会忘记的,核心的代码,程序员和游戏界面制作人员的敬业,之间的合作,很感人的;华为顶着压力,搞网络设备的核心,终于让思科承认,有了做思科的对手的资格,也许有人还是会说华为抄袭,但我个人观点是,有本事你们那些说人家抄袭的人,也去把Windows的核心抄过来搞搞呢?!有本事也去把Intel的技术抄抄?能么?不能,所以这些人还是站在旁边别说话的好。
        一不小心发了这么多牢骚,都是个人观点,想骂的给个脸,就别在公众场合骂了,也希望和各位交流,尤其和楼主处境离奇的相同,所以,想交个朋友
    [email protected]
      

  10.   

    微软是否解释清楚了什么是.net,这至少与听众的目的有一些关系。大学,特别是工程有关的专业,之所不可能教会学生最直接的工程技术,我看,主要是学生基本上学不进去,其次才是教师水平问题。而且除了这个角度,我发现很难说清楚现在的国内学软件的大学生还能怎样找对努力的方向。我真的认为大多数学软件的学生浪费了父母的钱。当然既然学完了,就应该努力自谋生路,不要怨天尤人。
      

  11.   

    我赞成外国教材好,但不是从逻辑清晰这点出发,而是外国教材能够遵守人的认知过程,先给感性认识再给理性认识。就好象最近dearbook推的那本《You can do it》的C++教程一样,开篇就让你调用作者弄好的绘图库,用起来就有点像Logo那样,但每一句命令的结果都是很直观的,这就让人很快有感性认识,然后再通过人的模仿和创造能力去加深理解。但中国的C++教程则不是,所有东西分开章节来讲,任何一章的习题都是脱离实际的完全为了训练该章重点的,作为学生的做完基本上没有任何的成就感。我现在大二,觉得计算机系读的东西基本上是泛泛而谈,但也只能这样。如果没有比较好计算机领域基础的人读计算机,我相信他前两年读的专业课基本上是无法把知识串起来的,全部是割裂的知识点,不同专业课之间好像完全没有联系一样,大三以后怎么样我就不知道了。所以读计算机基本上就靠自己弄,否则知识将快速遗忘或者过时,没用的。不过自己弄也有自己弄的难处,就是你在大学里面很难找到水平相当能够和你沟通的人,除非是非常好的大学(北大清华复旦上交等),常上来CSDN泡泡保持“头脑清醒”吧,否则有基础的人也给现在大学教育的“拉平补齐”给害了!
      

  12.   

    我从自学方便的角度给个建议楼主吧,自学的东西必须能够快速融入你原来的知识结构体系,自学一门全新的课程是比较难的,所以如果要搞底层就应该“逐步深入”。如果你想搞汇编和算法,可以从ASP.NET开始进入研究.NET Framework,然后研究.NET的IL,再深入研究IL和CPU指令之间的关系,这过程中你也能够了解到不少算法的东西(如果不是做研究或者搞竞赛,认真研究算法是没可能的,了解表面就可以了)。同时你又可以尝试同过ASP.NET,了解HTTP/FTP/POP3/SMTP等常用网络协议,然后再到TCP协议等网络底层知识。不脱离你现在的知识体系去学习的好处是,你学的东西容易融入,也就容易马上应用到你当前的工作中用于扩展你的项目的性能(有时候这显得很花哨,但你用过的技术才算真正掌握),随着你把该项技术用的越来越多,你也就越来越熟悉了。
      

  13.   

    两种不同的东西,又何来相同的底层?玩汇编,是好事。但不可能就做那么一样东西,全都是用它来写。比如编绎器(扯到这个,国人有多少个可以写出来的?烦麻举个手。我敢保证在坐各位没有一个!).net有它的底层(相对而言)。C++也有它的底层(也是相对而言)。只是相对于做不同的东西而已。我们做东西,不是谈什么东西好不好,而是谈这东西这工具,我们可以用它来干什么,你想用它来实现什么!