蜗牛梦科技
    • 网站首页
    • 公司简介
      公司简介
      企业文化
    • 产品展示
    • 新闻动态
      公司新闻
      行业新闻
    • 成功案例
      成功案例
    • 客户服务
      售后服务
      技术支持
    • 人才招聘
    • 联系我们
      联系我们
      在线留言

    新闻动态
    Site navigation

    公司新闻
    行业新闻

    联系方式Contact


    地 址:北京市丰台区66号
    电 话:17707521353
    网址:www.lbwcode.com
    邮 箱:45176063@qq.com

    网站首页 > 新闻动态
    新闻动态Welcome to visit our

    Python的替代品?我尝试了你从未听说过的优秀编程语言

    分享到:
      来源:蜗牛梦科技  更新时间:2026-10-01 13:37:50  【打印此页】  【关闭】

    认识Nim:具有类似Python语法和C效率的替代品语言

    几周前,我在GitHub上浏览时遇到了一个引起我(wo)注意的尝试回购。 它托管了一个完全用Nim编写的听说项目。

    Python的替代品?我尝试了你从未听说过的优秀编程语言

    Nim到底是优秀语什么(me)? 我想。

    Python的替代品?我尝试了你从未听说过的优秀编程语言

    我立刻(ke)得出结论,编程这是替代品很多人使用的许多(duo)编程语言之一,但是尝试我(wo)只是一个愚蠢的人,不知道它。听说 但是优秀语我没(mei)有把它放在一边,而是编程决定(ding):让我们对此有所了解。

    Python的替代品?我尝试了你从未听说过的优秀编程语言

    然后,替代品我有了两个主要认识:

      不,尝试很多人不使用这种(zhong)语言。听说 但也许应该如此。优秀语

    因此,编程这里简要介绍了我在快速编程教程Nim方面的经验,以及为什么该语言对我来说非常有前途。

    给我看代码!

    这是我在Nim中编写的一个无用的程序:

    看起(qi)来很干净。 它也是如此简单,即使您以前(qian)可能从未听说过(guo)Nim,您也可(ke)以毫不费力地弄清楚它的(de)作用。 (提示:它打印数(shu)字:5我:5。)

    因此,让我们分解一下这里似乎熟悉的内容:

    变量声明

    JavaScript开发人员非常熟悉。 虽然某些语言使用var,有些语言使用let,但是(shi)JS和Nim都允许使用两(liang)者之(zhi)一进行声明。 请务必注意,两种语言的含义并不相同。 但(dan)是稍后会更多。

    块语法

    要在Nim中标记一个新块,我们使用冒号,后跟缩进线。 那就是Python。

    关键词

    这两个循环以及if语句看起来都像是从(cong)Python中拔出来的。 实际上,从第5行开始的所有内容实际上都(dou)是(shi)有效的(de)Python(假设我们定义了(le)echo函数(shu))。

    因(yin)此,是的,Python中的许多关键字和运算符在Nim中也有效,例如not,is,and或or等。

    到目前为止,Nim完全没有什么特别的。 由于(yu)我们需要使用let或var,因此它看起来像(xiang)是Python的较差版本(在语法上)。

    但是,如果我告诉您的(de)话,该怎么办:Nim是一种静态类型的语言,其运行速度几乎与C一样快。

    哦,现在我们在说话。

    一场友好的比赛

    在深入探讨Nim语法(fa)(尤其是静态类型的部分,我们仍然没有看到它)之前,让我们尝试备份有关其速度的声明。 为此,我编写了一个程序来天真地(即不进行动态编程)计(ji)算Nim,Python和C中的第n个斐波那契数。

    为了公(gong)平起见,我根据(ju)针对此问题的建议Leetcode解决方案(方法1)对实现进行了标准化,并(bing)确保在三种语言中尽可能地坚持下去。

    为了计(ji)时(shi)执行时间,我在Bash shell中使用了时间输出中的"真实"值。

    以下是计算第40个斐波那(na)契数的结果:

    是的,那件事发生了。

    现在,这是非常有(you)限的,并且离科学实(shi)验(yan)还很遥远,但这与其他进行了(le)更严格基准测试的人的(de)发现(xian)一致 。

    不过(guo),我将在本文(wen)中运行的所有代码都可以(yi)在GitHub上找到,包括有关如何进行此实验的说明。

    那么,为什(shen)么Nim比Python快得多?

    好(hao)吧,我要说(shuo)有(you)两个(ge)主要原因。 大大简化,这些是:

      Nim是在解(jie)释Python时编译的(不同意?请单击链接)。 这意(yi)味着(zhe)在运行Python程序时,除了仅运行该程序外,还(hai)有更多的工作要做,因为在实际执行之前需要对其进行解释。 这通常会使语言慢很多。 Nim是静态键入的。 虽然我之前显示的示例没有单一的类型声明或注释,但稍后我们将看到它确实是静态类型的语言。 对(dui)于动态类型的(de)Python,解释器需要做更多的工作来找出并适当地处理类型,这会减慢执行速度。

    运行更快,编写速度更慢

    这是Python文档关于解(jie)释语言必须说的话:

    "尽管解释型语言的程序运(yun)行通常(chang)也较慢,但它们通常具有比编译型语言更短的开发/调试周期。"

    例如,这句话很好地总结了Python和(he)C之间的折衷。 您可以使用Python进行的任何操作,也可以(yi)使用C进行的操作,程序的运行速度将提高多(duo)个数量级。

    但是,您将花费更多的时间(jian)用(yong)C编写和调(diao)试(shi)代码,并且代码更长且可读性更(geng)差。 这就是为什(shen)么C不再流行的原因,Python如(ru)此流行。 简而言之:Python是"简单的"(当然,相对而言)。

    因(yin)此(ci),如(ru)果Python在频谱的一端,而C在另一端,则Nim试(shi)图(tu)处于中间位置:有(you)点快又容(rong)易吗? 这样的事情。

    但(dan)是(shi),使Nim脱颖而出(chu)的原因(yin)是(shi),乍一看,它似乎已使(shi)权衡最小化。 换句话说,它比Python快得(de)多,但是编程起来却不像C那样困难(或者感觉像经(jing)过简短检查一样)。

    为了说明(ming)这一点,让我们看一下斐波那(na)契实验中的(de)代码。

    这是(shi)C代码:

    Python:

    和Nim:

    尽管Nim拥有奇怪的proc东西,亲爱的上帝,还是使(shi)用(yong)=声明函数(或过程,称呼它们),但它(ta)仍然比C干净得多。

    因此,也许这是一个(ge)值得权衡的问题? 比Python难写一点,但是要快几十倍-我(wo)可以接受。

    Nim语法

    以下是有关(guan)Nim语法的一些关键点的简要概述:

    变量

    变量使(shi)用var,let或const声明。

    var和const基本上就像JavaScript一样工作,但是让我们有一个不同的故事。

    尽管JavaScript中的let与var在范围上有所不同,但Nim中的(de)let表示一个变量,其值(zhi)在初始化后不能更改。 有(you)人告诉我,这显然类似于Swift。

    但这不(bu)是常数吗?

    好(hao)吧,在Nim中,区(qu)别如下:

    对于const,编译器必须能(neng)够在编译时(shi)确定该值,而let可以在运行时确定。

    文档提供了以下示例:

    此外,您还可以像这样(yang)声明变量:

    函数

    Nim中的函数称为过程,它(ta)们的声明是这样完(wan)成的:

    鉴于该语言在很多方面看起来都像Python,因此当(dang)您初次看到它们时,过程肯定显得有(you)些怪异。

    用=代替{ 或:尤其奇怪。 但(dan)是,在单线过程中看起来更好一些:

    此(ci)外,您还可以从以下函数返回(hui):

    感觉您仍然(ran)应该返回结果,但结果不是变量,而(er)是一个关键字。 上面的代码段是完全有效的(de)Nim。

    而(er)且您还可以重载过程:

    控制流

    很像Python。

    要遍历某个范围,可以使用countup(start,finish)或countdown(start,finish)代替一个范围。 或者,您可以简化(hua)整个过程并使用(yong):for i in start..finish。

    打印并(bing)获取用户输入

    与Python比(bi)较时(shi),readLine(stdin)等效于input(),echo等效于print。

    echo可以带或不带括号。

    我的目标是给您带来Nim的品味,而不是通读其完整手册。 因此(ci),我想我将(jiang)在此处停止使用简单的(de)语法(fa),然后略过一些其他功能。

    附加功能

    面(mian)向对象编程

    Nim不是面向对象的,但是对对象的支持极简。 但是,它们不(bu)像Python类那么(me)整洁。

    宏

    Nim支持宏和元编程,实际上,它似乎非常强调它。 由三部分组(zu)成的教程系(xi)列(lie)的(de)整个部分都专门针对(dui)它。

    这是一个简单的(de)示例:

    基(ji)本类型

    Nim中的基本类型为:字符串,字符,布尔,整数,整数和浮点(dian)数(shu)。

    这(zhe)些也是有效的:

    int8 int16 int32 int64 uint8 uint16 uint32 uint64 float32 float64

    另外,与Python不同,字符串在Nim中是(shi)可变的。

    注释

    您可能已经在上面的Python语法中看到了(le)我的注释,但是与(yu)Python不同,多行注释也使(shi)用了哈希符号(后接):

    JavaScript编译

    从Nim网站:

    " Nim包括一流的JavaScript后端,因此您可以轻松地同时定位客户端和服务器。"

    尽管我不确定有多少人会实际使用它,但是这很酷。 但是,如(ru)果您要(yao)播放用(yong)Nim编写的(de)Browser Snake,则可以这样做。 不过这次我(wo)没(mei)有建造它。

    迭代器

    除了定义一个proc之(zhi)外(wai),还可以定义一个迭代器。 但是,Nim迭代(dai)器实际上更像Python生成(cheng)器(qi)。 这(zhe)是(shi)一个例子:

    不区分Case和下划线

    Nim不区(qu)分大(da)小写和下划线(第一个字符除外)。

    因此,HelloWorld和helloWorld是(shi)不同的,但是helloWorld,helloworld和hello_world都相同,因此有效:

    人(ren)气度

    也许您阅读了标题并对自己说:嗯,我听说过Nim或使(shi)用Nim!

    那样的(de)话,嘿,我为你感到高兴。 但是,我确实尝试获得了有关该语言受欢迎程度的(de)一些(xie)信息,而且肯定不是(shi)那么高。

    例如,在2020年堆栈溢出调查中甚至没有提到Nim。 我在LinkedIn上找不到Nim开发人员的工作(位置设置为Worldwide),并且该语言的Stack Overflow标签只有349个问题(ti)。 (与Python的1,500,000或更新语言(例如(ru)Swift的270,000)进行比较(jiao)。)

    因此,可以肯定地说,大多(duo)数开发人员都没(mei)有使用过它,而且许多开发人员甚至(zhi)从未听说过Nim这个名字。

    真正的Python替代品?

    我对你说老实话,我觉得Nim很酷。

    在撰写本文时,我已经研究了最低限度,因此还没有深入到最(zui)低限度,但是我可以看到自己将来会用到它。

    但(dan)是,尽管基本语法与Python非常相似,但是它变得相当复杂,而且速度很(hen)快,我相信这(zhe)会吸引很(hen)多 Python用户/开发人员。

    就我个人而(er)言,我是Python的忠实拥护者,也是(shi)静态类型语言的忠实拥护者,因此对我而言,在某些情况下,性能的提高将足以弥补所增加的(de)冗长性。

    然后,通过撰写本文,我(wo)意识到:Go呢?

    我敢肯定,你们中的许多人在阅读时都在考虑这一点(dian),这是有道理的(de)。 尽管Nim的语法可能更接近于Python,但它确(que)实在Go语言主导的高性能但比(bi)C ++语言更激烈的竞争中。

    有趣的事实:我还偷偷地用Go进行了速度测试。 特别是对于fibonacci(40),它的(de)速度与C一样快。

    那么,Nim可以与Python竞争吗? 我对此表示高度怀疑。 正如我所指出的那样,我(wo)们看到了计算机变得越来越快,编程变得越来越容易的趋势,以至于即使Nim提(ti)供了很好的权衡,我也认为采用(yong)干净而通用的Python还不够。

    编辑:我与(yu)Nim Core Devs的(de)一位发言人交谈,他告诉我他认为Nim比从Python过渡的人更适合从C ++过渡的人。

    但是,它可以与Go竞争吗? 也许(如(ru)果Google不落后于Go)。 语法友好,语言功能强(qiang)大,并且比Go提供的功能(例如宏和重载)更好地支持C / C ++功能(neng)。

    也许那是我(wo)接下来要写的文章。

    谢谢阅读!

    上一篇:黄石房产信息网官网_黄石网站开发价格_2
    下一篇:高端网站定制开发_番禺网站定制开发费用

    相关文章

    • 黄山旅游网_黄山建网站报价_4
    • 优秀网站设计网站_佛山网站建设文案设计_1
    • 优秀网页设计_用网页设计制作网站
    • 优秀的网页设计网站_舟山网站设计排名
    • 龙岗网站制作_松岗自适应网站制作价格_3
    • 优秀网页设计公司_网站设计公司哪好_1
    • 优秀网页设计公司_行业网站设计公司哪家好
    • 优秀网站设计_靠谱网站设计策略
    • 高级前端开发面试题_高端网站开发技巧_1
    • 优秀网站设计网站_江西品质网站建设优点_1

    友情链接:

    • 钦州子创网络科技有限公司
    • 新疆和田子创网络科技有限公司
    • 集安丰纽网络科技有限公司
    • 重庆合川西苏网络科技有限公司
    • 个旧玛远网络科技有限公司
    • 宜宾辉迎网络科技有限公司
    • 哈尔滨干发网络科技有限公司
    公司简介
    |产品展示|新闻动态|成功案例|客户服务|
    人才招聘
    |联系我们

    Copyright © 2026 Powered by

    蜗牛梦科技
       sitemap

    0.441s , 49785.109375 kb