.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. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  2. 【python】-- RabbitMQ 安装、基本示例、轮询机制

    RabbitMQ MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可 ...

  3. redis持久化AOF详细操作步骤

    1.切换到redis目录下面,创建文件 s3-redis.conf 2.编辑文件s3-redis.conf 3.终止当前redis服务端 4.登录redis客户端失败,说明服务端已停止 5.重启red ...

  4. Virtualbox报错------> VirtualBox虚拟机下鼠标不正常的解决方法

    在Virtualbox虚拟机下,突然发现鼠标使用不正常.出现2个鼠标,一个是Ubuntu主机下面的鼠标,一个是Window7下的鼠标,但是Win7下的鼠标不可以看得到,但是点击鼠标左右键可以看到有反应 ...

  5. ZOJ - 3537 Cake (凸包+区间DP+最优三角剖分)

    Description You want to hold a party. Here's a polygon-shaped cake on the table. You'd like to cut t ...

  6. 【WEB】高并发Web服务的演变-节约系统内存和CPU

    目前主流浏览器通常可以存在2-6个并发. 连接和请求,占据了服务器的大量CPU和内存等资源.在资源数目超过100+的网站页面中,使用更多的下载连接,非常有必要. 缓解“高并发”的压力的手段. 一. W ...

  7. 选股公式blog+节选

    <大智慧软件选股_大智慧软件如何选股>——一般性操作 http://jingyan.baidu.com/article/fa4125acb2028d28ac70923e.html < ...

  8. 获取android模拟器的IP地址

    http://blog.csdn.net/yjkwf/article/details/7244632 1.输入adb devices查看加载的设备 2.使用 adb -s [设备] [命令]执行命令 ...

  9. 小程序 requestAnimationFrame 死循环

    小程序没有requestAnimationFrame  这个方法,小游戏有,使用这个方法会造成死循环

  10. iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 && 编写通用类的时候关于可变参数的处理

    开始 我  以为 这个 alertView 里面 ...的写法  应该 是一个 普通的数组  然 并没有 分享一篇好文 http://www.tekuba.net/program/290/ IOS实现 ...