Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2255172
  • 博文数量: 292
  • 博客积分: 10016
  • 博客等级: 中将
  • 技术积分: 3381
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-06 11:26
文章分类

全部博文(292)

文章存档

2011年(1)

2010年(4)

2009年(3)

2008年(6)

2007年(47)

2006年(63)

2005年(168)

分类: C/C++

2006-11-12 10:51:35

作者:孟岩
 
C#你真的入门了吗?
                                    
孟言:大家下午好,又是我给大家主持这一期的访谈节目,今天我邀请到大名鼎鼎的韩磊,他一方面是CSDN的运营者,另一方面是著名的技术专家,前不久他翻译了一本书,叫《Beginning C# Objects》,当时我知道的时候很诧异,我不知道为什么他在这样一个位置上还去作这样一个事情,后来他跟我讲了,他认为这本书很有意义,对于C#对于编程很有意义的一本书,今天请他来给我们介绍一下为什么要翻译这本书,有何意义?那韩磊你先给我介绍一下你为什么会想起来翻译这本书,因为这本书在我们看来是初级到中级的一本书。
   
韩磊:看起来对一个译者来讲不是一个讨好的事情。
   
孟言:对,不是一个扬名立万的书。
   
韩磊:这本书我拿到的时候他有800页厚,我前后翻译这本书也经过了波折,你在做一个面向初学者的一本书,看起来不太讨好,最初我知道这本数之后,我知道博文有这本书之后我就要拿出来,从我作CSDN的网站开始,我就强烈感受到中国的开发者或者世界的开发者对编程或者认识普遍来讲不是很乐观,我感觉大家对面向对象这种感觉还不够深入,在具体的语言上还有怎样去面向对象很多人还欠缺一个很基本的概念或者对一个有几年编程经验的人也有这种问题。
   
孟言:对,你说的这种现象其实我也感觉到了,随着现代的开发供给越来越完善,就是很多人在不了解具体原理的情况下,三下五除二就残除一个应用了,那么作为初学者不失为是一个快速入门的好方法,但是作为专业的开发者,长期处于这个状态的话,他加入一个Team之后,他写的代码会成为一个长期的隐患。
   
韩磊:对,是一个巨大的隐患,现在的IDE开发工具或者一些方便的IDE会人你拖拉的方式去写代码,相当于IDE给你提供了一块一块的砖头让你去砌房子,但是这样砌出来的房子肯定不会太高,你可以做一个简陋的雏形,做一个简陋的窝棚,但是你想起一个帝国大厦,中央大楼根本不可能,因为真正的程序是需要一个很好的架构,很好的面向对象的一种东西,不是说靠一个IDE拖来拖去就能盖起高楼大厦了。
   
孟言:对,不错,有很多人在一知半解的情况下,“try and test”,还有人作CSS,他有的时候就那么几个参数,他一个一个去试, 试完了之后他觉得哪个达到它的要求效果就去用了,事实上有很多人都还不了解这个的试剂机制,我的朋友当中作web开发的也不少,还有很多人都受到这个拖拉的影响了,我相信你在CSDN已经作这个不少时间了,你有没有观察到我们的开发团队有这样的现象?
   
韩磊:其实我们的开发团队也有这样的问题,拿到开发平台之后有两个极端,一个是SP那套方式,到后来有一段时间太喜欢面向对象,所以必须以对象来面向。
   
孟言:没错,那可能很难把握,这本书虽然是面向初级和中级这样的一本书,但是他在解释面向对象这方面确实有独特之处,或者说他把这个事情讲清楚了,那您能给我们讲一下,你把这本书翻译清楚了,那他面向对象到底是怎么一回事?
   
韩磊:其实我有很多年的开发经验,翻译之后给我的感觉就是C#你入门了吗?我确实没有入门,他给我的感觉就是恰当的应用,不能滥用,我觉得滥用就是你去开发,加入他有一个很大的访问量的站点,那这中间有很多的转换东西,这样东西去转换页面,这中间也损耗了很多的性能,其实面向对象是贯穿于其中,而不是说整篇文章去搞成数据库这样面向对象是不对的,这本书在教你他分做几个部分,第一就是怎样去面向对象,第二就是怎样去架构或者设计应用程序,第三部分就是把所谓的UMS的蓝图转换。
   
孟言:对,你刚才说的阶段我相信不管是作什么语言,很多人都经过过这个阶段,我自己是C++,我们曾经都走过极端,我们如果不用面向对象,就会有一种负罪感内疚感,其实我觉得这些都是一个阶段,如果走过这个阶段这本数该能够帮助大家认识这个事情了。
   
韩磊:对,你说的这个负罪感特别有意思,负罪感是对于是谁?你是对于这个语言的发明者有负罪感吗?这就错了,你要对这个项目的甲方有负罪感那就对了。
   
孟言:对,就像你刚才举的例子,在这个web应用中间作多层,这个层与层之间毕竟有耦合,这个耦合下来肯定经过数据库多变的翻译就上去了,好象用这种方式的人特别多。那段有一段时间就是在道德尚处于居高临下的感觉,现在大家还是觉得以实用为本,如果大家看到很早的看到这本书的话,肯定可以帮助大家纠正一些问题?
   
韩磊:对,我可以改正一些错误的思想,你怎么用面向对象去搞他?或者你解决问题的领域怎么去坚固。
   
孟言:你说的这个问题是面向对象中最难的问题,这个就是思想基础大厦的问题,这个问题也不是非常的完备,你刚才提到的就是面向对象业务的一个领域。我曾经给人举过一个例子,我们称它为对象,如果在一个公司里面就是要考虑这个凳子的面积体积损失以后的报价,这是物流公司要考虑的,可是如果是商场里面,他考虑得就是厂商款式出厂价这些,对于同一个本质的东西在不同的环境里面他是有不同的属性的,那么如果在一个游戏里面这个凳子可能会被作为杀人工具,它的重量等等就很重要了,所以你根本不可能对这个对象把他所有的方方面面全搞到位,这是不可能的,在业务环境当中去解决这个问题。
   
韩磊:我记得这本书第一章他就举出个例子就是什么是面向对象,就是在荒郊野地的一块地,那每个人去看看到不同的东西,生物学家就看到生物多样性,有花有草有鱼,建筑工程师看到了就是能把这快建设的多好多好,那小孩去看就是说我在这个树上建设一个树屋怎么样?其实每个人去看一个客观世界的事物的时候,他对这个东西的认识是不一样的,属性也是不一样的,小孩他理解的就是树屋,建筑师理解就是高楼大厦。
   
孟言:对,你还记不记得,咱俩90年代末期的时候,当时我们可能在接触面向对象了,现在看来可能误导了很多人,我们现在说面向对象是为了对客观世界建模,没错,这是客观世界的优势,那么需求发生一些变化的时候,所以你的改变就不会大,这个想法带来很多副作用,就是很多人拿来一个项目之后,根本不会去想项目的具体需求,就是开始对项目的建模,而且他根本不知道这些建模的属性和方法,所以他导致最后建了很多方法都是没有用的,对,大概98年的时候之后uml提出,我觉得uml最大一个特点就是Access很重要。
   
韩磊:对,Access包括uml包括传统方案里面,很重要的。一定是一个使用的场景。
   
孟言:他是告诉大家即使是在面向对象的世界里面你也要用户故事来导向。
   
韩磊:对其实开发方法都是对客观世界的一种翻译,我是搞语言出身的,我经常将语言的一种例子,当时的建模是对客观世界的一种抽象,其实翻译里面损失了很多东西,程序员或者比较好的程序员应该决定损失了什么东西,保留了什么东西,所以我的确很统一就是当时在uml方法出来之前,大家还不大理解整个系统架构的时候,那个不叫滥用是叫用的无法无天。
   
孟言:对,很多人都为了写自己的应用程序,大量的重复和稀奇古怪的域名,我觉得经历过那个年代的人都彻悟了这些问题。现在的程序员没有经历过那些事情,一上来就有语言,还有我现在关注的Ruby,好象什么东西都不用你自己去写了,这样的事情事情就会走到另外一个事情,它实际上是把面向对象当成基础类库,我用基础方法去缠。
   
韩磊:对,有大量程序员都是这样想的,我觉得程序员特别是入门级的程序员,就是我希望以后建的是自己的一个窝棚还是一个高楼大厦,如果真的是高楼大厦就是基础的知识是要怎样去掌握,这本书我觉得好处是正确的去教给你观念,而不是拖一个东西过来去双击,我们现在也是这样作,uml或者C++现在拖一个按纽过来就好了,但是你要明白,你拖一个按纽就是委托应用的一个东西,当年我们在作花窗口的时候,很多人还会去创造一个窗口,语言的窗口等等,没有这个按纽没有那个按钮,其实里面蕴含了很多很多面向对象的知识。
   
孟言:对,windows系统的一些。
   
韩磊:对,看起来很麻烦的东西,但其实是整个系统运行的机制。
   
孟言:对,你这谈的就是怎样成为一个高级程序员的问题了。你以前是搞越南语的,编程语言你大概学了集种?
   
韩磊:我是foxpro入门的,java也搞过,C++我做过一些,我自己玩自己在一些设备上作着应用,然后就是C#。
   
孟言:我学的跟你的数量差不多,其实我觉得学成一本语言没有现实社会上说得那么轻松,但实际上我不知道你是不是这么看这个问题,刚才咱们说的那些语言没有一个语言是轻松就能学好的。
   
韩磊:其实学一门语言是非常简单的,无外乎就是语法和词汇,但是如果你能把词汇和语法都记好了,你一样讲不出地道的语言,这个道理是一样的。
   
孟言:对,现在太多人在用这个。
   
韩磊:对,他不会主动去接纳你的观点,如果你学一门语言如果不能在段时间内不能用外语去撰写很好的文学作品,那么同样你学计算机语言同样不能够用语言去撰写很好的应用程序。
   
孟言:没错,刚才列举的五六个语言,我对C++还是很有信心,但是对其他的可能没有太足的信心,大量的实践广泛的思考去阅读,我觉得作为一个程序员还是应该去into。
   
韩磊:对,我真的觉得追的很辛苦,但是回过头来看,他中间的变化正好给程序员一些很好的启示一些机会,所以我觉得那个框架编程,这是一个畅销好的书,这是一个好的现象。
   
孟言:对,说说C++,第一我对他没有很好的印象,第二就是我读过这本书,我一直觉得这个语言的设计就是说,我们把现在的语言分为三层,我们把最底层的语言就是C++的语言,中层的语言就是java,和C#,我觉得在中层语言来说C#编程超级无敌一霸王三千这种趋势,你刚才提到3.0,我想很多人都会有兴趣,他2.0已经加进去了,4.0可能正在往里加,至少他在语法层给你一个很动态的感觉,实际上有一个问题是这样的,其实就我所知,很多程序员连2.0都还没有消化好,这个让我回想起C++,作为C#的程序员应该是怎样的?
   
韩磊:当时2.0已经出来了嘛,就是可以不限制与现在和未来的东西,当然你用了的确可以提升你的能力。
   
孟言:还是应该限制有利我们就用。
   
韩磊:对,而且现在技术圈里也有人对它有一些看法。
   
孟言:我们这随手插一句,就是他根本不了解访问数据库是一个非常好事的东西。
   
韩磊:对,那相当可怕。你自己觉得还挺好的,但是用起来就非常可怕,漏洞非常多。C#是一个中层语言,你还是要考虑的,我看到一本书就是祭司,圣殿祭司,他写了一本2.0的书,他就没有告诉你从头到尾的步骤,还有微软作的就比较好。
   
孟言:没错,我觉得现在有很大的问题就是你可以为项目忙忙碌碌,也可以为项目去采用一些做法,那么你必须要拿出一些经理来去用心的作,这个基础还是最重要的。
   
韩磊:对,有读者就问我,我买这本数到底合适不合适?我说很难讲合适不合适,他适合两类人,一类就是我不知道如何去编程序,第二类人就是在C#这边还是有点欠缺。
   
孟言:马上微软就要推出他的新的平台了,我现在已经用IE7.0了,web开发的领域未来的方向,还有你觉得微量的位置是怎样的?
   
韩磊:那天孙辉过来提到一点就是IE6.0和IE7.0分开了,这代表微软在操作系统更紧密的去支持网络,将来有两种东西,一种就是微软去实现IE的浏览器特性,在新的Vista上面,很多东西都具有浏览器的界面了,很多程序都具有浏览器的界面,直接可以访问网络,或者你没有连上网,就是本地你都可以去作,这也是一种东西,web开发是一种大的趋势,大家都要刷新了,我原来写过一篇文章叫做隔夜炒的鸡蛋饭,其实很早就有了,在几年以前就有了,但是现在又火起来了,我觉得未来这会是一个趋势,你作的东西也许会是一个趋势,所以原来C#或者.net,他这个东西之前应该是完全没有的,他是基于一种刷新的东西,但是不是一定要用微软的体系呢?这个很难讲,因为他有各式各样的开源框架,但是都能够帮助你完成任务,最好的用户体验,我觉得C#会是程序员的首选,这个应该注意。
   
孟言:说到这个作为web的方向,我倒有一个问题向跟你探讨,我感觉最让人痛苦的就是脚本调试还有撰写,当我们熟悉的Java还有C#它的模型很清晰,他是很全面的语言,这个事情会持续很久吗?Java当年是一个急救章,尽管他后面作了很多改进,急救章就是急救章,他等于是早产儿,不可能继续下去。
   
韩磊:对,这个不会一致持续下去,他是在逆反潮流,你在其他部分都很爽就在这个部分不爽那肯定是这个有问题,如果想的比较远一点的话,你在服务器端的代码会很好的解决他这个问题,如果你运行一个很好的代码也可以用C#来使用的话,这就是一个很好的问题。
   
孟言:对,我记得几年以前就讨论过这个事情,你刚才提到的很多应用程序很容易就可以访问web,其实这样的一个景象实现了以后,我们又何必局限在浏览器里面的东西呢?并且很容易跟程序去整合去应用,而且浏览器有两方面,一方面就是极大的丰富了我们生活的方式,C#这种模式改变了我们开发图形界面的应用,另外一方面C#加大几家厂商之间的关系,使他很长时间以来到现在我们也没有看到他们跨平台的很漂亮的界面端。
   
韩磊:对,这个还是一个平台的问题。
   
孟言:我觉得这一页能够越早翻过去的话,对我们开发者越是一个好事情。
   
韩磊:对,这个对开发者或者对厂商来讲都是一个好事情。
   
孟言:对,先修出来,然后再开源或者干吗。
   
韩磊:搞IT不要犯政治化,第二不要犯道德化,不要说微软就是邪恶的,开源就是不邪恶的,就是说当我们去批评微软去操作系统垄断的时候,操作系统去变迁,其实真的是这样的,在windows出来之前大家用的都是各式各样的操作系统,其实在web端也是一样的,在web一个巨大的问题就是在于他出来的太快了,还有就是不够统一,而在这之前,每家都要作不同的浏览器,所以我觉得将来如果web真正去集成到一个系统里面,对微软肯定是一个好处,那么Java所谓的就是一次编写到处运行,理念是非常好的,假如你有一个百分之百的人都去用那你干吗还去考虑其他的呢?
   
孟言:对,Java作为一个很漂亮的图形界面,说句实在话还是挺遗憾的,你刚才已经说到了我们写程序关键问题还是解决IT的问题,等我们这些东西都统一了,我希望看到IT有一个更好的发展,你能不能将一下从业余程序员开始是如果走到现在这个位置?对程序员来说如何往上走?你看我们周围的程序员说比较局限的人还是比较多的。
   
韩磊:对,我感觉这个问题是这样的,不管你作程序也好作事业也好做人也好,你的眼光一定要大,如果你想建立一个程序很好的应用高楼大厦不动摇那你一定要把架构做稳做牢,你将来做一个事业不管怎样你一定要看你对这个事业有没有花很长的时间去搞他,有没有做好这个基础?其实你跟人打交道或者跟人打交道是一样的,这个是做人的基本道理,一个程序员用研究程序的热情去研究和人打交道和事业打交道眼光足够高远,要么就是一直做下去要么由于专座管理,怎么去让这些人很好的执行你的思想,让另一些人去满足,这三类就是去创业,那个要求就更高一些,其实我感觉我是相信世界上道理都是一样的,从我的立场来看都是翻译,人的思想也是靠翻译的,我要请你办一件事情我需要告诉你我的思想,我的翻译能力要非常强,我的思考能力要非常强,一定要很用心的作事。因为你钻进去之后你不要问别人怎么作,开发也一样,开发是解决问题,你得有问题,这个问题一定有解决办法,一定有方法去实现这个方法的流程,最后有方法去遵循这个流程,最终出来的东西至少不会产生坏的结果。
   
孟言:好,今天非常有意思,也很好玩,咱们今天就到这吧。
 
视频:
阅读(2375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~