Elixir ﹏ヽ暗。殇╰゛Y 2023-06-15 11:24 22阅读 0赞 [![Elixir Logo][]][Elixir Logo 1] * [首页][Elixir Logo 1] * [安装][Link 1] * [指南][Link 2] * [服务器][Link 3] * [学习][Link 4] * [文档][Link 5] * [发展][Link 6] * [博客][Link 7] * [包][Link 8] ![Elixir Sample][] Elixir是一种函数式动态语言,用于构建可伸缩、易维护的应用程序。 Elixir是基于Erlang VM的,其广为人知的特点是运行低延时、分布式、可容错的系统,并成功用于Web开发与嵌入式软件领域。 要了解更多关于Elixir的信息,请查看我们的 [入门指南][Link 2] 和 [学习资源][Link 4]. 或者继续阅读以获得平台、语言和工具的概述。 ### 平台特性 ### 可伸缩 所有Elixir代码运行于相互隔离的轻量级线程中,相互间通过message通信: current_process = self() # Spawn an Elixir process (not an operating system one!) spawn_link(fn -> send current_process, {:msg, "hello world"} end) # Block until the message is received receive do {:msg, contents} -> IO.puts contents end 由于它们的轻量特性,在同一台机器上同时运行数十万个进程并不少见。隔离允许独立地对进程进行垃圾收集,减少系统范围内的暂停,并尽可能高效地使用所有机器资源(垂直扩展)。 进程还可以与同一网络中不同计算机上运行的其他进程通信。这为分发提供了基础,允许开发人员协调跨多个节点的工作(水平缩放)。 容错性 关于软件运行在产品环境的一个无法避开的真相:总是会出错,加上网络、文件系统及其他第三方资源的问题会更多。. 为了应对各种失误,Elixir提供了supervisor - 描述当事情变得扭曲时如何重启你的系统的某些部分,返回已知的能保证正常运行的初始状态: children = [ TCP.Pool, {TCP.Acceptor, port: 4040} ] Supervisor.start_link(children, strategy: :one_for_one) ### 语言特性 ### 函数式编程 函数式编程提升了编码风格、帮助开发者写出简短、快速及可维护的代码。例如,模式匹配允许开发者轻易就能结构数据并访问它的内容: %User{name: name, age: age} = User.get("John Doe") name #=> "John Doe" 当你想加入guard时,模式匹配允许我们优雅的匹配与声明某些代码执行的特定条件: def drive(%User{age: age}) when age >= 16 do # Code that drives a car end drive(User.get("John Doe")) #=> Fails if the user is under 16 Elixir强烈依赖那些特性,来确保你的软件运行于预期的约束下。如果没有,也别担心,supervisors会支持你的! 可扩展性 和 DSLs Elixir被设计成了可扩展的语言,让开发者自然的扩展语言到特定领域,以便增加他们的生产力。 举个例子,让我们使用[Elixir的测试框架-ExUnit][Elixir_-ExUnit]来写个简单的测试用例: defmodule MathTest do use ExUnit.Case, async: true test "can add two numbers" do assert 1 + 1 == 2 end end `async: true` 选项允许测试运行在并行模式,尽可能使用更多的CPU核,同时断言函数可以内省(introspect)你的代码,提供失败情况下的强大报告。那些特性是用Elixir的宏来构建的,让其可以添加新的结构并作为语言本身的一部分存在。 ### 工具特性 ### 发展中的生态系统 Elixir发布了整套工具来简化开发。 [Mix是一套build工具][Mix_build],它让你很简单的就能创建项目、管理任务、运行测试以及更多: $ mix new my_app $ cd my_app $ mix test . Finished in 0.04 seconds (0.04s on load, 0.00s on tests) 1 tests, 0 failures Mix is also able to manage dependencies and integrates nicely with the [Hex package manager][Link 8], which provides dependency resolution and the ability to remotely fetch packages. 交互式开发 像[IEx (Elixir的交互式shell)][IEx _Elixir_shell]能提供语言和平台各方面的特性,如自动完成、调试工具、代码重新载入、良好格式化的文档: $ iex Interactive Elixir - press Ctrl+C to exit (type h() ENTER for help) iex> h String.trim # Prints the documentation for function iex> i "Hello, World" # Prints information about the given data type iex> break! String.trim/1 # Sets a breakpoint in the String.trim/1 function iex> recompile # Recompiles the current project on the fly 兼容Erlang Elixir运行于Erlang VM,给开发者提供了Erlang生态系统的完整访问能力,[Heroku][], [WhatsApp][], [Klarna][] 等等很多公司都在使用它来构建分布式、高容错的应用程序。Elixir程序员可以调用Erlang函数并且没有任何运行时开销: iex> :crypto.hash(:md5, "Using crypto from Erlang OTP") <<192, 223, 75, 115, ...>> To learn more about Elixir, check our [入门指南][Link 2]。我们还提供[在线文档][Link 5] ,并提供[Erlang开发人员速成课程][Erlang]。 [Elixir Logo]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9lbGl4aXItbGFuZy5uZXQvQXBwbGljYXRpb24vSG9tZS9WaWV3L1B1YmxpYy9pbWcvbG9nby5wbmc?x-oss-process=image/format,png [Elixir Logo 1]: https://elixir-lang.net/ [Link 1]: https://elixir-lang.net/install.html [Link 2]: https://elixir-lang.net/getting-started/introduction.html [Link 3]: https://s.click.taobao.com/t?e=m%3D2%26s%3Df0ntQaq5zPkcQipKwQzePCperVdZeJviEViQ0P1Vf2kguMN8XjClAgRBzVAhFgUhWdd%2Fg91C2PM%2BmQ3egC%2F94DOZ2Eo%2FhJ2GV7tZuxJzJZk7KTnBV8uXFLQSagpmjt6IiYWStHE%2B0ceFSvfO0N66nzO5MaXTjVACe2l9FrhMrdPv%2BfHIT3CFRNdvthxiSWPsdnn9YK8Mk5i0umpxlmNZvcHUVHTAhAObcSpj5qSCmbA%3D [Link 4]: https://elixir-lang.net/learning.html [Link 5]: https://elixir-lang.net/docs.html [Link 6]: https://elixir-lang.net/development.html [Link 7]: https://elixir-lang.org/blog/ [Link 8]: https://hex.pm/ [Elixir Sample]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9lbGl4aXItbGFuZy5uZXQvQXBwbGljYXRpb24vSG9tZS9WaWV3L1B1YmxpYy9pbWcvaG9tZS1jb2RlLnBuZw?x-oss-process=image/format,png [Elixir_-ExUnit]: https://hexdocs.pm/ex_unit/ [Mix_build]: https://hexdocs.pm/mix/ [IEx _Elixir_shell]: https://hexdocs.pm/iex/ [Heroku]: https://www.heroku.com/ [WhatsApp]: https://www.whatsapp.com/ [Klarna]: https://klarna.com/ [Erlang]: https://elixir-lang.net/crash-course.html
相关 Elixir [![Elixir Logo][]][Elixir Logo 1] [首页][Elixir Logo 1] [安装][Link 1] [指南][Link 2 ﹏ヽ暗。殇╰゛Y/ 2023年06月15日 11:24/ 0 赞/ 23 阅读
相关 linux代码在线查看 https://elixir.bootlin.com/linux/latest/source 1.https://elixir.bootlin.com (只能搜索函数和宏定义,功能单一) 2.https://lxr.missinglinkelectronics 灰太狼/ 2022年11月27日 05:24/ 0 赞/ 17 阅读
相关 [译] Elixir、Phoenix、Absinthe、GraphQL、React 和 Apollo:一次近乎疯狂的深度实践 —— 第二部分(测试相关部分)... > 原文地址:[Elixir, Phoenix, Absinthe, GraphQL, React, and Apollo: an absurdly deep dive 本是古典 何须时尚/ 2022年10月01日 07:58/ 0 赞/ 15 阅读
相关 Elixir 1.2带来多项功能增强和性能提升 José Valim宣布了Elixir这门动态、函数式编程语言的1.2版本。 \\\\ Valim是Elixir的创建者。他表示,1.2版本“带来了功能增强、Bug修复、性 矫情吗;*/ 2022年02月22日 03:17/ 0 赞/ 218 阅读
还没有评论,来说两句吧...