易用包括:
1. 简洁,易读、易理解、易写;
2. 一致性好,易协作,易接手维护;
3. 基本构造紧凑;
4. 尽可能自包含,拥有丰富的类库和软件包支持;
5. 可移植,对执行环境的假定越少越好;
6. 从编写到执行,整个过程涉及的工具越少越好,程序易部署;
7. 手册可随手取用。
灵活包括:
1. 伸缩性好,删除依赖性与加入依赖性一样简单;
2. 允许在不同层次上抽象(含DSL);
3. 支持多种编程范式;
4. 尽可能适用于更多的领域;
5. 可定制语言子集(方言);
6. 可编译执行,也可解释执行。
高效包括:
1. 编写快,越快越好(考虑工具支持与纯手写);
2. 编译快,越快越好;
3. 除错快,越快越好;
4. 执行快,越快越好。
还有一些特性没有罗列出来。仔细考虑一下,上述各特性不乏相互对立的,如何取得平衡,完全视应用环境而定。这些特性考量将与设计哲学相互影响,最终决定一门编程语言的编写风格与使用方式。
但终究,一门编程语言被设计出来的主要目的,是在成本最小化的基础上,尽可能好地解决某些问题。
另外,不从架构角度考虑开发与运维、用户操作的关系,做出来的东西必然到外都是坑,且很难持续。不要随便看不起一门编程语言,它被发明出来必然有其用处。在恰当的时机用适当的语言解决正确的问题比什么都重要。
写过几年Python,也写过几年CPP,写过几年CS,Python做大项目没什么问题,不会比其它主流语言更差,项目的可控规模多大,主要还是取决于人,不是语言——语言当然有差别,但是没有宣传的那么大。至于开发工具的问题,高水平的开发人员根本不会依赖开发工具。而且,Python本身不是那种非常依赖代码补全等功能的技术,习惯的组合是emacs+ipython+python-mode,用doctesting做TDD,效率很高。最近一段用sublime text比较多,也没觉得离开习惯的环境就做不下去。