分享 静态语言元编程哪家强: Nim

luikore · 2015年01月24日 · 最后由 luikore 回复于 2015年01月26日 · 10901 次阅读

Nim (原来叫 Nimrod) 是一个缩进语法, 编译到 C++/ObjC/JS 的静态语言, 而且:

有卫生宏, 可以让用户添加新语法例如 list comprehension

https://github.com/def-/nim-unsorted/blob/master/listcomprehensions.nim

可以自己插入编译规则

http://nim-lang.org/trmacros.html

模式语言改写 AST 超简单! 比 Java 的 annotation processing tool 好一万倍

const 支持编译期计算, 不需要难用得一 B 的 C++ 模板了

早就该这么做了...

特别的标识符等价规则: 首字符大小写敏感, 其余字符不管下划线和大小写

例如 fooBar_BAZ 等价于 foo_barbaz, 但不等价于 FooBar_BAZ

作用: 不管你用的库是驼峰党还是蛇党写的, 自己的代码依然可以维持统一的风格...

call unification: foo.bar() 相当于 bar(foo)

C++ 也要加这个 feature 啦

directive guided syntax

语法可以微调, 例如 #! strongSpaces 可以启用 strong spaces 特性, 提高无空格的操作符的结合度

pragma 调整程序的行为

例如加入 NaN 和 Infinity 检查

{.NanChecks: on, InfChecks: on.}

GC 可以控制步进时间

(还没看实现, 难道是 G1GC?)

...

现在尝鲜很简单, 到 http://nim-lang.org/download.html 下载一个 zip 包, ./build.sh 就好了

hello world:

"hello".echo
echo("nim~~")
bin/nim -r c hello.nim

参考这两篇博客

http://hookrace.net/blog/what-is-special-about-nim/ http://hookrace.net/blog/what-makes-nim-practical/

共收到 7 条回复

實在學不了這麼多語言怎麼辦...

卫生宏,这个属于听起来感觉怪怪的。。。难道是我思想邪恶了。。。

#1楼 @blacktulip 我也是, 经常止步于 hello world...

#2楼 @hisea 从 hygienic macro 翻译来的, hygien 就是卫生, 很多写 lisp 的书都这么讲...

第一次听说这个好像是好几年前了。。。看起来还挺厉害的

能漂亮的写出宏的语言都值得一看。。。

@luikore 大覺得 Nim 比 Ruby 怎樣?

#5楼 @ksec l大只是看看nim的优点,没有拿它和ruby比得意思

#5楼 @ksec Nim 好处是可以用简单的代码编译出比 C 还快的结果, 不过好像基本没法函数式编程.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册