想像中理想编程语言的几个特征

代码写多了, 总希望能从繁琐的代码中挣脱出来, 编程语言的设计应为快速解决问题为目的. 不断重复的表达式应有相应的语法糖加以简化.

函数式语言设计之初不被人重视, 进入到多核化之后我也渐渐从面向对象转入到了函数式的阵营.

学习设计模式时 Java Swing 堪称各种模式的典范, 但是设计的后用起来顺手又能如何, 不过 Java Swing 的性能更是硬伤, 所以有了 SWT 那种更接近于本地化的组件库.

编程语言有两种哲学: 条条大路通罗马 与 一条大路罗马. 前者可以让语言更灵活, 但却容易走上一条不归路, 譬如 Scala; 后者让你专注于解决实际的问题, 像 Python 的语法非常简单.

填满了博客中文章概要显示中的内容, 可以说一说我希望中的语言的几个特征, 主要关注语法:

  1. 能不写分号就不要分号(JavaScript都得加上分号, 省得 Minify, Uglify 时出错, Scala 就尽量不写分号了)
  2. 方法调用式尽量省略括号, 这样可以写出更 DSL 的代码
  3. 表达式(控制语句)都应该有返回值, 像 Scala 的 if/else, Clojure 的循环也会返回一个惰性列表. 或者是表达式/控制语句 也者是方法
  4. 函数是 First Class, 我还是喜欢函数式编程. Java 8 略见端倪, Scala 二者通吃, Clojure 只有函数式
  5. 尽可能的都是 Immutable 类或集合. 既然是讲函数式编程, 这一点很重要
  6. 函数要有默认的返回值, 如此则应该省去显式的 return 语句. 函数出口的值就是函数的返回值. Scala 的  Unit, Clojure 的 Nil, Python 的  None. 其实 Java 可以默认为 java.lang.Void, 但却选择了什么也不是的  void
  7. 需要有宏定义的功能, 典型如 C/C++ 风格的 #def, Scala 有较难用的宏支持, 以及 Clojure 的  (defmacro m-name ...
  8. 透明化的异步方法调用功能, 比如方法不需要显式的返回 Promise<String>, 而是加个注解 @Async 便成就了异步, 方法返回值照常是 String
  9. 强悍的类型推断功能, 如 Scala 声明变量有赋值时都不应该指明变量的类型. 函数返回类型也应该靠推断
  10. 还是比较喜欢静态类型的语言. 编译器能帮忙排除一些问题, 不希望 var v = 1, 马上又能 v = "s"
  11. 能进行元编程的语言. 像 Groovy/Ruby 很容易为已有类附加方法, Scala 得依靠隐式转型, JavaScript 就太流氓了
  12. 能快速查阅帮助. 如 Scala/Java 要么依赖 IDE 提示或看在线的 Javadoc 或源代码. Python/Clojure 可以用  dir, doc 等命令快速列出帮助, 这和 Linux 的 man 一样, 我喜欢这样的. 用  vim 也要能快乐的编程
  13. Here Document, Java 经历几世终未支持多行字符串的声明,其他语言中基本是家常便饭。曾经绞尽脑汁在 Java 里强塞 Here Doc, 最终放弃,倒不如 Java 中放几个 Groovy 文件轻松

本文链接 https://yanbin.blog/features-of-ideal-programming-language/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments