首页 >热门资讯> 数据分析 > 现代编程语言终极测评:四星篇 >

现代编程语言终极测评:四星篇

转载时间:2022.01.05(原文发布时间:2021.01.12)
157
转载作者:36氪企服点评小编
阅读次数:157次

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:编程语言哪种好?这可能是许多学习编程人员甚至是外行人员都会面对的头疼问题。网络上普遍的编程语言介绍,大多都是东拼西凑的内容,并且无法让人真正认识和了解各种语言的优缺点。这篇文章,原标题是These Modern Programming Languages Will Make You Suffer,作者Ilya Suzdalnitski在文章中针对15种编程语言展开了详细测评,希望对你有所帮助。

现代编程语言终极测评:四星篇

图片来源:fullstackfeed

懒人目录

概述篇:编程语言最重要的特征

一星篇:C++,JAVA

二星篇:C#,Python,Rust,TypeScript

三星篇(上):Go,JavaScript

三星篇(下):Haskell,OCaml,Scala

四星篇:Elm,F#

五星篇:ReasonML,Elixir

Elm

现代编程语言终极测评:四星篇

Elm是一门最终会被编译为JS语言的编程语言,它主要使用在web前端开发中。

Elm最特别之处在于,它承诺过不会出现运行时异常,使用Elm的程序十分稳定。

所属的编程语系:ML

?非常好的错误信息

Elm编译器提供了一些我见过的最好的错误信息,这使得Elm对于新手而言,十分容易入手。

?错误处理

Elm没有运行时错误,这门语言不支持异常。Elm是一门没有运行时异常的纯函数式语言,这意味着,如果你的代码全部用Elm编写,那么你不会遇到运行时错误。在使用Elm时,你唯一会遇到的运行时错误,仅限于在和外界JS代码进行交互时。

Elm如何处理错误呢?就像许多其他的函数式语言一样,Elm使用Result数据类型。

?函数纯度

和Haskell一样,Elm是一门纯函数式语言。

由于没有运行时错误,Elm会让你更加高产,还是说,由于强制要求函数纯度,Elm会让你没那么高产呢?以我的经验来看,Elm中的任何显著重构都是灾难性的,因为里面涉及大量的工作。

仁者见仁智者见智,反正我是要给Elm的函数纯度点踩。

?过于固执

现代编程语言终极测评:四星篇

图片来源:Quigglez on Reddit

在模块1检测到错误。

语法问题:找到了一个tab字符,但是所有的空白(包括缩进)都必须是空格,而不是tab。

Elm是一门固执的语言。在Elm中使用tab会被认作语法错误。

Elm对“永不出错”的关注正在扼杀这门语言。它的最新版本(0.19)引入了一个突破性的变化,这使得它与JavaScript库的互操作几乎不可能。

当然,其目的是让人们在Elm编写自己的库,以帮助生态系统的发展。然而,很少有公司有资源来重新实现Elm中的一切。这使许多人放弃使用Elm。

Elm的设计者似乎过于关注函数纯度,使得“永不出错”的想法过于极端。

?没有React

Elm使用它自己的虚拟DOM,不像类似ReasonML的其他语言,它不使用React。这意味着开发者不能获取为React设计的组件和库的大生态系统。

??语言开发

遗憾的是,如今距离上一次Elm版本更新发布(0.19.1)已经过去了一年多了。其开发过程是不透明的,没有办法为开发贡献力量。Elm的每一个主要版本都引入了突破性变化,使得这门语言对于有些人不可用。

我们已经超过一年没有从它的创建者那听说它的相关消息了。我们不知道他是否还全职开发Elm,这门语言可能已经消亡了。

?模式匹配

Elm有很好的模式匹配支持。

?不可变性

Elm为不可变性数据结构提供了一流支持。

?空值

Elm不支持空引用,就像其他函数式语言一样,它使用Option模式进行替代。

结论

现代编程语言终极测评:四星篇

Elm是一门极好的语言,不幸的是,它似乎没有了未来。不过,Elm是一个了解函数式编程的很好方式。

F#

现代编程语言终极测评:四星篇

F#是由微软发展的为微软.NET语言提供运行环境的程序设计语言。它是基于OCaml的,它的语法和OCaml类似,只有一些小小的不同。F#最早出现于2005年,是一门拥有好的工具和丰富生态系统的成熟语言。

所属的编程语系:ML

??类型系统

唯一的类型系统缺点就是缺少高级类类型。不过,F#的类型系统还是非常可靠的,编译器几乎可以推论出任何东西。F#对ADT有合适的支持。

?函数式,但非纯函数

不像Haskell和Elm,F#很实用,不会强制要求函数纯度。

?学习资源

F#有一些很好的学习资源,可能和Elixir不相上下。

?学习时需要付出的代价 

F#是最容易上手的函数式语言之一。

?生态系统

F#社区很小,没有和Elixir相当的库。

?C#互操作

从好的方面来讲,F#可以获取整个.NET/C#生态系统,和现在的C#代码进行互操作是很好的。

?并发性

F#在CLR之上运行,它不像Elixir那样从Erlang VM获得了出色的并发支持(后文将详细介绍)。

?空值

F#代码中不常使用空值,它用Option模式来表示可能不存在的值。

?错误处理

惯用的F#代码用Result模式进行错误处理。

?不可变性

F#为不可变性数据结构提供了一流支持。

?模式匹配

F#有出色的模式匹配支持。

结论

现代编程语言终极测评:四星篇

F#是一门可靠的编程语言,它有很好的类型系统。F#几乎和Elixir一样,可适用于web的API开发(后文将详细介绍)。

但是,F#的问题不是它现在所有的,而是它没有的一些东西。相比于Elixir,Elixir的并发性特征,丰富的生态系统,还有惊人的社区都比F#提供的任何静态类型优点强。

奖项

现代编程语言终极测评:四星篇

F#获得了两个奖项。

第一,F#获得了“金融科技最佳语言奖”。众所周知,金融是F#最大的应用领域之一。

第二,F#同时还获得了“企业软件最佳语言奖”。它丰富的类型系统允许对复杂的商业逻辑建模。

延伸阅读:

  • 现代编程语言终极测评:概述篇

  • 现代编程语言终极测评:一星篇

  • 现代编程语言终极测评:二星篇

  • 现代编程语言终极测评:三星篇(上)

  • 现代编程语言终极测评:三星篇(下)

  • 现代编程语言终极测评:五星篇

译者:俊一

[免责声明]

资讯标题: 现代编程语言终极测评:四星篇

资讯来源: 36氪官网

36氪企服点评

数据分析相关的软件

行业专家共同推荐的软件

限时免费的数据分析软件

消息通知
咨询入驻
商务合作