Nim语言使用感想

Nim的主要口号是:

高效、优雅、富有表现力

官网的介绍是:

Nim 是一种静态类型的、编译型、系统编程语言。 它结合了其他成熟语言的成功概念。 (如 Python、Ada 和 Modula)

特点有如下:

直观、干净的语法
多操作系统支持
可以编译为C,C++,Js,并且可以简便地和C/C++/Obj-C交互
提供包管理器

Nim确实有着很多的优点,作为一个拿Nim来搞游戏开发的,我认为其最大的优点在于其运行速度和语法的简洁。Nim可以编译成C/C++,这意味着他的效率和C/C++差不多。而Nim本身的语法又有些像Python等脚本语言,写起来无压力,而且其本身还带有一个GC系统,我们不需要关心本身的内存操作。
上一个没有内存管理的编译型语言还是Rust,不过Rust里面许多东西都和C++差不多,本身学起来的难度也比较大。
Nim的话非常容易学习,我只花了一天的时间就把Nim官方的教程和其推荐的教程都看完了,还顺便看了下Nim+SDL。

然后我就想着:Nim这么简单,那我不如把我的Grogue游戏换成Nim开发咯。
然后我就这样开发了四天,最后撑不住了,又换回C++了。
我体会到的Nim缺点主要如下:

  • 官方的工具较少:Nim最新推出的补全和查错工具是NimSuggest,并且有vscode的集成插件。但是插件不行,每次保存了才能帮我识别,而且只能识别当前保存的文件。这就是说我改动了文件后没办法知道是否在其他文件中也有错误,只有将其他文件都保存一遍才能显示错误。
  • Nim本身的知名度很低:Nim比起Rust,Kotlin这种,Nim背后没有金主爸爸支持。Nim的开发是Nim社区的人们自己自愿开发的,背后没有什么公司,不像Rust背后是Mozilla,Kotlin背后是谷歌,所以Nim的知名度很低,这也就导致除了官方文档,我几乎找不到什么其他的资料。出了错误也只能去官方的Manual手册里面一点一点看,而且没有人给Nim做Vim补全插件,搞得我还得去vscode上写码。讲真我感觉要是Nim有个支持的公司什么的,或者加大力度宣传,应该会发展的很好。
  • 语言本身还有些缺点:比如不能够进行类的前置声明,这样遇到类的循环引用就没什么好办法解决。
  • 社区的支持不够:不论是QQ群还是Nim的IRC,我在里面问问题都没人回答,不知道是我问的太垃圾了了还是怎么地,伤心。

就像其官方说的,比起C++,Rust等语言,Nim和开发者们玩的很好。确实,我相信如果你接触到了Nim,一定会喜欢去使用他,通过这几天的使用我也觉得Nim用起来很顺手。但是说实话,Nim的资料实在是太少太少了,我这几天大部分时间都花在看Nim的Manual,和Nim里面的一些语法作斗争去了。如果Nim的资料更多,讨论的人更多的话,我也会一直使用Nim的。
我以后应该不会用Nim写一些大东西,可能会把Nim当Python一样作为脚本语言来写一些工具什么的。

updatedupdated2023-06-182023-06-18