الیکسیر (زبان برنامه‌نویسی)

الیکسیر (به انگلیسی: Elixir) یک زبان برنامه‌نویسی تابعی، همروند با کارایی عمومی است که بر روی ماشین مجازی ارلنگ (BEAM) اجرا می‌شود. الیکسیر بر روی ارلنگ ساخته شده‌است تا بتواند امکان نوشتن برنامه‌های توزیع‌شده، مقاوم در برابر خطا، زنده و بدون وقفه را ارائه کند، اما با گسترش این امکانات، ویژگی‌های برنامه‌نویسی متا با استفاده از ماکروها و چندریختی از طریق پروتکل‌ها را نیز فراهم می‌کند.

الیکسیر (زبان برنامه‌نویسی)
الگو برنامه‌نویسیپارادایم برنامه‌نویسی: برنامه‌نویسی تابعی، concurrent، رایانش توزیع‌شده، process-oriented
ظهوریافته در۲۰۱۱ (۲۰۱۱)
انتشار پایدار
۱٫۵٫۱
۱ اوت ۲۰۱۷ (۲۰۱۷-۰۸-01)
dynamic، وابستگی زیاد و کم به نوع
بن‌سازه رایانشارلنگ
پروانهمجوز آپاچی
.ex, .exs
وبگاه
متأثر از
ارلنگ، روبی (زبان برنامه‌نویسی)، کلوژر
تأثیر گذاشته بر
LFE

تاریخچه

خوزه ولیم (José Valim) سازنده زبان برنامه‌نویسی الیکسیر است، یک پروژه تحقیق و توسعه در شرکت Plataformatec. هدف او فراهم کردن گسترش‌پذیری و بهره‌وری بیشتر در ماشین مجازی ارلنگ بود، به شکلی که با ابزارها و اکوسیستم ارلنگ سازگار باقی بماند.

ویژگی‌ها

  • یک زبان که به بایت‌کد ماشین مجازی ارلنگ (BEAM) کامپایل می‌شود.
  • همه چیز یک عبارت است.
  • توابع ارلنگ به دلیل کامپایل به بایت‌کد ارلنگ و برعکس، می‌توانند بدون داشتن هیچ تأثیری بر روی سرعت اجرا فراخوانی شوند.
  • برنامه‌نویسی متا امکان تغییر مستقیم AST را فراهم می‌کند.
  • امکان چندریختی از طریق مکانیزمی که «پروتکل» نامیده می‌شود. مانند کلوژر، پروتکل‌ها یک مکانیزم توزیع پویا را فراهم می‌کنند.
  • پشتیبانی از مستندات از طریق docstringهای مشابه پایتون.
  • برنامه‌نویسی همروند بدون اشتراک چیزی از طریق انتقال پیام (مدل Actor)
  • همروندی کم حجم با استفاده از ابزارهای و مکانیزم‌های ارلنگ و سینتکس ساده (برای مثال Task)
  • انطباق الگو
  • پشتیبانی از یونیکد و رشته‌های UTF-8.

مثال‌ها

مثال‌های مقابل می‌توانند در یک پوسته iex، یا با ذخیره کردن در یک پرونده و تایپ دستور elixir <filename> از طریق خط فرمان اجرا شوند.

مثال Hello World کلاسیک:

iex> IO.puts "Hello World!"
Hello World!

ادراک

iex> for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n
[1, 9, 25]

انطباق الگو

iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"

ماژول‌ها

defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n) do
    fib(n-2) + fib(n-1)
  end
end

پیوند به بیرون

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.