Hello World
Spiga

分类:语言编程

在QCon中了解到的一些有关Groovy和F#的内容

2010-04-24 01:39 by 老赵, 3386 visits
摘要:今天参加了QCon Beijing 2010的活动,第一天采访了Groovy和F#两种语言的技术领袖,在交流的过程中了解了不少内容,趁着还有一些印象就记点下来吧。Groovy方面这次来的是社区中贡献最多(没有之一)的Paul King,他也是《Groovy in Action》的作者之一。F#方面参加QCon的是Timothy Ng,年轻高大帅气,生于香港,四岁去加拿大,毕业后加入微软至今,目前是F#开发团队的Senior Dev Lead。与Tim晚餐时聊了许多,最大的收获是……发现我的英语也不是太哑巴嘛。 阅读全文

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

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

幻灯片:Why Java Sucks and C# Rocks

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

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

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

编程语言的发展趋势及未来方向(2):声明式编程与DSL

2010-04-14 21:24 by 老赵, 17047 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。在上一部分中,Anders指出语言本身在过去的数十年里并没有明显的发展,并给出了他眼中编程语言发展趋势的预测。在现在的第2部分中,Anders将阐述声明式编程的理念及DSL,并演示C#中一种内部DSL的形式:LINQ。 阅读全文

编程语言的发展趋势及未来方向(1):历史回顾及趋势概述

2010-04-13 00:52 by 老赵, 20470 visits
摘要:这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲。由于最近我在博客上关于语言的讨论比较多,出于应景,也打算将Anders的演讲完整地听写出来。我希望这个讲座可以从侧面回答某些朋友关于“语言讨论是否有价值”的疑问,并且展示出目前语言的发展状况以及微软在这方面的努力。完整内容将分为多次发表,每天一小部分,每次大约10分钟的演讲内容。等不及的朋友也和可以下载演讲视频一睹为快。现在的第1部分则包含Anders对编程语言发展的历史回顾,以及对趋势简单概述。 阅读全文

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

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

F#与ASP.NET(2):使用F#实现基于事件的异步模式

2010-04-05 20:37 by 老赵, 1825 visits
摘要:在上一篇文章中,我们的简单讨论了.NET中两种异步模型以及它们在异常处理上的区别,并且简单观察了ASP.NET MVC 2中异步Action的编写方式。从中我们得知,ASP.NET MVC 2的异步Action并非使用了传统基于Begin/End的异步编程模型,而是另一种基于事件的异步模式。此外,ASP.NET MVC 2对于这种异步模式提供了必要的支持,使此方面的程序设计变得相对简单一些。但是,简单的原因主要还是在于已经由其他组件提供了良好的,基于事件的异步模式。那么现在我们就来看看一般我们应该如何来实现这样的功能,以及F#是如何美化我们的生活的吧。 阅读全文

F#与ASP.NET(1):基于事件的异步模式与异步Action

2010-04-02 00:09 by 老赵, 3760 visits
摘要:提高ASP.NET应用程序伸缩性的有效手段之一便是使用异步请求。而在ASP.NET MVC 1中是不能直接支持异步Action的,因此我们需要使用一些简单的Hack方式来实现这一点。不过简单的Hack毕竟无法利用ASP.NET MVC的完整功能,幸好ASP.NET MVC 2已经正式支持ASP.NET中的异步请求处理方式,并且通过一种比较易于使用的方式提供给开发人员使用。只可惜,由于语言层面的约束,这种使用方式还是有些不便,而此时便是F#的用武之地了。 阅读全文

最容易令初学者混乱的F#命令

2010-03-31 12:36 by 老赵, 1946 visits
摘要:话说,其实我也是F#的初学者,至少相对于C#等语言来说一定是这样的。而对于初学者,或是C#和F#混用的程序员来说,我认为最F#中最容易令人混乱的命令是Reference Cells的取值操作了。下面便详细谈谈这么说的原因,及建议的应对方法。 阅读全文

F#中的异步及并行模式(3 - 下):代理的进一步使用

2010-03-21 18:19 by 老赵, 2619 visits
摘要:之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中,我们会来探索F#中轻量级的,交互式的代理,以及与代理有关的一些模式,包括隔离的内部状态。(译注:由于原文内容较多,译文拆成两段进行。在上半段文章中讨论了代理的基本使用方式,而下半段则讨论关于代理使用中更进一步的模式。) 阅读全文

F#中的异步及并行模式(3 - 上):代理的基本使用

2010-03-15 01:35 by 老赵, 3999 visits
摘要:之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中,我们会来探索F#中轻量级的,交互式的代理,以及与代理有关的一些模式,包括“隔离的内部状态”。(译注:由于原文较长,因此译文分为两段,目前是第一段,讲解了F#中异步代理的基本使用方式。) 阅读全文

F#中的异步及并行模式(2):反馈进度的事件(包含Twitter示例)

2010-03-08 00:33 by 老赵, 5006 visits
摘要:上一篇文章中谈到,“异步CPU并行”与“异步I/O并行”两个模式的限制之一便是无法通知组合操作的进度或结果。在这篇文章中,我们讲关注一个常见的异步模式:反馈进度的事件(Reporting Progress with Events),这是一种用于强大而优雅的做法,用于在某个边界之后对并行的执行过程加以封装,并同时汇报执行的结果或是进度。在文章最后,我们会使用这个设计模式开发一个示例,从Twitter中获取一系列记录。 阅读全文

F#中的异步及并行模式(1):并行CPU及I/O计算

2010-03-03 23:37 by 老赵, 7326 visits
摘要:F#是一门并行(parallel)及响应式(reactive)语言。这个说法意味着一个F#程序可以存在多个进行中的运算(如使用.NET线程进行F#计算),或是多个等待中的回应(如等待事件或消息的回调函数及代理对象)。 F#的异步表达式是简化异步及响应式程序编写的方式之一。在这篇及今后的文章中,我会探讨一些使用F#进行异步编程的基本方式──大致说来,它们都是F#异步编程时使用的模式。我们从两个简单的设计模式开始:CPU异步并行(Parallel CPU Asyncs)和I/O异步并行(Paralle I/O Asyncs)。 阅读全文

为什么JVM上没有C#语言?浅谈Type Erasure特性

2010-02-22 23:50 by 老赵, 10991 visits
摘要:JVM上目前已经有许多语言了:JRuby,Jython,也有一些特定于JVM平台的语言,如Scala和Groovy等。但是,为什么JVM上没有C#语言呢?按理说,这门和Java十分相似,却又强大许多的语言更容易被Java程序员接受才对。有人说,Sun和微软是对头,怎么可能将C#移植到JVM平台上呢?嗯,有道理,但是为什么社区里也没有人这么做呢(要知道JVM上其他语言都是由社区发起的)?其实在我看来,这是受到了技术方面的限制。例如:Type Erasure。 阅读全文

哥谈的是语言,不是寂寞

2010-02-20 21:48 by 老赵, 11491 visits
摘要:经常看到一些文章在谈论语言,例如“哪个语言更有前途”,“语言选择是否关键”。我是个语言粉丝,但是看到这些文章总有一些奇怪的感觉。因为在我看来,这些文章谈的东西都不是我眼中的语言——可能与国内技术环境有关,语言本身被淡化了,例如,谈语言的时候涉及更多的却是“平台”方面的内容。那么我现在便来描述一下我眼中的“语言”该如何谈论吧——下次在我猛砍Java语言时也好有个参考。 阅读全文

人肉反编译使用yield关键字的方法

2010-01-26 00:06 by 老赵, 8853 visits
摘要:我认为这是一个真命题:“没有用.NET Reflector反编译并阅读过代码的程序员不是专业的.NET程序员”。.NET Reflector强大的地方就在于可以把IL代码反编译成可读性颇高的高级语言代码,并且能够支持相当多的“模式”,根据这些模式它可以在一定程度上把某些语法糖给还原,甚至可以支持简单的Lambda表达式和LINQ。只可惜,.NET Reflector还是无法做到极致,某些情况下生成的代码还是无法还原到易于理解——yield关键字便是这样一个典型的情况。不过还行,对于不复杂的逻辑,我们可以通过人肉来“整理”个大概。 阅读全文

按月统计博客园单个用户的发文数量

2010-01-11 00:07 by 老赵, 6289 visits
摘要:这几天在家闲着,便试着写一些小程序。之前有朋友问到“F#能不能写Web”,于是我也就打算这么一试。虽然我能肯定,用F#写Web应用程序不会是问题,不过倒真还没有做过这方面的尝试。我想,如果用F#写Web应用程序,那么它很重要的一点,应该是利用其在异步编程方面的强大特性。最后我决定,使用F#编写一个按月统计博客园单个用户发文数量的简单服务。尝试的结果是——还有些问题没有解决。不管怎么样,我先把其主体逻辑描述一下吧。 阅读全文

浅谈代码的执行效率(2):编译器的威力

2010-01-08 00:06 by 老赵, 10907 visits
摘要:在上一篇文章中,我主要表达了这样一个观点:影响程序效率的关键之一是算法,而算法的选择与优化,和是否多一个赋值少一个判断的关系不大。关于算法的选择,我谈到其理论上的复杂度,并不直接反映出效率。因为在实际运用时,数据的规模,形式等等都会涉及到算法的实际效用。一个时间复杂度低的算法并不代表任何情况下的效率都高。这是“实际”和“理论”的区别之一。现在我打算来谈一下另一个比较“实际”的东西:编译器对于程序效率的影响。 阅读全文

浅谈代码的执行效率(1):算法是关键

2010-01-07 17:14 by 老赵, 13718 visits
摘要:前一段时间在博客园里看到这样一篇文章,那位兄弟谈到程序效率的关键是“简短”。他说,“程序越简短,其可执行代码就越少,就越有效率”,而在编写程序的时候,“要尽量改进我们的算法,而改进算法中最重要的一条,就是减少语句”。这句话从表面上似乎正确,但我认为性能这问题不能用“简短”这种方式去思考,否则会进入一些误区。我整理了一下思路,希望可以从几个方面把详细谈一下这个问题。首先我想说的是:“简短”不是关键,“算法”更加重要。 阅读全文
使用Live Messenger联系我