产生背景

python 语言如日中天。
python 可以说把动态语言的优势发挥到了极致。
不过,python 也有不顺手的地方。

一开始,Nim 的产生主要就是为了解决 python 的两个痛点:

  1. 执行效率问题,虽然可以把需要执行效率的部分换为 C 语言重写,但仍不尽如人意。
  2. 没有类型的约束。这在大规模开发时,如果缺乏有效的管理和制度,将会引发混乱甚至是灾难。

Nim 的特点

nim 在很多地方与 python 很像
但,
nim 是静态类型的。
也就是存在编译过程,代码中的对象存在类型约束。
nim 并不工作在虚拟机上
nim 直接编译为本地的可执行代码,也可以编译为 c 或 javascript
这使得 nim 在执行效率上大大改善了 python 的状态

官方网站提供了较为详细的介绍:
官方网站

按官方的说法,nim 追求的目标是 3 个 E
Efficient 效率
Expressive 表达能力
Elegant 优雅

安装

直接下载 windows 64x 安装包,解压就可以了
解压后打开个控制台,运行bin\finish.exe
按提示做。
其实不运行这个也好,国内太慢,还容易出错。
它无外乎就是设置个 path, 下载个 minGW 的 gcc 编译器

因为是编译到本地执行代码,所以需要 c++ 编译器
只要保证某个可用的 c 编译器在 path 上就行
建议自己先安装个 minGW
如果已经安装了 c 语言的 IDE,一般就带了 minGW
比如:Dev C++
codeBlock 等等
微软的 vs 系列也可以
我们只需要找到编译器的位置,加入到 path 就行了。

IDE呢,建议用 vscode 吧,比较现代,插件更新很快。
在插件里搜nim, 随便安装个 nim 扩展就好

建立个新文件,命名: my.nim
向其中写一行代码:

echo 'this is a hello test!'

右键 | run … (F6)
或者直接按 F6

就会编译并执行本文件

随便转转

使用变量前需要先定义变量(不能拿来就用)
可以用三个关键字
var 定义一般的可以改变的
let 定义一次性赋值,再也不会改的
const 定义在编译期间就能算出来的常量

# 定义变量,可以指明类型
var s: string = "abc"
var n: int = 15# 也可以不指明,靠系统来推断
# 像python一样对缩进敏感
vars2 = "中国"n2 = 100echo s & s2, n + n2

单行注释和 python 一样
多个定义可以用一个 var,但要规范缩进
nim 的缩进不允许用 tab,只能空格
不过可以设置 IDE 用空格来代替 tab
其实,规范的 python 开发也这样要求的。
串用双引号,不能单引号(另有他用)
一般,类型不用写,系统能推断出来
串的连接用 &, 而不是 +

再看看基本的数学运算:

leta = 11b = 4echo a + b
echo a - b
echo a * b
echo a / b
echo a div b  # 整除
echo a mod b  # 余数

运行结果

15
7
44
2.75
2
3

注意: / 运算结果是浮点数,即便能够整除也是这样。

浮点数与整数不能自动混合运算,需要强制转换!

leta = 5b = 2.6echo float(a) + b
echo a + int(b)

结果是:

7.6
7

nim 中的串是可变的对象(这与python不同),可以让一个串增长。

vara = "abc"b = "xy"a.add("哈哈")
b.add('!')echo a & b

注意,add 的参数可以是一个串,也可以是一个字符

介绍一门很有前景的语言Nim(1)相关推荐

  1. python交互式编程入门先学什么_为什么 Python 对于编程入门学习来说,是一门很棒的语言...

    在这篇文章里,我会来阐述下为什么我觉得 Python 对于计算机编程入门教学来说是一门很棒的编程语言(对基础编程课程更多观点可以查看这篇文章).这也是从我针对初学者Python 编程教学过程中获得并总 ...

  2. C++是一门很烂的语言?Linus Torvalds又双叒叕开喷了!

    文章来源:CSDN Linux发明者Linus Torvalds又双叒叕开喷了! Linus在计算机方面的天赋大家都知道的,22岁发明Linux,但是让他火遍全网的技能还得属嘴炮,众所周知的与 Min ...

  3. Linux之父炮轰:C++是一门很烂的语言,不会用其重写Linux内核

    Linux是一套免费使用和自由传播的操作系统,目前人们所熟知的安卓.统信UOS等都是基于该系统打造,诞生于1991年,由Linus Torvalds发布,他也被成为Linux之父. 近期,Linux之 ...

  4. Java介绍、应用、前景

    Java介绍.应用.前景 1 介绍 发展历程 特点 Java开发设计技术 2 应用 2.1 Android应用 2.2 金融业应用的服务器程序 2.3 网站 2.4 嵌入式领域 2.5 大数据技术 2 ...

  5. swift语言前景_swift语言从天而降,作为ios程序猿,我们如果面对?

    Swift语言诞生到现在,才短短一个月多,Swift竟然挤进TIOBE排行榜的第16位,相信这发展的速度绝不是任何一个语言可与之相提并论,那Swift到底是一个怎样的语言,竟然永远如此的魅力!在如此的 ...

  6. 自动驾驶介绍、应用、前景

    自动驾驶介绍.应用.前景 1 介绍 1.1 定义 1.2 作用 1.3 发展历程 1.4 分类 23年初竞争格局 1.5 顾虑 1.6 前景 2 产业链现状 2.1 芯片 2.2 仿真 3 技术路线 ...

  7. c语言两字符串转数字后相加,一个觉得很难的C语言问题。对两个数字字符串相加。 C语言 如何把一个字符串中相连的两个数字转化为一......

    导航:网站首页 > 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个字符串中相连的两个数字转化为一... 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个 ...

  8. awesome-go:很全的go语言资源合集

    awesome-go:一个很全的go语言框架,库,软件合集 前面发过关于awsone-python, awsone django, flask.最近在学习golang,所以找到awsone-go 非常 ...

  9. 这是小小本周的第六篇,本篇小小将会介绍一个很古老很古老很古老的为什么系列之不能重写service方法。...

    这是小小本周的第六篇,本篇小小将会介绍一个很古老很古老很古老的为什么系列之不能重写service方法. 小小最近看到一年一度的考研,心生感慨,不过,作为一个专科,没法参与今年的考研,但是没关系,小小明 ...

  10. 机器人介绍、应用、前景

    机器人介绍.应用.前景 1 介绍 1.1 定义 1.2 作用 1.3 发展历程 1.4 分类 1.5 三大顾虑 1.6 前景 2 种类 工业机器臂 协作机械臂 工业移动机器人 复合机器人 扫地机器人 ...

最新文章

  1. 问题集锦(56-57)
  2. 微信“红包封面”终于开放:这样免费定制!
  3. TestNG测试框架之测试用例的执行顺序分析
  4. mysql1526错误_mysql 分区 1526错误
  5. Git 分支管理和冲突解决
  6. c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
  7. python读取matlab矩阵_matlab、python中矩阵的互相导入导出方式
  8. 利用思科 Webex中的3个漏洞,以 ghost 用户身份参会
  9. 360手机卫士大数据驱动犯罪打击 配合警方破案成果显著
  10. 关于中断和异常的几点认识
  11. vc通过编译指令传参_iOS开发你不知道的事编译amp;链接
  12. 使用 Visual Studio 2012进行C语言开发
  13. 怪兽星座欲并购,运动饮料成为新战场?
  14. sass混合器,选择器的继承
  15. replaceAll()如何同时替换多个不同的字符串(或多个符号)
  16. 充电慢、掉电快、续航短?这份电动车过冬指南请查收!
  17. JavaScript--轮播图_带计时器
  18. 【计组】字长、数据总线、地址总线
  19. 第五章 彩色图像处理
  20. JavaScript实现一串div跟随鼠标移动效果(幻影效果)

热门文章

  1. 圣诞献礼 | AI、微服务、DevOps、企业架构文章合集
  2. 笔记整理--玩转robots协议
  3. android studio实现视频聊天,实现视频通话
  4. 常见的数据分析工具有哪些?
  5. 代码之外——禅心慧语
  6. 大饼“U”形底?ETR开始
  7. qrCode二维码生成器
  8. ubuntu无法关机,卡在黑屏界面
  9. datax(13):源码解读Column-datax中的数据类型
  10. python因子分析案例_因子分析及python实现(一)