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

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

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

تاریخچه[ویرایش]

خوزه ولیم (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

پیوند به بیرون[ویرایش]