本文是从 My love… for Expressive Programming Languages 这篇文章翻译而来。
我的编程之旅从少年时代就开始了,那时学的是GW-BASIC。很快,我学习了C语言,之后是C++。C++里提供的面向对象的语法结构让我印象深刻,但是,对于有些像定义范围控制的概念我还是觉得有些复杂。接着开始学习Java。我立即被它从C++提炼出的更优秀、更简练的语法所吸引。
那时我还在上学,所以,肤浅的学习(准确的说是试图学习)一些编程语言是一项有趣的事情。我翻看了一些PHP和Javascript资料。我又开始跟C#接触。这种语言还在发展进化。网上盛传C#是微软的Java。这让我更让我想学C#和深入的了解.NET框架。这时LINQ(语言集成查询)出现了,这个东西很不错。我很高兴它能被简洁的引入到C#中。C#3.0中增加的各种对LINQ的支持,包括lambda表达式,隐式类型变量,匿名类型,查询表达式等等,使LINQ架构更加完美。到我毕业时,我已经是一名经验丰富的面向对象开发人员了。
最近,我考虑学习一些语法更加晦涩的语言,就像Jquery的“write less, do more”的口号(尽管Jquery并不是一种语言)。我研究过Python和Ruby,但没有发现什么令人兴奋的。我偶然发现了Scala语言,决定下一个任务就是学它。
通常在学习一门新的编程语言时,我很少去注意这些语言的句法结构(for,if,function/class定义等)。经过了很长一段时间后,我越来越注意一种语言这方面的特点。所以看书时,关于这些结构方面的章节不再轻易跳过。
我正在阅读Scala编程,作者是Martin Odersky,他是这门语言的缔造者。到目前为止,Google Books里已经有很多关于学习Scala的教材。如果你已经学过Scala,你现在应该能理解我为什么说这种语言神奇了。
使用富表达性语言的原因
当实现某个任务时,唯一能让我拒绝使用富表达性语言的理由是,也许你也猜到了,是性能问题。你拿LINQ和通过循环收集数据进行比较,循环会更快些。你需要根据自己的情况来判断,除非有很高性能要求,其它的问题可以忽略不计。