V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ajeef
V2EX  ›  程序员

离 Nim 1.0 正式版发布不远了,官方论坛说,基本上以现在 0.17.0 为语法雏形,语法不再大改动了,要改也改 bug 和编译 y 引擎了,四大用户群 Python 、C、Pascal、javascript 都不放过。

  •  1
     
  •   ajeef · 2017-07-07 17:20:16 +08:00 · 8439 次点击
    这是一个创建于 2484 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Nim 语言:Pascal 的语法,Python 的缩进

    http://nim-lang.org/

    德国人 Andreas Rumpf 的作品,原因是他对过去使用的每种语言都不满意( Pascal 也不满意?)。以前叫 Nimrod 语言,从 0.96 版本开始改名为 Nim。它在 2008-08-22 发布了第一个公开版本 0.6.0,也是第一个可以自编译的版本。目前处于 pre-1.0 阶段。从 1.0 开始将不会再有不兼容的语法(breaking changes)。它的其中一个目标是,保证编译器尽可能的有效,几乎与 C/C++速度一样快。它的 asyncdispatch 模块允许你做有效的 Web 服务器程序,并且内建线程池。

    它有以下特点(仅举例一小部分): 1.并发模型 2.深度拷贝 3.procCall 得到多个相似方法 4.experimental 模块化 5.编译器支持混合语法:Objective C / C++ / C,通过 importCpp 和 importObjc 导入 6.使用自动证明技术,自动并发多线程,而不需要锁 7.生成原生代码,不需要虚拟机。自带快速垃圾收集器。 8.可以直接操作硬件 9.内建动态方法,并可以没有 VPT 虚拟表 10.自动删除无效代码 11.可运行于 Windows, Linux, BSD and Mac OS X,但只提供了二进制 Windows 版本下载,其它平台要自己编译。 12.Nim 可以产生 C++或者 Objective C 的代码 13.已经绑定到 GTK2, the Windows API, the POSIX API, OpenGL, SDL, Cairo, Python, Lua, TCL, X11, libzip, PCRE, libcurl, mySQL and SQLite

    最最关键的,它的 FAQ 中提到:为什么要再发明一门新语言?回答是:Nim 是非常稀少的可编程静态类型语言,它可以产生原生二进制代码(这样的语言甚至更少),不需要运行库和解释器。

    其次关键的,是根据什么语言的影响来设计的?回答是:按照顺序:Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon

    第三关键的,它采用 MPL 许可证,目前托管于 GITHUB 上,大家可以任意修改和 fork。

    它是如此受欢迎以至于《 Unix in Rust 》的作者为它放弃了 Rust。Rust 是 Mozilla 主导开发的系统级编程语言。

    作者很聪明,知道自己发明一门新语言和编译器,要用时间去累计生态库,于是直接将最终代码,编译成 C、或者 javascript 运行。

    31 条回复    2017-07-08 16:58:17 +08:00
    XhstormR
        1
    XhstormR  
       2017-07-07 18:34:18 +08:00 via Android
    这么 6 ?简直不敢相信
    ctsed
        2
    ctsed  
       2017-07-07 18:46:08 +08:00 via Android
    吃惊
    Cooky
        3
    Cooky  
       2017-07-07 18:54:39 +08:00 via Android
    没有大厂支撑能走到这一步确实牛逼
    Chingim
        4
    Chingim  
       2017-07-07 18:55:21 +08:00 via Android
    这么强,那缺点是什么?
    hljjhb
        5
    hljjhb  
       2017-07-07 19:06:34 +08:00 via Android
    暂且信个三分,回头仔细看下
    AngelCriss
        6
    AngelCriss  
       2017-07-07 19:19:01 +08:00 via Android   ❤️ 2
    @王垠
    如何掌握所有的程序语言
    http://www.yinwang.org/blog-cn/2017/07/06/master-pl
    LokiSharp
        7
    LokiSharp  
       2017-07-07 19:19:18 +08:00   ❤️ 1
    那么,代价是什么呢?
    likai
        8
    likai  
       2017-07-07 19:41:34 +08:00 via iPhone
    刚好正在关注这个语音言
    KeepPro
        9
    KeepPro  
       2017-07-07 19:52:50 +08:00 via Android
    为啥非要缩进呢 就是因为这个放弃 python 的。
    hwwh1999
        10
    hwwh1999  
       2017-07-07 19:53:21 +08:00
    关注这个语言!
    ltm
        11
    ltm  
       2017-07-07 19:59:10 +08:00
    @AngelCriss 王垠回国了!和他的猫一起
    tkpc
        12
    tkpc  
       2017-07-07 21:13:02 +08:00
    缺点是 debug 工具几乎没有.
    痛苦的
    最好要熟悉 C,这样有问题能及时的通过编译后的.c 发现
    wdhwg001
        13
    wdhwg001  
       2017-07-07 21:37:30 +08:00 via iPhone
    不错,但我选择 Crystal,使用 LLVM 的编译型的 Ruby,今年也在奔向 1.0。
    Nim 是我见过的第二个源码自动加密的复杂语言,第一个是 perl。
    Nim 支持的目标很多,但太多了,又缺乏足够完整的抽象,使得 Nim 在很多情况下过于底层,说不好听的就像其他语言的方言一样,参考那段 JavaScript 代码。
    Chingim
        14
    Chingim  
       2017-07-07 23:41:32 +08:00
    @wdhwg001 像这类语言, 定位是什么呢? 现代 C 吗
    CYKun
        15
    CYKun  
       2017-07-08 00:10:43 +08:00 via Android   ❤️ 1
    @AngelCriss 王垠竟然会推荐 JavaScript 做入门语言,不禁让我怀疑我以前看到的都是假王垠
    wdhwg001
        16
    wdhwg001  
       2017-07-08 01:54:51 +08:00 via iPhone   ❤️ 1
    @Chingim 不,Crystal 是一个去除了一部分 Ruby 影响性能的特性的语言,目标应该仍然是愉悦优先。
    但是,Crystal 可以让你愉悦的同时,一定程度的维持很高的执行效率。
    wdhwg001
        17
    wdhwg001  
       2017-07-08 01:56:43 +08:00 via iPhone
    @Chingim 至于 Nim,它的粉丝觉得这个世界都应该是 Nim 化的,Nim 是如此棒以至于可以转换到任何其他的辣鸡语言,并借此高高在上的伸出一只手拯救那些语言的码农们。
    mathgl
        18
    mathgl  
       2017-07-08 02:38:40 +08:00
    @Chingim 用的人少。
    lzhr
        19
    lzhr  
       2017-07-08 04:47:55 +08:00
    sagaxu
        20
    sagaxu  
       2017-07-08 06:57:58 +08:00 via Android
    @wdhwg001 那么 elixir 呢?亲近 Ruby 的语法,数倍的性能,天然支持高并发,成熟可靠的 otp
    victor
        21
    victor  
       2017-07-08 08:39:38 +08:00
    语言的名字 Nimrod -> 尼玛的?
    yanzixuan
        22
    yanzixuan  
       2017-07-08 09:01:22 +08:00   ❤️ 1
    @sagaxu elixir 干活要用到 OTP 的库,最后还得老老实实把 eralang 过一遍。不然你都不知道这些库是怎么玩的。
    hjc4869
        23
    hjc4869  
       2017-07-08 09:31:44 +08:00 via iPhone
    没强大好用的调试工具大项目不好做
    生成的 C 代码也不是人类可读的
    k9982874
        24
    k9982874  
       2017-07-08 09:42:36 +08:00 via iPhone
    说的好,我选择 golang
    andrewhxism
        25
    andrewhxism  
       2017-07-08 09:50:42 +08:00
    又一个轮子
    nyfwan123
        26
    nyfwan123  
       2017-07-08 10:28:38 +08:00
    PHP:我不是针对谁,在座的各位都是...
    dodo20120
        27
    dodo20120  
       2017-07-08 11:19:42 +08:00
    小众语言全无视了,第三方库太少,不停地要自己造轮子
    tempdban
        28
    tempdban  
       2017-07-08 11:27:30 +08:00 via Android
    那为啥不用 golang
    neugls
        29
    neugls  
       2017-07-08 11:53:16 +08:00
    NIM 就是另一个 haxe, 要搞全平台,推荐 haxe: http://haxe.org. 并发, 后端, 就直接 golang 了
    ipwx
        30
    ipwx  
       2017-07-08 11:55:53 +08:00
    神丑陋的一个混血产物。
    ostholz
        31
    ostholz  
       2017-07-08 16:58:17 +08:00
    @wdhwg001 同样看好 Crystal
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2055 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:16 · PVG 00:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.