.NET作为一个成熟的开发平台,为很多语言的发展提供了肥沃的土壤:历史相对久远的有Managed C++、C#、VB.NET、J#,正值壮年的则有IronPython、IronRuby,而老赵极力推崇的F#则是后起之秀了。面对那么多的语言,选择自然也是一个难题。在大部分开发人员眼中,C#是最为正统的.NET语言,它几乎是为.NET而生的,语言版本更替的速度与.NET Framework相比,一点都不含糊,这不,C# 4.0都出来了。因此,C#通常都是.NET开发人员的首选语言。但是,掌握了C#之后,如果您希望学习多一种语言以增强解决问题的能力;如果您希望了解更多有关编程范式的内容;如果您希望了解DLR甚至编译器的设计;如果您希望……那么,IronPython将会是您的最佳选择,它就像是叮当的万能口袋,只要您伸手,您就会淘到想要的宝贝。

有关IronPython的历史,我在这里就不赘述了。简单的说,它是Python语言在.NET上的实现,既保持了Python所崇尚的编程哲学(想了解它?打开IronPython的控制台,在提示符之后输入import this,出现在屏幕上的就是著名的The Zen of Python),又为.NET开发人员带来了新鲜的开发模式。IronPython与传统的.NET开发语言不同,它是一门解释型的动态语言,也是一门多范式编程语言。尽管解释型、动态与多范式都是非常简单的词汇,但是它能够为开发人员带来更为直接了当的解决方案。譬如,在C# 3.0才引入的Lambda表达式以及闭包(Closure),而IronPython早已极好地支持这些体现了函数式编程的特性。即便是现在,使用IronPython实现闭包、duck typing以及运行期绑定都要比C#和VB.NET来得更为直观。也许您对会“直观”这一点不以为然,而事实上,我们在编写程序的时候,除了要让计算机为我们工作之外,还要让他人能够轻松地阅读我们的代码。作为程序员,我们都知道代码的可读性以及可维护性是多么重要,如果从一个软件的生命周期来看,升级与维护是软件最大的开销。您还记得KISS原则么?是的,就是Keep It Simple & Stupid。IronPython可以帮助我们实现这美妙的“亲吻”,真正去拥抱编程。

除了为开发人员带来更高的生产力之外,IronPython的出现也让“.NET平台糅合各种编程语言”真正实至名归。想必大家都会记得,早在.NET平台诞生之初,它所推崇的多语言协作理念是其最大的噱头。然而,.NET所述的多语言协作性仅仅体现在IL的层面上,那么在实际的项目开发当中,又会有谁愿意同时使用C#和VB.NET进行开发呢?由于IronPython是一门解释型语言,利用它来实现某些不稳定的业务逻辑就再适合不过了,省却了编译的过程,即改即运行。更重要的,我们可以在C#代码当中直接调用IronPython的代码!这些特性都让IronPython完全能够胜任C#左膀右臂的角色。

听Michael罗嗦了那么多,您是否觉得IronPython正是自己的新欢呢?觉得上述文字空洞无物?好吧,最后给大家送上两段代码,Code will tell.

代码一,实现了“把一个字符串数组中的元素转化为整数,再将其中的偶数放入一个List<int>容器中”的功能,C#版的代码可以参考老赵的文章《拯救C# 2.0,但是我们真做的到吗?》

>>> strArray = ["", "", "", ""]
>>> intArray = [int(i) for i in strArray if int(i) %  == 0]

代码二,实现了“找出长度较短的字符串”的功能,C#版的代码可以参考Klesh.Cn精心翻译的好文:C#和Java的闭包-Jon谈《The Beauty of Closures》 中的Example2b.cs 和Example2c.cs:

>>> SampleData = ["the", "quick", "brown", "fox", "jumped","over", "the", "lazy", "dog"]
>>> maxLength = raw_input("Maximum length of string to include?") 
>>> maxLength = int(maxLength)
>>> shortWords = [i for i in SampleData if len(i) <= maxLength]

出处:http://www.cnblogs.com/perhaps/archive/2010/04/23/1718261.html

作为.NET程序员,您需要IronPython么?的更多相关文章

  1. 总结一下ERP .NET程序员必须掌握的.NET技术

    总结一下ERP .NET程序员必须掌握的.NET技术,掌握了这些技术工作起来才得心应手   从毕业做.NET到现在,有好几年了,自认为只能是达到熟练的水平,谈不上精通.所以,总结一下,自己到底熟练掌握 ...

  2. 程序员必备,C#各类项目、开源项目插件资料收藏

    一.AOP框架     Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面 ...

  3. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  4. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  5. 传播正能量——做一个快乐的程序员

    引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...

  6. SQL Server 致程序员(容易忽略的错误)

    标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...

  7. 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波

    注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...

  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  9. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

随机推荐

  1. Linux下,部署多个Tomcat

    1.复制一个已有的tomcat,并重命名: 2.打开tomcat--conf--server.xml:[共修改3处配置] <Server port="8005" shutdo ...

  2. 【BZOJ4928】第二题 树hash+倍增

    [BZOJ4928]第二题 Description 对于一棵有根树,定义一个点u的k-子树为u的子树中距离u不超过k的部分. 注意,假如u的子树中不存在距离u为k的点,则u的k-子树是不存在的. 定义 ...

  3. 【BZOJ4785】[Zjoi2017]树状数组 树套树(二维线段树)

    [BZOJ4785][Zjoi2017]树状数组 Description 漆黑的晚上,九条可怜躺在床上辗转反侧.难以入眠的她想起了若干年前她的一次悲惨的OI 比赛经历.那是一道基础的树状数组题.给出一 ...

  4. mysql时间相减的问题

    MySQL中时间不能直接相减,如果日.分.时不同,相减结果是错误的 mysql> select t1,t2,t2-t1 from mytest;   +--------------------- ...

  5. Eclipse下使用maven搭建多模块项目

    暂时将项目分为如下几层: domain(域模型层).dao(数据库访问层).service(业务逻辑层).web(表现层),有需要再另行添加(如common等): 目录结构: 一.app 该层为父层, ...

  6. Arrays类--Arrays.asList()方法使用

    java.util类 Arrays java.lang.Object——java.util.Arrays public class Arrays extends Object 此类包含用来操作数组(比 ...

  7. React-Native在gitHub下载的Demo不能运行问题!!!

    1.目前找到的最可行的运行React-Native Demo的解决方案 请参考:http://blog.csdn.net/shubinniu/article/details/52873250 2.检查 ...

  8. Full卷积 Same卷积 Vaild卷积

  9. Linux项目部署发布

    Linux项目部署发布 1.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper pip3 install -i https://pypi.douban.com/sim ...

  10. persisted? vs new_record?

    https://joe11051105.gitbooks.io/you-need-to-know-about-ruby-on-rails/content/activerecord/persisted_ ...