Hello World
Spiga

分类:.Net框架

在.NET平台下使用C#交互式控制台(上):简介

2011-09-01 00:25 by 老赵, 8681 visits
摘要:上周日在广州的珠三角技术沙龙上,我的演讲题目是“Mono之于.NET程序员”。Mono一直是我十分喜爱的产品,我也一直关注它的发展,总有很多人用各种方式对它进行FUD,甚至是.NET程序员自己。这其实跟程序员使用盗版一样,自掘坟墓,是种无比愚蠢的行为。在演讲中,我提到.NET程序员可以如何从Mono项目中得到帮助,现在便以C#交互式控制台为例,演示下在.NET平台下使用Mono项目的常见方式。 阅读全文

IBM面试记

2011-07-02 23:29 by 老赵, 35175 visits
摘要:话说其实我很久没有被正经面试过了。一开始去微软实习自然经过了经典的笔试和几轮面试,然后去了朋友的创业公司并立即被激动集团收编——没有面试,接着从激动集团去合伙创业——没有面试,然后被朋友推荐去盛大创新院——面试更像是讨论及聊天。由于长久缺乏职场磨练,我虽然对自己能力有一定能力,但也怀疑自己如果通过“正经渠道”去面试的话能有多少机会成功。这次面试IBM终于算是过足了面试瘾,记录一下。 阅读全文

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

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

分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发

2011-01-13 23:35 by 老赵, 6631 visits
摘要:在许多年前,“语言”就等同于“平台”,例如C,C++以及最早的Ruby和Python等等。但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多。再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂。技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上。简单地说,如今的观念,一定要从“语言即平台”切换成“语言及平台”,当分清“语言”和“平台”这两个不同事物之后,许多问题才能讨论地清楚。而且,这点对于.NET程序员来说尤为重要,因为C#语言可以说是目前“平台”、“实现”最为广泛的“语言”之一了。 阅读全文

第三届nBazaar技术交流会开始报名

2010-12-21 00:45 by 老赵, 2671 visits
摘要:为了错开年底密集的技术会议,第三届nBazaar技术交流会(即前“盛大创新院赞助的.NET技术交流会”)将于2011年1月15日举行。第三届的交流会将继续以往四场高质量的演讲,这也是确定nBazaar名称之后的第一次活动,希望nBazaar能够真正成为“集市”般热闹的社区活动。从现在开始,nBazaar技术沙龙的相关信息将逐渐集中至独立域名中,欢迎关注。 阅读全文

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

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

服务器端执行JavaScript代码

2010-11-09 18:11 by 老赵, 16601 visits
摘要:话说,如今不在客户端使用JavaScript代码才是稀奇事儿。由于Web应用的体验越来越丰富,客户端用JavaScript实现的逻辑也越来越多,这造成的结果就是某些几乎一致的逻辑需要在客户端和服务器端各实现一遍。这违反了DRY原则,不容易维护。幸运的是,我们可以在服务器端执行JavaScript代码,谁让JavaScript傍上了这无比霸道的浏览器平台呢? 阅读全文

Silverlight与微软技术(下):微软技术与技术学习

2010-11-04 18:57 by 老赵, 8334 visits
摘要:经常听到有人说微软的技术变化太快,持续性不好,让程序员追得很累。这种观点在微软技术社区内部和外部都有出现,似乎是一个不争的事实。但从我追随.NET平台这近十年的时间里,我并没有明显的感觉。微软的技术的确很多,但至少在.NET领域过渡性做的非常好,我没有任何疲惫之感。微软技术开拓了我的眼界,让我在微软内外许多技术方面越来越少有“新奇”的感觉,一切都是那么自然和稳妥。我现在就来仔细谈谈我在学习微软技术方面的经验与感受。 阅读全文

关于DLR及.NET版本的问题

2010-07-26 21:12 by 老赵, 4708 visits
摘要:动态语言运行时(Dynamic Language Runtime,DLR)是一套基于.NET的类库,它的作用是简化在CLR上开发动态语言的工作,例如DLR中提供了表达式树的创建,代码生成、优化及调试等实现动态语言的常见功能,而语言的编写者则着重关注解析器等方面的工作。不过最近接触了观察了DLR代码之后,却发现它和各版本.NET中BCL的协作还真是件不容易理清的事情。 阅读全文

NDC 2010视频下载:看看其他微软平台程序员们都在做什么

2010-07-13 15:13 by 老赵, 5496 visits
摘要:NDC(Norwegian Developers Conference,挪威开发者大会)是一年一度的挪威最大的微软平台开发者大会,内容丰富,讲师阵容强大。NDC与PDC同为高端技术会议,但NDC与PDC的不同之处在于,PDC是微软官方会议,主要是面向微软资深产品的深入探讨。而NDC涉及的内容则广泛的多,包括了我所感兴趣的Java、Mono、IronRuby/Ruby on Rails、NoSQL方面的内容。这也就像我一直强调的那样,微软技术社区非常开放,微软平台上的太多程序员都能够非常热情地拥抱其他平台的技术。那些认为微软技术社区是井底之蛙的兄弟,殊不知你们的嘲笑只能体现出自身的狭隘。 阅读全文

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

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

为什么我支持托管运行时(虚拟机)

2010-07-01 11:37 by 老赵, 6422 visits
摘要:最近博客园上在炒关于C#性能的问题,其实应该说是.NET性能的问题,其中某位仁兄提出,他希望C#能够直接编译为原生代码,而不是在CLR这样一个托管运行时上执行,因为虚拟机啊,JIT什么的性能差。后来发到TL上以后,也有朋友认为,“基于虚拟机的语言都是大公司为了利益在推动,说白了就是政治”,因此“对C#提高性能的建议感到可笑,因为它本来就不是用来开发高性能程序的”,再有,“C、C++已经明确不和这些后进争所谓的‘容易开发’的头衔”,那么其他语言为什么要和C++它们比较性能呢?我是托管运行时,或者虚拟机的忠实拥护者,这里谈一下我在这方面的看法。 阅读全文

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

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

盛大创新院赞助.NET技术会议意见征询

2010-03-26 15:31 by 老赵, 3775 visits
摘要:各位可能大都知道,我于不久前加入了盛大创新院。最近我了解到,创新院这边对于社区开展技术会议的活动也是相当支持的,并且对每个社区的会议会有资金和人员上的支持。这几天我和副院长聊了一下,他表示只要组织得当,创新院也支持把技术交流会办成一个有规律的活动,定期举行。事实上,创新院已经赞助过多次Flash及产品设计方面的技术会议。当然,会议的目的是进行技术交流,对观众自然是完全免费的。因此,我打算在5月或6月份在上海举办一次.NET技术会议,在此征求一下您的意见。 阅读全文

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

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

浅谈字节序(Byte Order)及其相关操作

2010-02-10 23:05 by 老赵, 10760 visits
摘要:最近在为Tokyo Tyrant写一个.NET客户端类库。Tokyo Tyrant公开了一个基于TCP协议的二进制协议,于是我们的工作其实也只是按照协议发送和读取一些二进制数据流而已,并不麻烦。不过在其中涉及到了“字节序”的概念,这本是计算机体系结构/操作系统等课程的基础,不过我还是打算在这里进行简单说明,并且对.NET中部分类库在此类数据流处理时的注意事项进行些许记录与总结。 阅读全文

李笑来激起千层浪,赵姐夫力拒众强敌

2010-02-03 00:49 by 老赵, 14755 visits
摘要:昨天晚上,李笑来(@xiaolai)老师的无心之语却引起了推特上一次前后长达1个多小时的讨论——当时他似乎只是随手发了一句“Apple告诉我们的铁律是:表面功夫一定要做足”便不见了踪影,但是这句话立即引起了众果粉的共鸣。此后,我(@jeffz_cn)的一句评论又引起了众人对微软开发平台的批判之声。在这次讨论中,几乎只有我孤军奋战为.NET平台进行辩解。因此事后有人给出一副对联为此次争论作出总结:李笑来激起千层浪,赵姐夫力拒众强敌。 阅读全文

数组排序方法的性能比较(5):对象大小与排序性能

2010-01-29 00:09 by 老赵, 7183 visits
摘要:在我公开测试结果之后,有朋友也进行了其他测试。在测试中我使用的是int数组,经过分析之后我们了解到Array.Sort对于int数组有特殊的优化。于是,某些朋友使用了一些引用类型的数组进行排序,得到Array.Sort方法的性能落后于LINQ排序——虽然由于测试方式的问题,这个结果和结论都不太妥当。不过在讨论的过程中,我们都意识到了一个问题:在其他条件不变的情况下,引用类型的字段越多,Array.Sort方法所需时间就越久。这次我们就来讨论一下这个问题。 阅读全文

数组排序方法的性能比较(4):LINQ方式的Array排序

2010-01-28 00:06 by 老赵, 7063 visits
摘要:经过前两篇文章的分析,我们已经了解了Array.Sort与LINQ排序两种实现方式的差别:前者直接比较两个元素的大小,而后者先选出每个元素的“排序依据”再进行比较。因此,虽然后者需要相对较多的“周边工作”,但由于每次比较时都可以仅仅使用高效的基础类型(如int),因此从整体来看,两者的性能高低难以辨别。不过,既然我们已经了解LINQ排序“高效”的原因,又能否将其利用在数组排序上呢?程序是人写的,此类问题大都有肯定的答案。那么我们现在就来实现一下。 阅读全文

数组排序方法的性能比较(3):LINQ排序实现分析

2010-01-27 00:02 by 老赵, 10100 visits
摘要:上次我们分析了Array.Sort方法的实现方式,并了解到类库会为一些特例而使用高性能的排序方式——int数组便是这样一例,因此从测试结果上来看其性能特别高。不过从数据上看,即便是在普通的情况下,Array.Sort的性能也比LINQ排序要高。不过也有朋友从测试中得出的结论正好相反,这又是为什么呢?那么现在,我们再来分析一下LINQ排序的实现方式吧,希望这样可以了解到两者性能差别的秘密。 阅读全文
使用Live Messenger联系我