2012年/08月/10日

首页回退

面向语言编程

jetbrains CEO的文章

https://resources.jetbrains.com/storage/products/mps/docs/Language_Oriented_Programming.pdf

http://www.onboard.jetbrains.com/articles/04/10/lop/index.html

Ideally, being a programmer means I can do anything on a computer. I have complete freedom, complete control. But in reality, programmers today have very restricted freedom. Sure, I can do anything on a computer, but some things take me years of effort when it should take much less time. Something is wrong here.
Programmers are restricted because they are heavily dependent on programming infrastructure which they cannot easily change, namely the languages and environments that they use. If I want some extension to a language, I must wait for the language designer to update it. 
If I want some extra power from my IDE, I must wait for the IDE vendor to add the new features. It is this dependence which limits my complete freedom. Sure, I can write my own compiler or IDE. In fact, this is why I started work on IntelliJ IDEA, because I was tired of being dependent on the existing weak Java IDEs. 
But this takes a lot of time and effort and is simply not practical for most programmers. There is a big difference between theoretical freedom and practical freedom. When I talk about freedom here, I mean practical freedom.

理想情况下,作为一个程序员,就意味着我能在计算机上做任何事情,我是完全自由和完全主动的。但是,实际上,程序员只有非常有限的自由。当然,我是可以在计算机上做任何事情的,但是那将花掉我多年的努力。所以,一定有某些地方发生了错误,否则我只需要花费少量的时间就能做很多的事情。

程序员所经受的限制是因为他们不得不依赖于他们无法轻易改变的编程基础架构,换句话说,就是他们所使用的语言和相关的环境。如果我想扩展我所使用的语言,我不得不等待,等待语言的设计者去更新它。如果我想让我使用的IDE有更强大的功能,我也得等,等IDE的开发商去增加哪些功能。

事实上,这就是我为什么要做IntelliJ IDEA的原因。我已经厌倦了现有的功能弱小的Java IDE。但是像我这样做,对于大部分的开发者来说是不现实、要花费大量时间和努力的事情。毕竟,理想的自由和实际的自由之间的差别是很大的。所以,当我在这里谈起自由这个词时,我指的都是实际的自由。