昨天晚上看评论, 看起来性能非常高, 同时语法非常像 Python. 感觉有点逆天...
有没有用过的同学献身说法一下这门语言写起来感觉怎么样?
http://hookrace.net/
https://github.com/logicchains/LPATHBench/blob/master/writeup.md
nim
import bpg, os proc writePPM(img, filename) = var imgInfo: ImageInfo discard img.getInfo(addr imgInfo) let (w,h) = (imgInfo.width.int, imgInfo.height.int) var rgbLine = newSeq[uint8](w * 3) var f = open(filename, fmWrite) f.writeln "P6\n", w, " ", h, "\n255" discard img.start(OUTPUT_FORMAT_RGB24) for y in 1..h: discard img.getLine(addr rgbLine[0]) discard f.writeBuffer(addr rgbLine[0], w * 3) f.close() if paramCount() != 1: stderr.writeln "Usage: decode img.bpg" quit 1 var buf = readFile paramStr(1) img = bpg.open() if img.decode(cast[ptr uint8](addr buf[0]), buf.len.cint) < 0: stderr.writeln "Could not decode image" quit 2 img.writePPM("out.ppm") img.close()
优点:语法的强一致性,优雅,可选gc,编译到其他语言(c/cpp/oc/javascript),比rust的更优雅的卫生macro,目前为止地球上最强的编译期能力,可以在编译期执行有副作用的nim代码,支持几乎所有的泛式,什么oo,泛型,函数式,依赖类型应有尽有(除了逻辑式,然而有macro就可以造),强大的属性能力,几乎可以无限扩展编译器的能力
缺点:编译器现在的提示不够准确,bug还蛮多的,主导开发的人有点少,很多库的实现质量不行,人毕竟太少了,没有原生的match可用(已经有人用macro造了一个可用的match)
有兴趣的可以加群 Expert Nim: 499795267
相互交流学习