离 Nim 1.0 正式版发布不远了,官方论坛说,基本上以现在 0.17.0 为语法雏形,语法不再大改动了,要改也改 bug 和编译 y 引擎了,四大用户群 Python 、C、Pascal、Javascript 都不放过。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ajeef
V2EX    程序员

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

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

    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/span>
    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     Solana     3469 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:58 PVG 12:58 LAX 21:58 JFK 00:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86