前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ruby vs Elixir | 2022 该选哪个?

Ruby vs Elixir | 2022 该选哪个?

作者头像
RiemannHypothesis
发布于 2022-09-28 08:11:14
发布于 2022-09-28 08:11:14
1.9K0
举报
文章被收录于专栏:ElixirElixir

Contents

Ruby 和 Elixir(以及 Phoenix) 的起源

Ruby 和 Ruby on Rails

RubyRuby on Rails 可能并不需要过多的介绍,因为它们已经被广泛的应用在 Web 开发领域。

Ruby,创建于 1995 年,目标是让开发者的工作更加效率和有更多的乐趣

Ruby on Rails 的通过提供更多的特定功能的 gems 库使得可以是开发者在开发 Web 应用的时候更效率。对于有经验的开发者来说,ROR(Ruby on Rails 简称)是一个非常优秀的 Web 框架,具有创建功能强大且更加健壮的 Web 应用程序的能力。

RoR 改变了 Web 应用开发领域,通过引入工具促进应用程序快速开发并且使得编写代码变得有了更多的乐趣,ROR 也为之后的一些 Web 框架确立了方向。

ROR 扩展阅读

你也可以阅读另一篇关于 Ruby on Rails 的文章 Why Ruby on Rails Is Still a Good Choice in 2022 [UPDATED]

Elixir 和 Phoenix

Ruby 和 Elixir 有很多相似的地方,Elixir 的创建者 José Valim 曾是 Rails 团队的核心成员,他非常赞同 Ruby 灵活、干净、优雅的语法,但是 Ruby 使用的越久,就越来越意识到 Ruby 还有很大的可改进的地方,它最大的一个关注点 - Ruby 代码在并发和吞吐量方面的限制已经被解决,José Valim 明确了自己要做什么,那就是基于 Ruby 的优点并在 Ruby 指向创造一个完全不同的语言,构建于 Erlang 虚拟机上来解决并发限制的问题,Elixir 的构想诞生了。

至于 Phoenix,它是一个基于 Elixir 的 Web 开发框架,由 Chris McCord 开发出来,与 José Valim 一样具有 Rails 框架的影响,Chris 的 Phoenix 框架借鉴的 Rails 的基本结构,旨在创建一个比 Rails 更加优秀的 Web 框架。

下表为 Ruby, Elixir, RoR, 和 Phoenix 的简单比较

Ruby

Elixir

Ruby on Rails

Phoenix

时间

1993

2012

2004

2014

作者

Yukihiro Matsumoto

José Valim

David Heinemeier Hansson

Chris McCord

作用

Object-oriented programming language

Functional programming language

Server-side web application framework

Web application framework

原因

Developer happiness

Concurrent language

Rapid application development

Simplicity and joy in writing modern web applications with functional ideas

搞清楚 Ruby 和 Elixir 的优劣势

在有了对 Ruby 和 Elixir 的基本了解之后,我们来看看这两种编程语言各自提供了什么,并多了解一些它们在各自最流行的框架上的一些额外的细节。

Elixir 的优势

经得起时间考验的解决方案(指 Elixir 运行在 Erlang VM 上)

上面已经提到,Elixir 是运行在 Erlang 虚拟机上(BEAM),不仅仅是因为 Erlang VM 是互联网历史上最古老的虚拟机,还因为 Erlang 虚拟机目前仍然在使用。由于 Erlang 应用于电信行业,所以 Erlang 非常适合构建高并发的应用。

分布式并发

也是由于 Erlang 在电信行业的广泛应用,使得 Erlang 适合管理大量连接,Elixir 也支持并发。Elixir 可以在单台或者多台机器上创建大量连接。

使用 Elixir 的一个最大的好处就是你可以使用单核服务器上的单核 CPU 或者多核服务器上的多个 CPU 核心

plus:早期的语言如 Python、C 只能使用服务器的单核进行计算(即使服务器有多核),当然也是由于这些语言设计与单核计算机时代。

轻量级进程

在 Elixir 中,代码通过进行来执行,Elixir 并发的核心就是每个进程都是轻量级的继承,仅消耗极少的内存和 CPU,可以同时创建成千上万个轻量级进程。

因此 Elixir 非常适合高并发、高容错性的应用。

可伸缩性

如果系统或者应用在未来的流量会大增,Elixir 的一大优势就是可以最大程度的利用一台机器。使用 Elixir 无需在应用程序的架构中添加更多服务器来满足越来越多的用户产生的带宽需求。

周到的语法设计

Elixir 有非常清晰的语法、模式和设计,有助于开发者可以更容易理解函数式编程语言中的那些晦涩难懂的概念。

Open-Telecom 平台 (OTP)

Elixr 源自于 Erlang 的 Open-Telecom 平台 (OTP)。 OTP 是一组旨在简化并发应用程序创建的工具。OTP 最大的特点是编写容错应用程序。通过内置的框架或者工具,开发人员可以构建自己的能够处理大并发连接的应用。

Erlang 库

Elixir 可以调用 Erlang,Elixir 项目中可以非常方便的集成 Erlang 的库。

相关文档

Elixir 官方网站 上有大量的 Elixir 使用的文档,以及非常活跃的 Elixir 社区,文档也可以从终端中阅读,非常方便。

Phoenix 框架的性能

Phoenix 是最流行的 Elixir Web 开发框架,喜爱响应时间可以达到毫秒级。虽然 Rails 的响应时间也可以达到毫秒,但是差了一个数量级。

Elixir 的劣势

Narrow Talent Pool

虽然 Elixir 诞生于 2011 年,但 Elixir 仍然被认为是一种小众语言。导致很多方面的空白。然而,由于 Elixir 的设计参考了 Ruby,所以 Ruby 开发者会更容易学习以及上手使用该语言。但是,对于许多缺乏经验的开发人者,一开始可能会比较困难。

函数式编程

Elixir 是函数式编程语言,而 Ruby 是面向对象编程语言(也支持函数式编程)。以这种方式理解这两种编程范式的差异可能会有些困难。但是从一种范式转换到另一种范式并不是不可能的,这只是获得一种新的软件开发思维方式的问题。

相对较小的生态

上面提到 Elixir 虽然可以调用 Erlang,但是即便对老手来说,构建 Elixir 项目时依然会从零开始。

Ruby 的优势

高效并使人愉快的一门语言

在创建 Ruby 时,松本幸弘的目标是构建一种让开发者乐于使用的编程语言. Ruby 简洁的语法显然有助于开发者阅读和编写代码。

优秀的框架:Ruby on Rails

大多数人听到 Ruby 时,立刻想到 Ruby on Rails — 这也证明了框架在语言中的地位。因为 Ruby on Rails 彻底改变了现代Web应用程序的创建方式。

通过引入 gems,Ruby on Rails 使得构建 MVPsprototypes, Proofs of Concept 成为可能,甚至可以通过少量的代码快速构建一个小型应用。

庞大的生态

Ruby 和 RubyonRails都有一个庞大的库的生态。gem 可以实现你想要实现功能。无论你需要什么工具来构建一个成熟的应用程序,你都会找到一个工具来帮助你。丰富的 gems 使 Ruby 和Ruby on Rails 成为构建这应用程序的快速且成熟解决方案。

活跃的社区

Ruby和Rails社区都很活跃,有很多贡献者发布了现成的开源解决方案。

知名度

在 Elixir 和 Ruby 的知名度上,很明显 Ruby 更胜一筹。更高的知名度意味着更多的资源,更大的社区以及更多有着丰富的语言使用经验的开发者。

Source: Stack Overflow 2022 Survey - most popular technologies

在下面这个排行榜中,Elixir 的排名在 50 名开外。

Ruby’s popularity. Source: TIOBE Index for June 2022

此外,与知名度较低的 Phoenix 相比,使用 Rails 可以获得更多的支持和的第三方库。

Ruby 的劣势

并发

与 Elixir 相比,Ruby 不适合开发并发 Web 应用。

可以使用Ruby 并发工具来编写并发 Web 应用程序;然而,如果没有额外的工具,Ruby的全局解释器锁(GIL)一次只允许执行一个线程。如果没有内置的并发性,开发者就无法有效地管理可用的硬件资源——这是每个大流量的应用程序所必需的。

性能与开发速度

Ruby速度不慢,但不如Elixir快。然而特殊情况下,较差的性能通常是缺乏经验的结果。

经验丰富的 Ruby开发者可以快速创建企业级应用。但如果你设计了一款流量大的应用,Ruby 都可能无法胜任。 当然,随着 Ruby 3 的推出,这一点可能会发生变化,据说它的性能与以前的版本相比提高了三倍。

可维护性

GEM 使 Ruby 和 Rails 成为开发人员在编写 Web 应用时有许多现成的解决方案可以选择,但在长期维护方面,GEM 也可能导致许多问题。

在 Ruby 中 惯例优于配置,以保持代码简洁并使开发人员更有效率。但是,当经验较少的开发人员不知道 Rails 背后的细节时,可能会导致阻碍生产力和维护的错误发生。

Elixir 和 Ruby 的最佳实践

在了解了这两种语言之间的差异之后,我们来看看 Elixir 和 Ruby 的最适合的使用场景。

Elixir - 最佳实践

  • high-traffic applications (messages, chats, etc.) 大流量应用
  • applications with 100–1,000,000 simultaneous connections on a single computer,单机需要 100-1,000,000 个连接的应用
  • Web applications with a large number of users (thousands or hundreds of thousands) 大量用户的应用
  • Internet of Things app 物联网应用
  • distributed systems 分布式系统
  • software performing asynchronous tasks 异步任务应用
  • apps likely to be scaled and expanded in the future 可伸缩和扩展的应用

Ruby - 最佳实践

  • MVPs(Minimum Viable Product), PoCs(Proof of Concept)既小项目
  • app concepts,概念应用
  • prototypes,原型
  • marketplaces
  • 用户数不多的中小型应用

当然,可以同时使用 Elixir 和 Ruby,取其精华去其糟粕。

规模和用户对 Web 应用程序是相对的概念。一般来说,Ruby 可能会遇到一款大流量、类似 Twitter 的应用程序或类似的需求。

最后,到底是选择 Elixir 还是 Ruby?

这种问题一般都没有明确的答案。Elixir 和 Ruby 都是构建各种应用程序、软件或系统的优秀工具。重要的是始终选择最适合项目的技术。

事实上 Elixir 已经得到一些曝光,许多软件公司都将 Elixir 纳入了他们的产品中,我们也这么做了,因为这是一项伟大的技术,可以产生令人难以置信的结果!

举个例子:比如在一台服务器上创建130万个连接!。但是,对于不需要 Elixir 独特功能的项目来说,这可能是一种过火的做法,所以仅仅因为这项技术越来越受到关注,并不意味着你应该不惜一切代价追随它

如果的应用是最佳实践中列出来的那些应用,请直接选择 Elixir,使用 Elixir 将会获得非常好的体验。但是请相信这也是那些老项目中的优秀的 Ruby 代码所强烈需要的。

本文翻译自 https://www.monterail.com/blog/ruby-vs-elixir

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elixir vs. Ruby和Phoenix vs. Rails:选择什么和为什么
几年来,Web开发人员一直在积极讨论一种名为Elixir的新编程语言及其最受欢迎的Phoenix框架。 Elixir与Ruby和Phoenix vs. Rails是最受欢迎的主题之一,因为Elixir引起了Ruby开发者社区的最大兴趣。
Bessalitskykh
2018/12/18
2.7K0
从 Go 开发者的角度看 Elixir 的设计思想
英文原文:Elixir concepts for Go developers 基于 Elixir 的 Web 框架 Phoenix 受到了 Meteor 和 Rails 社区的广泛关注,所以今天我们推荐这篇文章,让大家了解这一新兴语言! 这篇文章不是带你入门的,我只是把玩了一下这个编程语言,也不是什么专家,就把我写的当做一道开胃菜吧。我只是把我几个小时的调研结果汇总一下,以便能够帮助大家花几分钟读完之后再看 Elixir 是否吸引到了你。 本文内容目录如下: Elixir 是什么 弹性的不可变性 模式匹配
时见疏星
2018/06/01
1.2K0
2017,忘掉「全栈」,迎向「一栈」!
Phoenix 作为一款高性能的 Web 开发框架受到广泛关注。可以遇见,在不就的将来,Elixir + Phoenix 的技术栈就会占据现有 Ruby + Rails 的半壁江山。Elixir 无论是在语言设计还是运行性能上都优于Ruby,可谓吸收了函数式编程和 Ruby 语言的精髓。Elixir 基于的 Erlang VM(BEAM)也是久经考验的虚拟机,其历史甚至超过了 JVM。 当然,Elixir 不仅仅可以用来做网站,它可以用来构建大规模分布式服务,编写高性能游戏服务器,编写高速交易系统,深度学
时见疏星
2018/06/01
1.3K0
Erlang 和 Elixir 介绍
Erlang(Ericsson Language)是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于BEAM(Bogdan/Björn’s Erlang Abstract Machine)虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erl
时见疏星
2018/06/01
2.2K0
Phoenix 1.3,迈向正确的道路
距离 1.2 发布已经有一年多,而 exlirconf 2016 McCord 宣布 1.3 的特性也已过去半年,phoenix 1.3 依旧犹抱琵琶半遮面,迟迟不肯现身。几天前,1.3 RC.0 悄然发布,我们终于可以一睹她的芳容。 引子 因为程序人生的读者大多不是 elixir / phoenix 的用户,所以在这里小小普及一下。elixir 是在 erlang VM 上发布的一门语法类似 ruby,能力完全继承 erlang,并支持 metaprogramming 的函数式编程语言。erlang VM
tyrchen
2018/03/29
1.7K0
Phoenix 1.3,迈向正确的道路
Phoenix Framework — 新一代的实时 Web 框架
Jose Valim - Phoenix a web framework for the new web (Lambda Days 2016) 这是Elixir语言的设计者,Phoenix框架的主要贡献者Jose Valim对于Phoenix框架的介绍视频。 Elixir是一种运行于ErlangVM上具有元编程特性的动态语言。它拥有灵活的语法和强大的宏系统,还具备模式匹配、通过协议(类似Clojure的方式)支持多态等功能:继承了Erlang的优点,尤其适合开发并行、分布式,以及高容错应用。 Phoeni
时见疏星
2018/06/01
2.4K0
Elixir和OTP中面向过程的编程指南
这篇文章感觉介绍语言是次,讲解各种各种分类以及面向过程的思想为主。本身我也没接触过Elixir,这次也权当开拓视野了。最后附加了一个英语单词的小解,当学习之余的做零头吧。
WindCoder
2018/09/19
1.5K0
Elixir和OTP中面向过程的编程指南
Elixir, OTP, Ecto, 和 Phoenix 免费教程!
今天,DailyDrip发布了五周的免费内容,向人们介绍Elixir编程语言,并准备使用Ecto和Phoenix构建Web应用程序。我们制作了25个短片(每个约5分钟),这将使你从“Elixir是什么
时见疏星
2018/06/01
2K0
elixir:灵丹妙药?or 徒有其名?
13年的时候正在追Erlang,有天看见Joe老爷子的一篇博客介绍Elixir [1],才第一次听到这个语言。 This has been my first week with Elixir, and I’m pretty excited. Elixir has a non-scary syntax and combines the good features of Ruby and Erlang. It’s not Erlang and it’s not Ruby and it has ideas of
tyrchen
2018/03/28
1.5K0
elixir:灵丹妙药?or 徒有其名?
OpenTelemetry Erlang/Elixir、Javascript和Ruby发布v1.0
作者:Tristan Sloughter (与 Daniel Dyla 和 Robert Laurin 合作。)
CNCF
2022/03/27
8090
Python 和 Ruby 的对比
最近在考虑学习一门后端语言,在ruby和python直接犹豫,然后自己做了一些对比,希望能帮到有同样问题的你。
用户7886150
2020/11/20
1.6K0
最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?
本文绝非标题党,而是基于大量数据和为期两周的深入探究,在18年初,对IT行业的现状、趋势以及预测进行客观观察,让大家对编程语言有一个更清晰的认识,以选择最值得花费时间和精力的职业方向,为大家走向码农事业巅峰助攻。
IT阅读排行榜
2018/08/16
1.4K0
如何在 IntelliJ 上运行 Elixir 和 Phoenix 程序?
Elixir 是一门非常强大的 函数式 编程语言,Elixir 社区构建了一个插件,该插件可以在 Jetbrains 的 IDE 上运行 Elixir 程序且是用于所有的 Jetbrains 产品。
RiemannHypothesis
2022/09/28
1.6K0
如何在Ubuntu 18.04上使用rbenv安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序堆栈之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
司徒永哥
2018/10/10
7.4K0
后端框架有哪些?8个流行的后端框架推荐
在选择要使用的后端框架时,有许多选项可用。虽然每个后端框架都有自己的优点和缺点,但在做出最终决定之前,还有一些其他因素需要考虑。在本指南中,我们将仔细研究经过尝试的框架,以确定哪个是最适合您的后端框架。
全栈程序员站长
2022/06/28
8.6K0
后端框架有哪些?8个流行的后端框架推荐
如何在Debian 8上使用RVM安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序框架之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
好烟
2018/07/26
6K0
我终于逃离了 Node
作者 | Anthony Accomazzo 译者 | 王强 策划 | 蔡芳芳 本文最初发布于 acco.io 网站,经原作者授权由 InfoQ 中文站翻译并分享。 我在 2013 年编写了自己的第一个 Node 程序。(它是用 CoffeeScript 写的。) 那个时候,Node 的优势主要体现在三个方面: 第一个是“无处不在的 JavaScript”。这句话一开始的意思是“前端使用 JavaScript,后端也使用 JavaScript”,我一直觉得这个理由没那么强势。(后来它演变成了“强大就是正义”
深度学习与Python
2023/04/01
5680
我终于逃离了 Node
如何在Ubuntu 16.04上使用Distillery和edeliver自动化Elixir-Phoenix部署
Elixir构建于Erlang编程语言之上,是一种功能性编程语言,因其专注于开发人员的工作效率以及因为编写高度并发和可伸缩的应用程序而易于使用而闻名。
风研雨墨
2018/09/19
4.5K0
盘点丨2018年最适合学习的编程语言
需要明确的是,这并不是介绍最热门的语言,然后抛出各种名称和流行语。而是根据2018年IT行业现状、趋势和客观的预测。
CDA数据分析师
2018/07/30
1.1K0
盘点丨2018年最适合学习的编程语言
如何在Ubuntu 18.04上安装Elixir和Phoenix Framework
本教程将向您展示如何在Ubuntu 18.04服务器实例上安装Elixir和Phoenix frameworks以进行开发。
星哥玩云
2022/07/27
1.6K0
如何在Ubuntu 18.04上安装Elixir和Phoenix Framework
相关推荐
Elixir vs. Ruby和Phoenix vs. Rails:选择什么和为什么
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档