إليكسير (لغة برمجة)

إليكسير هي لغة برمجة وظيفية ، متزامنة ، عالية المستوى، وعامة الأغراض، تعمل على آلة BEAM الافتراضية ، المستخدمة أيضًا لتنفيذ لغة البرمجة إرلانج . [ 7 ] تعتمد إليكسير على إرلانج وتتشارك معها نفس المفاهيم المجردة لبناء تطبيقات موزعة ومقاومة للأعطال . كما توفر إليكسير أدوات وتصميمًا قابلًا للتوسيع . يدعم هذا الأخير البرمجة الوصفية في وقت الترجمة باستخدام وحدات الماكرو وتعدد الأشكال عبر البروتوكولات. [ 8 ]

تنظم الجماعة فعاليات سنوية في الولايات المتحدة [ 9 ] ، وأوروبا [ 10 ] ، واليابان [ 11 ] ، بالإضافة إلى فعاليات ومؤتمرات محلية صغيرة. [ 12 ] [ 13 ]

تاريخ

ابتكر خوسيه فاليم لغة البرمجة إليكسير كمشروع بحث وتطوير في شركة بلاتافورماتيك. وكان هدفه تمكين قابلية التوسع والإنتاجية بشكل أكبر في آلة إرلانج الافتراضية مع الحفاظ على التوافق مع بيئة إرلانج. [ 14 ] [ 15 ]

تستهدف لغة Elixir المواقع والتطبيقات واسعة النطاق. وهي تستخدم خصائص لغات Ruby وErlang و Clojure لتطوير لغة ذات تزامن عالٍ وزمن استجابة منخفض. وقد صُممت للتعامل مع كميات هائلة من البيانات. كما تُستخدم Elixir في مجالات الاتصالات والتجارة الإلكترونية والتمويل. [ 16 ]

في عام 2021، تم الإعلان عن مشروع Numerical Elixir بهدف إدخال التعلم الآلي والشبكات العصبية وتجميع وحدات معالجة الرسومات ومعالجة البيانات ودفاتر الحوسبة إلى نظام Elixir البيئي. [ 17 ]

سمات

أمثلة

يمكن تشغيل الأمثلة التالية في iexسطر الأوامر أو حفظها في ملف وتشغيلها من سطر الأوامر عن طريق كتابة .elixir <filename>

مثال كلاسيكي لـ " مرحباً بالعالم" :

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

عامل تشغيل الأنابيب:

iex> " Elixir" |> String.graphemes () |> Enum.frequencies ( ) %{ " E" => 1, "i" => 2, "l" => 1, "r" = > 1, "x" => 1}iex> %{ values ​​: 1 .. 5 } |> Map . get ( :values ​​) |> Enum . map ( & &1 * 2 ) [2, 4, 6, 8, 10]iex> %{ values ​​: 1 .. 5 } |> Map . get ( :values ​​) |> Enum . map ( & &1 * 2 ) |> Enum . sum () 30

مطابقة الأنماط (المعروفة أيضًا باسم التفكيك):

iex> %{ يسار : x } = %{ يسار : 5 , يمين : 8 } iex> x 5iex> { :حسنا , [ _ | راحة ]} = { :ok , [ 1 , 2 , 3 ]} iex> راحة [2, 3]

مطابقة الأنماط مع بنود متعددة:

iex > case File.read ( " path/to/file" ) do iex > { :ok , contents } -> IO.puts ( "تم العثور على الملف: #{ contents } " ) iex> { :error , reason } - > IO.puts ( "الملف مفقود: #{ reason } " ) iex > end

فهم القوائم :

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

قراءة الملفات بشكل غير متزامن باستخدام التدفقات:

1 .. 5 |> Task.async_stream ( & File.read ! ( " #{ & 1 } .txt" ) ) | > Stream.filter ( fn { : ok , contents } - > String.trim ( contents ) ! = " " end ) | > Enum.join ( " \ n " )

هياكل متعددة الوظائف مزودة بحواجز حماية :

دالة fib ( n ) عندما يكون n في [ 0 , 1 نفّذ : n دالة fib ( n نفّذ : fib ( n - 2 ) + fib ( n - 1 )

قواعد البيانات العلائقية باستخدام مكتبة Ecto:

مخطط "الطقس" do الحقل :المدينة # النوع الافتراضي :سلسلة الحقل :درجة الحرارة_المنخفضة , :عدد صحيح الحقل :درجة الحرارة_العليا , :عدد صحيح الحقل :درجة الحرارة_العليا , :عدد عشري , القيمة الافتراضية : 0.0 نهايةالطقس |> حيث ( المدينة : " كراكوف" ) |> ترتيب حسب ( :درجة الحرارة المنخفضة ) | > الحد ( 10 ) |> المستودع.الكل

إنشاء ألف عملية بالتتابع:

for num <- 1 .. 1000 , do : spawn fn -> IO . puts ( " #{ num * 2 } " ) end

تنفيذ مهمة بشكل غير متزامن :

task = Task.async fn- > perform_complex_action ( ) end other_time_sumption_action ( ) Task.await task

انظر أيضاً

مراجع

  1. ^ خوسيه فاليم (25 مايو 2012). "تم إصدار Elixir v0.5.0" . إكسير لانج . تم الاسترجاع في 22 يناير 2026 .
  2. "تطور لغة إليكسير: التاريخ والنظام البيئي" . معجم أنماط البرمجيات . 23 نوفمبر 2024. مؤرشف من الأصل في 22 يناير 2026. تم الاطلاع عليه في 22 يناير 2026 .
  3. وو، جياهاو (15 يناير 2024). "قصة الإكسير" . تاريخ المصادر المفتوحة . مؤرشف من الأصل في 15 يناير 2024. تم الاطلاع عليه في 22 يناير 2026 .
  4. https://github.com/elixir-lang/elixir/releases/ .{{cite web}}: مفقود أو فارغ |title=( مساعدة )
  5. "إصدار Elixir v1.20: لغة ذات كتابة تدريجية" . Elixir-lang.org . 3 يونيو 2026. تم الاطلاع عليه في 18 يوليو 2026 .
  6. "elixir/LICENSE at master · elixir-lang/elixir · GitHub" . GitHub .
  7. "أكثر لغات البرمجة شيوعًا في عام 2018 - مدونة إيليت إنفوورلد" . 30 مارس 2018. مؤرشف من الأصل في 9 مايو 2018. تم الاطلاع عليه في 8 مايو 2018 .
  8. 1 2 3 4 5 6 7 "Elixir" . elixir-lang . تم الاطلاع عليه بتاريخ 17 فبراير 2013 .
  9. "ElixirConf" . تم الاطلاع عليه بتاريخ 11 يوليو 2018 .
  10. "ElixirConf" . تم الاطلاع عليه بتاريخ 11 يوليو 2018 .
  11. "مهرجان إرلانج وإلكسير" . مؤرشف من الأصل في 30 مارس 2019. تم الاطلاع عليه في 18 فبراير 2019 .
  12. "Elixir LDN" . مؤرشف من الأصل بتاريخ 12 يوليو 2018. تم الاطلاع عليه بتاريخ 12 يوليو 2018 .
  13. "مؤتمر إمبكس - مؤتمر إمباير ستيت للإكسير" . تم الاطلاع عليه بتاريخ 12 يوليو 2018 .
  14. إليكسير - منهج حديث للبرمجة لآلة إرلانج الافتراضية . تم الاطلاع عليه بتاريخ 17 فبراير 2013 .
  15. خوسيه فاليم - الكلمة الرئيسية في مؤتمر ElixirConf EU 2017. مؤرشف من الأصل بتاريخ 17 نوفمبر 2021. تم الاطلاع عليه بتاريخ 14 يوليو 2017 .
  16. "خلف الكود: من ابتكر الإكسير" . تم الاطلاع عليه بتاريخ 25 نوفمبر 2019 .
  17. "Numerical Elixir (Nx)" . GitHub . تم الاطلاع عليه بتاريخ 6 مايو 2024 .
  18. "كتابة التعليمات البرمجية التأكيدية باستخدام Elixir" . 24 سبتمبر 2014. تم الاطلاع عليه في 5 يوليو 2018 .
  19. لودر، فولفغانغ (12 مايو 2015). إرلانج وإلكسير للمبرمجين الإجرائيين . "الفصل 16: مفاهيم هيكلة الكود"، عنوان القسم "نموذج الممثل": لينبب . تم الاطلاع عليه في 7 يوليو 2015 .{{cite book}}: CS1 maint: location ( link )
  20. ولاشين، سكوت (مايو 2013). "البرمجة الموجهة نحو السكك الحديدية" . F# للمتعة والربح . مؤرشف من الأصل في 30 يناير 2021. تم الاسترجاع في 28 فبراير 2021 .

للمزيد من القراءة