Hello World
Spiga

标签:C#

挖坟鞭尸:当年Sun公司的白皮书《About Microsoft “Delegates”》

2011-11-08 17:07 by 老赵, 3640 visits
摘要:这是一桩当年的Sun公司与Java的旧事,还要追溯到C#还没出现,微软还在搞J++的时代。这篇著名的白皮书便是《About Microsoft “Delegates”》,其中列出了Sun眼中的Delegate的多个缺点。最后,在白皮书里信誓旦旦地写到:“Bound Method Reference并不是语言发展的正确道路”。我的感觉是:不谈Java语言设计者的水平如何,至少这篇白皮书的作者,在语言设计的能力或品味上几乎落后了Anders Hejlsberg十年。从我之前翻译过的一篇文章来看,Anders一直扮演着指引语言发展方向的作用,这也是为什么C#在这十年的发展能比Java要健康得多的主要原因之一。 阅读全文

我在面试.NET/C#程序员时会提出的问题

2011-03-03 07:38 by 老赵, 16551 visits
摘要:说起来我也面试过相当数量的.NET(包括C#,后文不重复)程序员了,有的通过电话,有的面谈。后来发现,其实提的问题来来回回也就那么几个。这些问题有的已经有十年历史了,至少也有三年。我想对于一个“不错”的.NET程序员来说,在简单的提示下绝大部分问题应该可以“对答如流”。可能您也会觉得这些太细节,真要追究起来似乎也大都不是必须的,无视这些照样可以写程序,做网站,赚工资,但是我不会满足于成为(包括招聘)这样的程序员,暂时也懒得解释掌握这些东西的益处和重要性。 每个人都有自己的看法, 一切就看您自己的选择了。 阅读全文

演出季上“异步编程模型的演变”幻灯片

2010-12-11 14:01 by 老赵, 1706 visits
摘要:演出季终于过去了,现在就来做一个收尾吧。这次的主题是“异步编程模型的演变”,主要回顾了微软在.NET平台上异步编程上的进化:基于回调,基于迭代生成器,基于类库,基于语言。不过这样的编程模型其实并非微软独有,而是一些运用比较广泛的异步编程方式,因此在SD 2.0大会上我其实完全用JavaScript进行演示。从结果上来看,除了最早的TUP,其他两场演讲(.NET技术大会和SD 2.0)的反响都不错。 阅读全文

PDC 2010:C#与Visual Basic的未来(下)

2010-11-15 09:47 by 老赵, 2432 visits
摘要:前几天在PDC 2010会议上Anders Hejlsberg发表了一场名为“The Future of C# and Visual Basic”的演说,谈论了未来C#和VB中最为重要的两个特性:“异步(Async)”及“编译器即服务(Compiler as a Service)”。我现在对这场演讲进行总结,但不会像上次《编程语言的发展趋势及未来方向》那样逐句翻译,而是以Anders的角度使用一种简捷合适的方式表述其完整内容。上一篇Anders对async和await的的实现及效果作更进一步的解释,本篇则是对“编译器即服务”做了些最表面的尝试。 阅读全文

PDC 2010:C#与Visual Basic的未来(中)

2010-10-31 13:49 by 老赵, 3109 visits
摘要:前几天在PDC 2010会议上Anders Hejlsberg发表了一场名为“The Future of C# and Visual Basic”的演说,谈论了未来C#和VB中最为重要的两个特性:“异步(Async)”及“编译器即服务(Compiler as a Service)”。我现在对这场演讲进行总结,但不会像上次《编程语言的发展趋势及未来方向》那样逐句翻译,而是以Anders的角度使用一种简捷合适的方式表述其完整内容。上一篇Anders讲述了async和await的使用方式,而这篇则是对这两个关键字的实现及效果作更进一步的解释。 阅读全文

PDC 2010:C#与Visual Basic的未来(上)

2010-10-30 18:43 by 老赵, 4749 visits
摘要:PDC不愧为微软最高级的技术人员专业会议,让我看得直呼过瘾。前几天在PDC 2010会议上Anders Hejlsberg发表了一场名为“The Future of C# and Visual Basic”的演说,谈论了未来C#和VB中最为重要的两个特性:“异步(Async)”及“编译器即服务(Compiler as a Service)”。我现在对这场演讲进行总结,但不会像上次《编程语言的发展趋势及未来方向》那样逐句翻译,而是以Anders的角度使用一种简捷合适的方式表述其完整内容。 阅读全文

Why Java Sucks and C# Rocks(6):yield及其作用

2010-07-18 13:26 by 老赵, 3582 visits
摘要:C# 2.0新增了yield关键字,其初衷是简化迭代器的生成,这可以说是现代语言的标配。只可惜Java历经数次升级,从数量上来说也算增加了不少语言特性了,却还是将这个功能拒之门外,让人费解。除了用于生成迭代器之外,yield还可用于其它一些场景,颇为奇妙。这些场景都是在生产过程中常用的开发模式,只可惜对于使用Java语言的程序员来说都只能望而兴叹了。 阅读全文

Why Java Sucks and C# Rocks(补2):标准事件模型

2010-07-13 01:17 by 老赵, 1927 visits
摘要:这又是一篇“补”,本来并不想写这方面的内容,因为这并非完全是“语言”相关。打个比方,如果您觉得.NET中的事件模型不友好,那么就按Java的做法去做咯(反之就做不到了)。不过既然正好看到有些涉及到这方面的讨论,那么我也趁此机会发表一下自己的看法吧。这次谈的是两种语言(其实在这个话题上也是平台)下“标准”的事件模型。“标准”二字意味着是被双方社区各自接受的模型,而不仅仅是为了实现“事件”这一理念而使用的任意做法。 阅读全文

Why Java Sucks and C# Rocks(5):匿名方法

2010-07-06 06:22 by 老赵, 2354 visits
摘要:确切地说,这里的标题应该是“C#中的匿名方法”,因为这是C#中特有的功能。在之前的文章里,虽然我都用长篇文字加代码示例来说明问题,但总有朋友认为我谈的只是C#和Java的“区别”,算不上优势。不过从这篇文章开始,我们将正式进入C# 2.0的时代,这也是C#大步甩开Java语言的开端——可以看出,Anders Hejlsberg从此开始实现他对于编程语言的各种理想,而并非纠缠于与Java所谓的“竞争”中。例如这篇文章要讨论的“匿名方法”特性,以及随之而来的“函数式编程”痕迹,便开始引领C#在开发理念上的进步。 阅读全文

Why Java Sucks and C# Rocks(补1):Reddit,兼谈C#属性

2010-06-28 06:18 by 老赵, 2309 visits
摘要:最近博客冷清了不少,主要是事情较多,一是.NET交流会,二是工作,三是几篇暂时无法发在博客上的文章。周末在家,发现邮箱里经常收到SlideShare的邮件,说是我的Why Java Suck and C# Rocks幻灯片在推特上很火热。今天早上忽然发现,它被人发到Reddit的编程版块了,讨论地颇为热烈。关于讨论内容,您可以亲自阅读一下。最近的讨论也让我想要补充一些关于C#属性的问题。 阅读全文

趣味编程:在JavaScript中实现简单的yield功能(问题)

2010-06-08 07:33 by 老赵, 3357 visits
摘要:说起迭代器(Iterator)大家一定都不陌生,无论是是Java,C#或是Python等语言都有内置标准的迭代器结构,它们也都提供了内置的for或foreach关键字简化迭代器的“使用”。不过对于迭代器的“生成”,不同语言之间的就会有很大差距。例如,在C#和Python中都提供了yield来简化迭代器的“创建”,此时生成一个迭代器便再简单不过了。但对于Java程序员来说,即使到了Java 7还必须为在迭代器内部手动维护状态,非常痛苦。而更重要的一点是,利用yield我们可以轻松地创建一个“延迟”的,“无限”的序列。那么,我们能否在JavaScript中享受到这样的yield生成器呢? 阅读全文

Why Java Sucks and C# Rocks(4):泛型

2010-05-17 16:23 by 老赵, 3506 visits
摘要:Java 5.0和C# 2.0发布于同一年,各自添加了一个重要的特性:泛型。泛型可以让程序员针对泛化的数据类型编写相同的算法,这大大增强了两种语言的类型系统及抽象能力。不过即便是这看似相近的功能,Java和C#两者在语言实现和功能上也有很明显的区别,这甚至会形成编程方式上的不同。在这里可能需要事先打声招呼,因为在这个特定的话题上,语言和运行时的确是密不可分的,因此在这篇文章中我会涉及到相对较多的“运行平台”上的比较,而这点在整个系列中是我尽量避免的。不过您请放心,只此一次,欢迎监督。 阅读全文

Why Java Sucks and C# Rocks(3):Attribute与Annotation

2010-04-25 15:14 by 老赵, 5263 visits
摘要:上一篇文章里我谈了Java和C#语言中对于基础类型的不同态度,我认为C#把基础类型视做对象的做法比Java更有“万物皆对象”的理念,使用起来也更为方便。此外,C#拥有一个Java 1.4所不存在的特性,即Attribute(自定义特性),而在之后的Java 5.0中也增加了类似的功能,这便是Annotation(标注)。那么,Attribute的作用是什么,Java中的Annotation和C#中的Attribute又有什么区别呢,Java 5.0中又从C# 1.0中吸收了哪些优点?我们现在就来关注这方面的问题。 阅读全文

Why Java Sucks and C# Rocks(2):基础类型与面向对象

2010-04-20 15:44 by 老赵, 4943 visits
摘要:既然已经谈过这次语言比较的意义与目的,而完整的幻灯片和录音也已经放出,那么接下来自然是详细讨论了。在这篇文章中,我会对两个语言的基本特征进行简单描述,并主要讨论两者对于基础类型的处理方式。在我看来,Java语言对于基础类型的处理方式,并不如C#中值类型般妥当。如果您有任何觉得不妥或是想要补充的意见,请不吝回复。由于C# 1.0发布于2002年,因此本文内容将基于Java 1.4及C# 1.0的情况。 阅读全文

幻灯片:Why Java Sucks and C# Rocks

2010-04-18 09:52 by 老赵, 7788 visits
摘要:昨天在5173与博客园联合举办的技术交流活动中进行了演讲,现在幻灯片终于可以放出了。当然,光看幻灯片本身的效果不大,在演讲过程中我进行了非常多的代码演示和说明,幻灯片本身只能算是一个提纲,因此各位没有来听演讲的朋友,还是等我慢慢地对这个话题进行详细讨论吧。只是有些话我不得不说:Java平台的开放只能反衬出一些Java粉丝的狭隘心态和视野,我一个封闭的微软平台的封闭的.NET程序员,如果心态和眼界都比您要开阔,这难道不够讽刺吗? 阅读全文

Why Java Sucks and C# Rocks(1):比较的意义与目的

2010-04-16 15:48 by 老赵, 10656 visits
摘要:消息发布之后,许多朋友都表示对我这个主题的关注——无论是正面还是负面的——这让我很高兴。不过说实话,我原本并没有打算写这篇文章。我原本的打算是从一开始就进行技术方面的讨论,但是大家在前文的反馈让我把一些问题想得更清楚了,也认识到有些东西可能需要先说在前面可以有更好的效果。希望各位朋友可以继续给我一些反馈,这样我可以在必要的时候进行补充更完整的内容。这次的话题很有价值,我想把它做的更好。 阅读全文

演讲预告:Why Java Sucks and C# Rocks

2010-04-11 08:49 by 老赵, 6963 visits
摘要:怎么样,这个标题是不是足够吸引眼球?嗯,我下个星期便打算在5173和博客园举办的技术交流会上讨论一下这个话题。原本这是一个为盛大创新院内部分享交流会准备的内容,不过正好5173要举办一个技术交流会──还有比那儿更适合这个话题的地方吗?直到现在,还有许多朋友认为,Java语言和C#的区别并不大,也有人认为C#只是语法糖比较多,没有什么特别的——而我现在便打算详细阐述C#是如何改变开发人员“编程理念”及“思维方式”,并在生产力上大大超越Java语言。我也打算在会后将这个内容详细地总结成一系列文章,除了发表在博客上,还会转载去一些Java开发社区,看看那儿的弟兄们对这个话题会怎么看。 阅读全文

二十行C#代码打造Ruby Markup Builder

2009-10-26 16:47 by 老赵, 17676 visits
摘要:从.NET诞生之日起就有了XML类库,但是从使用上来说非常不方便,许多行代码只能构造一个简单的XML对象。这个情况在.NET 2.0中也没有得到改变,直到有一天,LINQ to XML随.NET 3.5横空出世,于是乎XML的生活一下子变得美好了很多。与DOM API相比,使用LINQ to XML,无论是XML的构造还是读取都容易了许多。不过俗话说得好:“不怕不识货,就怕货比货”,这样的API与Ruby Markup Builder相比还是有明显差距。但是我们这些可怜的C#程序员难道只有在一边眼馋的份吗?不见得。 阅读全文

C#编译器对泛型方法调用作类型推断的奇怪问题

2009-08-20 08:50 by 老赵, 4656 visits
摘要:范型是.NET平台上重要的功能,范型即为一个“不确定”的类型。C# 3.0中加强了对于类型推断的力度。但是C#的代码推断作的相当不完整,刚才我又遇上了一个奇怪的问题。 阅读全文

适合C# Actor的消息执行方式(6):协变与逆变

2009-08-03 01:19 by 老赵, 6261 visits
摘要:在上一篇文章中,我们实现了一个简单的爬虫,并指出了这种方式的缺陷。现在,我们就来看一下,如何使用C# 4.0中所引入的“协变和逆变”特性来改进这种消息执行方式,这也是我认为在“普适Actor模型”中最合适的做法。这次,我们动真格的了,我们会一条一条地改进前文提出的缺陷。 阅读全文
1 2 Next >
使用Live Messenger联系我