12个你应该了解的新编程语言

对于一些人来说,学习一门新的编程语言是多余的,最好避免。他们争论道,我们为什么需要另一种语言呢?

我们已经有足够多的语言了吗?

现有的工具难道不能完成任务吗?

然后,还有那些不知疲倦地寻求新事物并偶然发现宝藏的人。学习是一种目的本身,他们不需要太多说服就可以在周末烧毁自己的时间,在那种晦涩的新语言中构建一个基于控制台的纸牌游戏。

无论你属于哪个阵营,有一点是毫无争议的:我们都希望花时间在一些有着光明未来的事情上。

对于那些属于传统阵营的人来说,他们最喜欢的现有语言已经有了很大的动力,并将继续有着光明的未来。对他们来说,我必须提醒他们,他们现在成熟的首选开发工具链曾经是很多人不愿意使用的“灌输思想”。现在也是如此,为了解决新问题或减轻开发的痛苦,会添加新的技术。

如果一些技术发展得足够激进,很有可能它将继续赢得人们的关注并达到顶峰。当这种情况发生时,你不想被抛在后面。:)

对于那些喜欢追逐新鲜事物的人,我有一个警告:作为程序员,玩得开心是必要的,但我们必须小心不要浪费精力。

当然,Brainfuck是一种非常扭曲、谜样且有趣的小语言,但你不太可能通过认真研究它而受益。你需要的是一种新的、合理的、有着坚实基础的语言。

如何选择这些语言

语言选择是一项令人畏惧的工作,尤其是考虑到新语言在未来就业和满意度方面的潜在好处。每个语言的作者都坚信自己构建了可能的完美语言,并解决了所有问题。那么,你如何选呢?

对于这篇文章,我专注于几个参数,以保持我的搜索在合理的范围内。

发布日期

我特意避免了那些非常新的语言。

新,我的意思是写作时还不到5-6年的语言,尤其是那些尚未达到稳定性(即1.0版本)的语言。但我希望有一天能回过头来,写一些它们的成功。:D

对我来说,5-12年是一个黄金期,这是一门语言稳定下来,并且正在进行更多改进的时候。当然,这个规则也有例外情况,如果适用的话,将予以考虑。

强大的社区兴趣

这一点是显而易见的,但当我们对新事物感到兴奋时,往往会忽视。现在,对许多人来说,大公司的支持足以说明成功的先例,但这并不总是正确的。

是的,苹果的Objective-C现在的Swift得以发展壮大,是因为它们是高度受控的生态系统中唯一的选择,但Facebook的DHack(对一个已经很丑的语言来说,这是更丑的采取方式,我个人的看法)仍然只是实验品。

理想的组合应该是由一家大型稳定的公司支持的语言,并且在人气方面蓬勃发展(就像React一样)。

但问题的实质仍然是社区。如果一门语言没有引起轰动,没有足够的开发人员去教育和推广,它就不可能爬出GitHub的坟墓。

对于我来说,像RacketErlang这样成熟、迷人的语言就被排除在外了,因为它们的增长曲线保持平稳。

专注、明确的独特卖点

我寻找的第三个要素是语言的明确目标。例如,一个更好的PHP版本,解决了命名问题并编译成本地PHP,对我来说不起作用。

如果每个人都试图转移到它,好处就太小,无法证明这个漏洞是有理由的。按照这个标准,我不禁要驳回像CoffeeScript和许多其他类似编译到JavaScript的语言的尝试。

老实说,我必须立即驳回仅仅是语法改进。历史表明,在语言方面,实用性胜过友好性,所以如果所有新语言的重点只是更愉快的体验,恐怕它们不会进入我的清单。

清晰、一致的语法

是的,我知道。我刚刚说过语法并不重要。嗯,准确来说,我说过“仅仅是语法改进”并不重要。但是话虽如此,语法仍然是程序员生产力和可维护性的重要因素之一,所以这是我在这里计算中必须要考虑的东西。

语法与一致性的概念是相辅相成的。函数命名、模块结构等是一门语言不能错过的关键事项。现在是2018年了,如果有另一种像PHP那样的语言设计,对我们所有人来说将是一种耻辱。所以,言归正传,让我们开始我们的前五种推荐吧。

Julia

对于麻省理工学院的人来说,数据科学可用的语言最多只能说是一种妥协。Python虽然清晰且流行,但缺乏处理数据对象的本地构造。此外,作为一种解释性语言,对他们来说Python的速度太慢了(请注意,我指的不是库,因为它们大多数是用C编写的)。

但可能最令人反感的是笨重的并发模型和缺乏并行计算模型,后者是超级计算的标配。

因此,Julia诞生了。

Julia在2018年9月29日发布了稳定版本,几乎就在本文写作之前的几天(谈到时机!)。下面是官方网站对它的能力的描述:

Julia在数值计算方面表现出色。它的语法对于数学非常好,支持许多数值数据类型,并且开箱即用支持并行计算。Julia的多重分派非常适合定义数字和类似数组的数据类型。

在语法方面,Julia可以被看作是Python和C的结合。是的,这可能是第一次一门语言同时针对这两个特性并取得了成功。

为了简化问题,Julia非常快速且不强制严格类型。以下是一些基准测试:

官方Julia基准测试

正如您所见,Julia稍逊于C,但远远超过了Java和Python。而Julia提供了哪些吸引人的功能呢?

好吧,这是计算直角三角形斜边长度的函数的实现:

最后,尽管大部分Julia的应用是针对数学工作的,但我相信它在通用领域有着光明的未来。

据我所知,它是第一种拥有一流的并行计算支持的语言,所以看到它在Web和物联网领域的普及是毫不奇怪的。

Rust

如果你尝试过新版Firefox浏览器,你会知道终于,在多年的努力之后,它看起来可能能从Chrome那里夺取一些市场份额。

如果浏览器感觉轻巧、迅捷,并且渲染速度很快,这都要归功于Mozilla专门开发的语言:Rust

说Rust有一个光明的未来将是谎言;这门语言已经取得了巨大的成功,如果你还没有听说过它,那是因为它的应用领域是专业化的,而且它的目标让人害怕:取代C++!是的,我们终于有了一种不仅能够做到这一点,而且已经做到了的语言。

对于对C++的设计过于繁重和内存管理挑战感到沮丧的人来说,Rust是一股清新的气息。

这是一个Rust程序的样子:

简洁而优雅,我个人认为。Rust遵循函数式编程的方法,使得你的代码更具组合性,没有需要处理的面向对象层次结构。

那么,是什么让Rust有信心挑战C++呢?这是因为它有了新的内存模型。Rust不再依赖于旧的new()/delete()方式,引入了所有权的概念。

相较于直接分配和访问内存,Rust变量之间进行“借用”,编译器对此加以严格限制。总体概念无法用几句话来解释,所以请随意查看相关链接_10以了解更多。

重点是,这样做可以在不需要垃圾回收器的情况下实现100%的内存安全,这是很重要的。

Rust已经在系统编程领域引起了轰动。它已经在一些平台上得到支持,驱动浏览器和渲染引擎正在迅速取代生产系统中的C/C++代码,并且被用于编写操作系统。

当然,创造另一个浏览器或设备驱动程序并不适合每个人,但Rust已经开始向其他领域扩展。我们已经有了几个完全功能的、速度极快的Rust Web框架,并且越来越多的应用程序库正在开发中。

老实说,如果你对充满刺激的未来感兴趣,Rust是完美的语言,现在也是一个完美的时机。Rust就像一架已经起飞的飞机,但还来得及上车,它正在飞向星际!

学习Rust from Dmitri Nesteruk

Elixir

在注重开发者愉悦度的语言中,第一名一直属于Ruby。它是一种读起来像诗歌的语言,并且具有足够的快捷方式来极大地减少心理摩擦。

难怪,Rails框架继续主导着full stack development,受到认真的开发者和初创公司的青睐。但并不是每个人都对Rails感到满意,特别是其中一位核心开发者 – José Valim。我认为创作者本人最好地解释了这门语言的起源,在一个interview中:

这是一个很长的故事,但我会试着讲得简短而精彩。2010年,我正在努力提高Rails在多核系统中的性能,因为我们的机器和生产系统都配备了越来越多的核心。然而,整个经历非常令人沮丧,因为Ruby没有提供解决并发问题的合适工具。那时我开始研究其他技术,并最终爱上了Erlang虚拟机。

我越来越多地使用Erlang,并且通过经验发现我错过了很多其他语言(包括函数式语言)中的一些构造。那时我决定创建Elixir,试图在Erlang虚拟机之上引入不同的构造和优秀的工具。

于是,Elixir诞生了!

就像Scala改进了Java语言但针对的是同样的虚拟机(即JVM)一样,Elixir利用了几十年来经过实战验证的Erlang虚拟机。

现在,对Erlang进行讨论超出了本文的范围,但你至少应该知道的是,它是电信行业最好的秘密: 如果我们的电话网络比我们基于Web的系统更可靠,那都是多亏了Erlang。

更简单地说,这意味着什么呢。如果你正在构建像聊天这样的实时系统,与Ruby (或PHP、Python和Java等)相比,Elixir的内存消耗要小得多,更加稳定。

一台运行Ruby的机器在最高并发连接数达到10,000时,使用Elixir可以轻松处理200,000个连接,并且仍然有足够的内存来运行2D游戏!

Elixir代码片段

从语法上来说,Elixir无耻地抄袭了Ruby,而它的主流Web框架Phoenix也无耻地抄袭了Rails。我认为这是一件好事,因为除了Laravel、Grails、Masonite等,我们正处于所有语言都拥有类似Rails框架的时代,这可以简化过渡。有些人可能会嘲笑“缺乏独创性”,但至少我没有抱怨。

最后,Elixir是一种令人耳目一新、令人愉悦且非常实用的技术。一些Ruby(甚至非Ruby)的公司正在转向Elixir,而像Pinterest这样的大公司正在生产中使用它,并取得了非常令人满意的结果。

很多人认为Node.js只是一种临时的并发尝试,并将很快被Elixir取代。我不得不说我同意他们的观点。🙂

Kotlin

在2017年的Google I/O大会上,Google对毫无准备的观众发布了一颗炸弹。该公司正式宣布将Kotlin作为Android开发的主要语言,震动了整个行业。

现在,谷歌一直在积极寻求取代Java,这并不令人意外,因为他们曾被Oracle的诉讼所困扰;然而,Kotlin的采用还是有些出人意料的,而且谷歌很有可能很快推出自己的虚拟机。不过,目前来看,Kotlin正在迎来一波热潮。

Kotlin由JetBrains开发,这是一家以其一套非常出色的代码编辑器而闻名的公司。其中之一,IntelliJ IDEA,是Android Studio的基石。Kotlin的设计目标是安全、简洁和与Java的100%互操作性。

最重要的是,Kotlin编译器会更加努力地消除在Java世界中非常常见的空指针异常。它还大大减少了所谓的Java冗长,这对许多人来说是一种解脱。

下面是Java和Kotlin之间的精彩代码对比:

图片来源:hype.codes

Kotlin代码明显更短,需要处理的认知负荷也更少。

但是,让我们明确一件事:Kotlin非常不可能取代Java,尽管它正迅速成为人们的首选。我相信,未来十年里,中小团队将毫不犹豫地选择Kotlin,而大型团队将继续使用Java,纯粹是因为遗留的原因。

话虽如此,Kotlin的未来非常光明,因为它可以做到Java所能做的一切,可以与Java代码无缝合并,而且更加愉快!

TypeScript

天知道我为了这个位置而克制自己!我内心里所有的声音都在喊“Elm!Elm!”但无论其想法有多么革命性,语法多么神圣,Elm在前端工作中尚未被视为主流替代品。🙁不管怎样,让我们转向真正的主流:TypeScript。

JavaScript就像野生的浆果一样:丑陋而令人讨厌,但如果你想在前端开发的丛林中生存,你必须忍受它。许多尝试替代它的方法(很可能,新的WebAssembly标准将成功),但真正引起人们注意的是由微软开发的超集。

你可能已经听说过TypeScript:从第2版开始,Angular成为第一个采用TypeScript的框架,人们迅速注意到了它。这是因为TypeScript为这个世界上最著名的编程语言增加了一些非常需要和出色的超能力。

是的,终于可以无需痛苦和诅咒自己的出生来编写原生JavaScript代码了!

以下是TypeScript带来的增强功能:

✓ 强类型:终于,一个字符串不是一个数字,一个数字不是一个对象,一个对象不是一个空数组!

✓ 编译时类型检查:如果您的代码能够正确编译,基本上可以保证不会出现 JavaScript 运行时的问题。

✓ 类和模块:是的,ES6 中已经标准化了类,但 TypeScript 也包含了它们,还有一个很好的模块系统。

✓ 类型推断:对于复杂类型,编译器可以很容易地找出类型,省去了一些麻烦。

✓ 异步/等待:异步/等待关键字和模式是基本的,所以不再需要与 Promises 和回调混在一起了!

命名空间、泛型、元组……我还能继续列举下去,但是可以说 TypeScript 将最糟糕的开发体验之一转变为最好之一。

TypeScript 代码片段

无法否认 TypeScript 的影响力。它使得类似 Google 的 Dart 等尝试退出了舞台(尽管 Dart 正试图通过 Flutter(一种移动开发框架)卷土重来),并让 JS 开发者看到了强类型的好处。

结果,重要的库如 React、D3、Vue(甚至 jQuery!)现在都有 TypeScript 版本,在世界上最好的软件店中,全部都是 TypeScript 代码。现在甚至为 Node.js 提供 TypeScript 头文件(坦白说,如果一个节点可以改进其并发性能和修复其糟糕的内存管理,它将永远持续下去)。

你可能会惊讶地知道,Node.js 的创造者,在公开表态支持 TypeScript 之后,正在开发一种以 TypeScript 为主要语言的项目(这个项目目前没有官方网站,只有 GitHub 仓库)。

最好的消息是,TypeScript 是一个小巧的工具,未来带来了相当大的好处。如果你是一名中级 JavaScript 开发者,你可以在两天内学会足够的 TypeScript,将你现有的所有代码转换过来!

Elm

Elm速度与其名字一样快,用于前端应用程序、图形和游戏。它是由 Evan Czaplicki 在 2012 年创建的一种函数式编程语言。

据说 Elm 没有运行时异常 – 这就是它的亮点。作为一种静态类型语言,编译器在编译时验证所有错误(哇!)并显示友好的消息(这些消息是完整的文本,而不是奇怪的错误代码)。

对于开发人员(调试人员)来说,这真是一次如释重负的体验!你可以在不断遇到更多错误时学习 Elm 编程 – 编译器会告诉你出了什么问题,并建议你应该如何纠正它!

Elm 自豪地比 ReasonML 更快,甚至比 TypeScript 更强类型。Elm 代码非常有组织和整洁,这将让你成为一名更好的开发人员。

由于 Elm 是基于模块的,你可以轻松创建可重用的组件。Elm 编译为可以在浏览器上运行的 JavaScript。所以,为了让 Elm 工作,你只需要安装 Node.js 和 npm,并使用以下命令获取 Elm:

npm install -g elm@ 

你可以输入你想安装的版本,例如 0.19.1。

然后你可以使用 --version 命令检查 Elm 是否已经安装好。如果你暂时不想进行所有的安装和设置 – 只需访问他们的 official website 并使用在线编辑器来玩耍。

那么,让我们稍微玩耍一下吧!

如果您不使用在线编译器,那么您将需要为我们将要编写的程序安装所有的依赖项(尽管这很容易)。

让我们要求用户在文本框内输入他的姓名,并在页面上打印相同的问候。

import Browser

import Html exposing (Html, Attribute, div, input, text)

import Html.Attributes exposing (..)

import Html.Events exposing (onInput)

— MAIN

main =

Browser.sandbox { init = init, update = update, view = view }

— MODEL

type alias Model =

{ content : String

}

init : Model

init =

{ content = “” }

— UPDATE

type Msg

= Change String

update : Msg -> Model -> Model

update msg model =

case msg of

Change newContent ->

{ model | content = String.append “Hello…” newContent }

— VIEW

view : Model -> Html Msg

view model =

div []

[ input [ placeholder “输入你的名字”, onInput Change ] []

, div [] [ text (model.content) ]

]

角色 员工
  // 角色有字段,类似于类
  let name: 字符串

  // 当然,也有构造函数
  new create(name': 字符串) =>
    name = name'

  // 注意行为 'be' 而不是普通的函数
  be get_emp_name(promise: Promise[字符串]) => promise(name)

嗯,Promise 也可以被拒绝 – 如果角色无法完成发送的异步请求。可以创建一个 Promise:

// 创建一个新的 Promise

let promise = Promise[字符串]

然后通过传递要实现的 Promise 来调用角色的行为(在我们的例子中,获取员工的姓名)。

employee.emp_get_name(promise)

你认为这段代码能够编译吗?

Pony 的另一个优秀特性是它具有内存安全性 – 没有 NULL 或缓冲区溢出。除非修复,任何可能返回 null 的代码都无法编译。

嗯,我们还没有告诉程序 'employee'(我们的角色)是什么:

let employee = Employee("J K Rowling")

与其他任何编程语言不同,Pony 允许除以零,并且结果为零。有关 Pony 中所有功能的文档请参考 mathematical proofs

要编写 Pony 程序,您需要 install the Pony compiler。由于 Pony 是一种编译语言,您必须在运行之前使用 ‘ponyc' 编译程序。

安装了编译器后,可以尝试 hello world program

Vyper

Vyper 是一种基于 Python 的智能合约编程语言。与 Python 类似,它易于阅读、易于编码且安全。Vyper 编译为以太坊虚拟机(EVM)字节码。EVM 用于识别区块链上每个区块的状态。

为了理解 Vyper 的特殊之处,让我们先了解智能合约。

智能合约是存储在区块链中的程序,当满足合约要求时,在卖方和买方之间定义和执行协议。

这些是自动执行的合约,不需要人为干预。然而,智能合约容易出现漏洞。

例如,智能合约可能被设置为向任意地址释放以太币或被任意地址终止,或者它们可能无法释放以太币。这些漏洞通常通过代码(无意或有意)引入。

Vyper 通过提供安全的代码解决了这个问题,使引入漏洞或误导的代码变得困难。虽然 Vyper 基于 Python,但它没有遵循许多 OOP 的编程范例,如继承、重载、递归等。这避免了代码复杂性(使用多个文件,使审计变得困难)。

Vyper 也不支持内联汇编,这意味着程序不能直接在 EVM 上执行任何操作,从而避免了攻击。

这些特性使得 Vyper 在编写用于区块链的智能合约代码时非常安全。

要练习在 Vyper 中编写程序,可以使用 remix online compiler

您还可以通过按照 Vyper documentation page.上的说明使用 Docker 或者 pip(如果您安装了 Python)来安装 Vyper。

R

R 是用于数据分析和 machine learning 的最流行的编程语言之一。它具有复杂数学、统计和科学计算、机器学习算法和可视化表示的各种 API。

R 是开源的,因其丰富的图形用户界面而广受欢迎。它拥有一个充满活力和稳定的社区,并可以轻松与其他语言(如 C、C++ 等)集成。

我们通过 CRAN(全面 R 存档网络)获得了上述所有功能,其中包含超过 10000 个用于统计学、概率、数据分析、计算、图形等领域的包。

为了看到R的魔力,让我们尝试一个简单的程序来找出11个数字的平均值。要找到平均值,我们将数字的总和除以值的总数(在我们的例子中为11)。R有一个名为“mean”的函数,可以为我们完成所有这些计算。

mynums <- c(51, 52, 53, 94, 88, 61, 31, 34, 76, 20, 10)

mean(mynums)

输出结果为:

[1] 51.81818

我们可以使用plot方法来绘制这些图形:

boxplot(mynums)

有许多高级的包,如ggplot2、dplyr等等,可以在R中显示丰富的图形。

我们还可以使用上述值快速查看直方图,以查看值适合的范围。

hist(mynums, breaks = 10, col = "sky blue", main = "Histogram of marks", xlab = "Height Bin")

请注意,我们给出了10个间隔;我们可以根据我们想要的分区数更改这个数字。

上面的变量mynum是一个包含数字列表的向量。与Python类似,我们在R中创建数据框以处理更多维度。

这对于分析非常有用。例如,我们可以组合多个向量,创建一个数据框,并根据变量的数量和所需分析的类型对其进行操作。

假设我们有员工姓名、技能和年龄向量。我们可以创建一个数据框并同时显示数据:

employees = data.frame(Name = c("John","Mac","April","Ron","Matt"),

                        Age = c(23,28,30,43,31), Skill = c("Java", "Python", "C++", "R", "PHP"))

print(employees)

> print(employees)

    Name Age  Skill

1   John  23   Java

2    Mac  28 Python

3  April  30    C++

4 Ron  43      R

5 Matt  31    PHP

R的另一个有趣的特性是使用数组进行矩阵操作的简便性。 R将以轻松的方式执行复杂的矩阵计算,让您叹为观止。您只需创建矩阵并将其提供给链接_41。

M1 <- matrix(c(1, 2, 1, 2), ncol=2)

M2 print(M1*M2)

     [,1] [,2]

[1,]    3    3

[2,]    8    8

Apache Groovy

经过仔细考虑和评估,我已将链接_42包含在我列出的顶级编程语言列表中。这种语言就像美味蛋糕上的奶油,为任何项目提供额外的风味和增强功能。

Groovy之所以应该在列表中占据一席之地,其中一个主要原因是其广泛的功能范围,这些功能有助于该语言在技术世界的日益流行。作为Java虚拟机(JVM)的敏捷和动态语言,它为Java开发人员提供了现代编程功能,学习曲线极低。

<p 值得注意的是,JVM是Java Virtual Machine的缩写。 JVM是Java的一个组成部分,为在任何设备上运行Java字节码提供了一个平台。构建在JVM之上的Groovy提供了一系列功能,提高了其性能,并使其成为开发人员的理想选择。

简单来说,它提供了一个运行Java字节码的平台,使得可以在任何设备上使用Java。从性能的角度来看,Groovy可以对您的代码进行静态类型检查和编译,从而提高鲁棒性和性能。

Groovy与现有的Java类和库无缝集成,使其与其他编程语言区分开来。它还可以直接编译为Java字节码,使其在任何可以使用Java的地方都很容易使用。这个特性增加了Groovy的灵活性和多功能性,使其成为开发人员创建高效可靠的软件的首选。

Groovy的动态特性可能会导致类型检查问题和调试代码更具挑战性,这是一个潜在的缺点。然而,许多程序员认为Groovy的灵活性和简单性超过了任何潜在的缺点。

作为开发者,认识到Groovy带来的独特价值非常重要。为了说明这一点,我想分享一个示例,展示了Groovy强大功能如何增强您的代码。

def greeting = "Hello, World!"
println greeting

// 定义一个数字列表
def numbers = [1, 2, 3, 4, 5]

// 使用闭包将列表映射为其平方
def squares = numbers.collect { it * it }

println squares

在这个示例中,我们通过定义一个字符串变量并使用println函数将其打印到控制台,展示了Groovy语言的多功能性和表现力。

此外,我们展示了Groovy如何简化复杂操作,例如使用闭包将数字列表转换为包含每个数字的平方的新列表。这展示了Groovy如何通过为日常编程任务提供简洁、可读的语法来提高开发者的生产力。

因此,明显可以看出Groovy值得每个开发者的关注。

Crystal

经过广泛的研究,我们不禁将Crystal添加到我们的列表中。不,我们不是在谈论矿物质!Crystal是一种通用的面向对象编程语言,于2014年发布。它的语法与Ruby非常相似,同时又具有快速和高效的特点。通过静态类型系统和提前编译,Crystal提供了C语言的速度和Ruby语言的简洁性。

Crystal是一种相对较新的编程语言,因其卓越的速度和易用性而受到开发者的青睐。它经常被描述为“快如C,简洁如Ruby”,强调了它能够提供闪电般快速的性能,同时保持Ruby友好的语法和可读性。

然而,Crystal通过牺牲Ruby的一些动态特性和限制某些编程结构来实现其令人印象深刻的速度。尽管如此,这种权衡使得Crystal成为一种在更友好的语言中构建高性能应用程序的有吸引力的选择。

# 为具有名称和年龄属性的人定义一个类
class Person
  getter name : String
  getter age : Int32

  def initialize(@name : String, @age : Int32)
  end
end

# 创建一个Person对象数组
people = [Person.new("Alice", 25), Person.new("Bob", 30), Person.new("Charlie", 35)]

# 使用块过滤年龄大于等于30的数组,并将名字映射为大写
names = people.select { |person| person.age >= 30 }.map { |person| person.name.upcase }

# 打印结果为大写的名字数组
puts names.inspect

这段代码展示了Crystal在语法、性能和类型安全性方面的优势。Crystal的语法类似于Ruby,使其易于阅读和编写。然而,Crystal编译为本机代码,执行速度比像Ruby这样的解释性语言更快。

此外,Crystal是静态类型的,这提供了编译时的类型安全性并提高了性能。在这个示例中,代码使用块来根据年龄过滤一个Person对象数组,并将名字映射为大写,展示了Crystal语法的灵活性和表现力。

Reason

Reason是一种当代编程语言,其语法类似于JavaScript或其他C家族语言,具有OCaml的强大类型系统。由于它强大的类型检查能力,开发者可以更早地发现问题并编写更健壮可靠的代码。

Reason的用户友好界面和简单设计使其成为各种编程工作的绝佳选择,无论您的编程经验水平如何。

Reason和OCaml是高度灵活的编程语言,可以在各种环境中使用,这要归功于支持它们的众多项目。使用标准编译器,您可以构建可以直接在计算机上运行的本机可执行文件。此外,还有一些工具如“dune”和“esy”可以帮助完成这个过程。

另一种选项是将Reason编译为与浏览器兼容的JavaScript代码,这可以通过项目ReScript(以前称为BuckleScript)和Js_of_ocaml实现。这些多功能选项使得Reason和OCaml对各行各业的开发人员非常有吸引力。

Reason是一种现代的编程语言,具有用户友好的界面和与JavaScript类似的语法。它的通用性和简单的设计使得它成为各行各业开发人员的热门选择。

结论和免责声明

好吧,我们都有不同的偏爱,但上述语言是值得尝试的,因为它们带来了许多新功能,并解决了以前语言遗留下来的许多问题。

Elm非常适合更整洁的代码分离和模块化编程。Pony是最适合异步编程的语言之一。

尽管Vyper在智能合约语言领域相对较新,但它为Solidity提供了一种有前途的替代方案。Vyper在合约定义和错误处理方面表现出色。另一方面,R被认为是最适合分析的语言之一,并且已经拥有一个伟大的社区。

还有一些特定的语言正在与本文中的语言一样受到越来越多的欢迎,但由于各种原因未被列入列表。以下是一个快速查看:

  • Golang:已经成为主流语言,虽然不是非常受欢迎。我相信在这一点上,Golang有几个竞争对手将使其市场份额低。
  • Swift:Apple对其生态系统有着坚定的控制力,Swift是唯一可用的语言。以前,Objective C是流行的语言,现在是Swift。我认为这是作弊,所以拒绝在这里包括它。😀

未来总是不确定的,规划职业生涯的一种方式是坚持已经运作良好的内容,拒绝被“分心”。如果您这样做,Java、PHP、Python、Ruby等都是值得坚持的优秀语言。然而,对于我们中的一些人来说,常规是不够的。他们希望去探索并在未来大胆押注。如果您属于后一种人群,这五种语言中的一种应该是您的首要任务。

最后,在评估一种语言时,不要让努力压倒您,因为事实并不如此。如果您已经了解一些编程语言,您可以在最多两个月的时间内学会其中任何一种,每周花费5-6小时的时间。而未来可能产生的幸福和经济回报将是数倍以上。

接下来,您可以查看programming languages to use in data science

类似文章