Hello World
Spiga

分类:语言编程

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

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

盛大创新院赞助首届.NET技术交流会 - 演讲录像及下载

2010-06-24 14:40 by 老赵, 6342 visits
摘要:经过几天的努力,终于将盛大创新院赞助的首届.NET技术交流会的演讲录像制作完成了。本来在现在的高清视频以外,我还想像Channel 9一样提供一些低码率的格式下载,但多次尝试都以失败告终,各中滋味难以言喻。因此目前只能给大家提供mov格式的高清视频下载,对于Windows下各类强大的播放器都不成问题。您也可以在线观看这些视频,不过上传至优酷后,发现除了清晰度较低外,甚至还有音画不同步的问题。我正在联系酷六网,会尽快用上质量更好的视频。 阅读全文

盛大创新院赞助首届.NET技术交流会 - 各场演讲幻灯片

2010-06-19 23:48 by 老赵, 3561 visits
摘要:今天是近期最热的一天,气温高达35度,异常闷热,但是依然有160多位朋友冒着酷暑参加了盛大创新院赞助的首届.NET技术交流会,这让我感到很欣慰,因此这里首先要感谢大家的支持。我刚才浏览了一下三场演讲的桌面录像,可谓异常完美,现在只等酷六网的摄影师的讲师录像到手,便可以合成为最终的演讲视频了,希望能够尽快展示给大家。不过现在,大家可以在第一时间浏览本次活动新鲜出炉的幻灯片。 阅读全文

盛大创新院赞助首届.NET技术交流会即将召开

2010-06-17 11:45 by 老赵, 1052 visits
摘要:由盛大创新院赞助的首届.NET技术大会将于6月19号下午1点召开,本次交流会请到了四位讲师,议题覆盖了F#、C#、Rails及架构等多个方面。我已经看过了各场演讲的幻灯片草稿,也很期待各位讲师在正式演讲中的表现。本次大会中,我们还获得了人民邮电出版社图灵教育赠送的20册图书,将会作为奖品赠送给在交流会中表现积极的听众。此外,我们还请到了酷六网的专业摄影师对演讲过程进行全程拍摄,并配合各位讲师自身的屏幕录像,将在后期合成为适合独立观看的演讲视频,让不能到场的朋友在线或是下载后观看。 阅读全文

趣味编程:在JavaScript中实现简单的yield功能(2 - 循环支持及解释执行)

2010-06-11 20:41 by 老赵, 2309 visits
摘要:在上一篇文章里,我们构造了$yield和$yieldSeq两个基础编程组件,于是我们可以“在一定程度上”使用C#中的yield功能来构造一个迭代器。从表面上看来似乎不错,不过它的实际价值还是有值得推敲的。例如,我们目前还必须使用递归来代替循环,那么我们有办法改变这种变成方式吗?此外,在评论中有朋友谈到,这样写代码其实不是一个格式化就混乱了吗?至少,您是否觉得这种编程方法的function和括号实在多了些呢?这次我们就来探索这些问题的解决办法。 阅读全文

趣味编程:在JavaScript中实现简单的yield功能(1 - yield与yieldSeq)

2010-06-10 09:36 by 老赵, 1833 visits
摘要:上文我谈到了迭代器及其生成器,即C#或Python中的yield功能,它们极大地简化了创建一个迭代器的工作,让代码的语义和可读性有了很大提高。虽然在JavaScript 1.7中已经有了相同的功能,可惜目前我们还无法用到这种强大的能力。那么,我们能不能为JavaScript提供如C#中一样的功能?在文章的评论里许多朋友也给出了他们的解决方案,也让我获得了许多启发。因此,我也打算在以后的文章中总结一下各位的做法。不过在这篇文章里,我先来阐述一下我个人的想法。 阅读全文

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

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

浅谈Java 7的闭包与Lambda表达式之优劣

2010-06-06 15:31 by 老赵, 16940 visits
摘要:前几天Oracle推出了Java 7官方的闭包与Lambda表达式的第一个实现,这基本上也是最终在正式版中的样式了。看了这个实现之后,我的第一感觉便是“丑”,当然不排除这是因为看惯了其他语言中实现的缘故。后来再仔细看了看又想了想,发现Java 7的实现也并非毫无可取之处,但似乎又感到某些做法上有一些问题。总之整个过程颇为有趣,决定将我的想法记录下来,希望可以吸引人来一起讨论一下。 阅读全文

编程语言的发展趋势及未来方向(7):总结

2010-06-05 15:53 by 老赵, 11790 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders谈论了“并发”,这也是他眼中编程语言发展的三种趋势之一,并演示了.NET 4.0中并行库的神奇效果。现在则是此次演讲的最后一部分,Anders对整场演讲内容进行了总结和回顾。 阅读全文

编程语言的发展趋势及未来方向(6):并发

2010-05-30 22:53 by 老赵, 10031 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders谈论了“元编程”及他正在努力的“编译器即服务”功能。在这一部分中,Anders则谈论了“并发”,这也是他眼中编程语言发展的三种趋势之一,并演示了.NET 4.0中并行库的神奇效果。 阅读全文

编程语言的发展趋势及未来方向(5):元编程

2010-05-30 17:42 by 老赵, 10561 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders谈及了他眼中编程语言的另一个发展趋势:动态性。在这一部分中,Anders则讨论了动态语言所擅长的“元编程”,并简单介绍了他为静态类型语言所设计的一种改进方案:编译器即服务。 阅读全文

编程语言的发展趋势及未来方向(4):动态语言

2010-05-23 22:16 by 老赵, 12804 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders谈及了声明式编程的另一个重要组成部分:函数式编程,并使用.NET平台上的函数式编程语言F#进行了演示。在这一部分中,Anders讨论了动态语言及JavaScript的相关内容,“动态性”也是Anders眼中编程语言的发展趋势之一。 阅读全文

2010年5月《程序员》杂志“架构师接龙”栏目中的问答

2010-05-21 09:48 by 老赵, 4306 visits
摘要:上个月《程序员》杂志向我约稿,希望我可以参加5月份的“架构师接龙”栏目,我略为犹豫了一下便答应了。“架构师接龙”是一个问答形式的栏目,每期由一个人提问,并由另一个人回答。回答的一方便是下期的提问者。这次提问的架构师是新浪微博的技术经理杨卫华。他提出的问题包括语言选择与架构设计、NoSQL存储方案的取舍、微博类系统的架构等多个方面。杨卫华是国内技术社区一等一的高手,这使得我在回答问题时更有小心翼翼地班门弄斧之感。如果您对某些问题感兴趣,也不妨来一起讨论一下。 阅读全文

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

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

盛大创新院赞助首届.NET技术交流会开始报名了!

2010-05-13 14:30 by 老赵, 3760 visits
摘要:自从上次在博客中提到盛大创新院赞助.NET技术会议已经过去了一个半月,如今这件事情终于落实了。我为此准备了数千字的申请书,但老大看也不看便表示支持。他的说法是,只要办得热烈,有影响力,那么这样的活动绝对支持。为此,各场次演讲内容及会场等诸多事宜之后,现在“首届.NET技术交流会”正式进入报名阶段了。人数不设上限,多多益善,怕只怕会场会显得空旷。除了.NET社区的群众以外,也欢迎其他技术社区的朋友前来参与交流。事实上,我组织技术交流会的目的之一便是希望能够促进.NET社区与其他技术社区的交流及相互学习。 阅读全文

使用.NET 4.0中的表达式树生成动态方法

2010-05-13 01:03 by 老赵, 8133 visits
摘要:为了在模型为dynamic类型的视图中使用一个匿名对象,我们在上一篇文章里为匿名对象创建了对应的动态类型。于是在使用时,我们会创建动态类型的对象,然后将匿名对象的属性赋值给动态对象的公开字段上。在赋值时我们使用了反射,再加上这个方法使用比较频繁,因此使用更好的方法来优化性能便是个很自然的选择。在.NET 1.0中,我们需要Emit;在.NET 2.0中则增加了DynamicMethod,相对简化了单个动态方法的创建过程;在.NET 3.5中则增加了可编译表达式树,可谓前进了一大步——那么在.NET 4.0中呢? 阅读全文

当类型为dynamic的视图模型遭遇匿名对象

2010-05-11 10:16 by 老赵, 9603 visits
摘要:当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错。不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型实在是太麻烦了,因此也出现了基于SmartBag等折衷方案。强类型是一种极端方案,而在C# 4.0中我们又可以使用另一个极端,那就是让Model成为dynamic类型,这样在视图中便可以完全自由地获取数据了。不过,在使用匿名对象的情况下视图会抛出奇怪的“无法找到成员”异常,我们必须解决这个问题。 阅读全文

编程语言的发展趋势及未来方向(3):函数式编程

2010-05-04 19:09 by 老赵, 21042 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders阐述了他眼中声明式编程的理念及DSL,并演示C#中一种内部DSL的形式:LINQ。在这一部分中,Anders谈及了声明式编程的另一个重要组成部分:函数式编程,并使用.NET平台上的函数式编程语言F#进行了演示。 阅读全文

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

2010-04-25 23:14 by 老赵, 11353 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中吸收了哪些优点?我们现在就来关注这方面的问题。 阅读全文
使用Live Messenger联系我