إليكسير (لغة برمجة)
إليكسير هي لغة برمجة وظيفية ، متزامنة ، عالية المستوى، وعامة الأغراض، تعمل على آلة BEAM الافتراضية ، المستخدمة أيضًا لتنفيذ لغة البرمجة إرلانج . [ 7 ] تعتمد إليكسير على إرلانج وتتشارك معها نفس المفاهيم المجردة لبناء تطبيقات موزعة ومقاومة للأعطال . كما توفر إليكسير أدوات وتصميمًا قابلًا للتوسيع . يدعم هذا الأخير البرمجة الوصفية في وقت الترجمة باستخدام وحدات الماكرو وتعدد الأشكال عبر البروتوكولات. [ 8 ]
تنظم الجماعة فعاليات سنوية في الولايات المتحدة [ 9 ] ، وأوروبا [ 10 ] ، واليابان [ 11 ] ، بالإضافة إلى فعاليات ومؤتمرات محلية صغيرة. [ 12 ] [ 13 ]
تاريخ
ابتكر خوسيه فاليم لغة البرمجة إليكسير كمشروع بحث وتطوير في شركة بلاتافورماتيك. وكان هدفه تمكين قابلية التوسع والإنتاجية بشكل أكبر في آلة إرلانج الافتراضية مع الحفاظ على التوافق مع بيئة إرلانج. [ 14 ] [ 15 ]
تستهدف لغة Elixir المواقع والتطبيقات واسعة النطاق. وهي تستخدم خصائص لغات Ruby وErlang و Clojure لتطوير لغة ذات تزامن عالٍ وزمن استجابة منخفض. وقد صُممت للتعامل مع كميات هائلة من البيانات. كما تُستخدم Elixir في مجالات الاتصالات والتجارة الإلكترونية والتمويل. [ 16 ]
في عام 2021، تم الإعلان عن مشروع Numerical Elixir بهدف إدخال التعلم الآلي والشبكات العصبية وتجميع وحدات معالجة الرسومات ومعالجة البيانات ودفاتر الحوسبة إلى نظام Elixir البيئي. [ 17 ]
سمات
- يُترجم إلى بايت كود لآلة BEAM الافتراضية الخاصة بلغة Erlang . [ 8 ] قابلية تشغيل كاملة مع كود Erlang، دون أي تأثير على وقت التشغيل .
- قابلية التوسع وتحمل الأعطال، بفضل آليات التزامن الخفيفة الوزن في Erlang [ 8 ]
- أدوات مدمجة لإدارة التبعيات، وتجميع التعليمات البرمجية، وتشغيل الاختبارات، وتنسيق التعليمات البرمجية، وتصحيح الأخطاء عن بعد، والمزيد.
- بيئة تفاعلية REPL داخل البرامج قيد التشغيل، بما في ذلك خوادم الويب Phoenix ، مع إعادة تحميل التعليمات البرمجية والوصول إلى الحالة الداخلية
- كل شيء عبارة عن تعبير [ 8 ]
- مطابقة الأنماط [ 8 ] لتعزيز التعليمات البرمجية التأكيدية [ 18 ]
- تلميحات النوع لأدوات التحليل الثابت
- البيانات غير القابلة للتغيير، مع التركيز، مثل لغات البرمجة الوظيفية الأخرى ، على الاستدعاء الذاتي والدوال ذات الرتبة العليا بدلاً من الحلقات القائمة على التأثيرات الجانبية
- البرمجة المتزامنة بدون مشاركة عبر تمرير الرسائل ( نموذج الممثل ) [ 19 ]
- مجموعات البيانات الكسولة وغير المتزامنة مع التدفقات
- البرمجة الموجهة نحو السكك الحديدية عبر
withالبنية [ 20 ] - البرمجة الوصفية الصحية من خلال الوصول المباشر إلى شجرة بناء الجملة المجردة (AST). [ 8 ] غالبًا ما تُنفذ المكتبات لغات صغيرة خاصة بمجال معين ، مثل قواعد البيانات أو الاختبار.
- تنفيذ التعليمات البرمجية أثناء وقت الترجمة. يعمل مترجم Elixir أيضًا على BEAM، لذا يمكن للوحدات التي يتم ترجمتها تشغيل التعليمات البرمجية التي تمت ترجمتها مسبقًا على الفور.
- تعدد الأشكال عبر آلية تُسمى البروتوكولات. الإرسال الديناميكي ، كما هو الحال في كلوجر ، ولكن بدون إرسال متعدد لأن بروتوكولات إليكسير تُرسل على نوع واحد.
- دعم التوثيق عبر سلاسل التوثيق الشبيهة بلغة بايثون في لغة تنسيق Markdown [ 8 ]
- دعم Unicode وسلاسل UTF-8
أمثلة
يمكن تشغيل الأمثلة التالية في 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 > endiex> 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انظر أيضاً
مراجع
- ^ خوسيه فاليم (25 مايو 2012). "تم إصدار Elixir v0.5.0" . إكسير لانج . تم الاسترجاع في 22 يناير 2026 .
- ↑ "تطور لغة إليكسير: التاريخ والنظام البيئي" . معجم أنماط البرمجيات . 23 نوفمبر 2024. مؤرشف من الأصل في 22 يناير 2026. تم الاطلاع عليه في 22 يناير 2026 .
- ↑ وو، جياهاو (15 يناير 2024). "قصة الإكسير" . تاريخ المصادر المفتوحة . مؤرشف من الأصل في 15 يناير 2024. تم الاطلاع عليه في 22 يناير 2026 .
- ↑ https://github.com/elixir-lang/elixir/releases/ .
{{cite web}}: مفقود أو فارغ|title=( مساعدة ) - ↑ "إصدار Elixir v1.20: لغة ذات كتابة تدريجية" . Elixir-lang.org . 3 يونيو 2026. تم الاطلاع عليه في 18 يوليو 2026 .
- ↑ "elixir/LICENSE at master · elixir-lang/elixir · GitHub" . GitHub .
- ↑ "أكثر لغات البرمجة شيوعًا في عام 2018 - مدونة إيليت إنفوورلد" . 30 مارس 2018. مؤرشف من الأصل في 9 مايو 2018. تم الاطلاع عليه في 8 مايو 2018 .
- 1 2 3 4 5 6 7 "Elixir" . elixir-lang . تم الاطلاع عليه بتاريخ 17 فبراير 2013 .
- ↑ "ElixirConf" . تم الاطلاع عليه بتاريخ 11 يوليو 2018 .
- ↑ "ElixirConf" . تم الاطلاع عليه بتاريخ 11 يوليو 2018 .
- ↑ "مهرجان إرلانج وإلكسير" . مؤرشف من الأصل في 30 مارس 2019. تم الاطلاع عليه في 18 فبراير 2019 .
- ↑ "Elixir LDN" . مؤرشف من الأصل بتاريخ 12 يوليو 2018. تم الاطلاع عليه بتاريخ 12 يوليو 2018 .
- ↑ "مؤتمر إمبكس - مؤتمر إمباير ستيت للإكسير" . تم الاطلاع عليه بتاريخ 12 يوليو 2018 .
- ↑ إليكسير - منهج حديث للبرمجة لآلة إرلانج الافتراضية . تم الاطلاع عليه بتاريخ 17 فبراير 2013 .
- ↑ خوسيه فاليم - الكلمة الرئيسية في مؤتمر ElixirConf EU 2017. مؤرشف من الأصل بتاريخ 17 نوفمبر 2021. تم الاطلاع عليه بتاريخ 14 يوليو 2017 .
- ↑ "خلف الكود: من ابتكر الإكسير" . تم الاطلاع عليه بتاريخ 25 نوفمبر 2019 .
- ↑ "Numerical Elixir (Nx)" . GitHub . تم الاطلاع عليه بتاريخ 6 مايو 2024 .
- ↑ "كتابة التعليمات البرمجية التأكيدية باستخدام Elixir" . 24 سبتمبر 2014. تم الاطلاع عليه في 5 يوليو 2018 .
- ↑ لودر، فولفغانغ (12 مايو 2015). إرلانج وإلكسير للمبرمجين الإجرائيين . "الفصل 16: مفاهيم هيكلة الكود"، عنوان القسم "نموذج الممثل": لينبب . تم الاطلاع عليه في 7 يوليو 2015 .
{{cite book}}: CS1 maint: location ( link ) - ↑ ولاشين، سكوت (مايو 2013). "البرمجة الموجهة نحو السكك الحديدية" . F# للمتعة والربح . مؤرشف من الأصل في 30 يناير 2021. تم الاسترجاع في 28 فبراير 2021 .
للمزيد من القراءة
- سيمون سانت لوران؛ ج. أيزنبرغ (22 ديسمبر 2016). مقدمة إلى لغة إليكسير: البدء في البرمجة الوظيفية، الطبعة الثانية . دار نشر أورايلي ميديا . رقم ISBN 978-1491956779.
- ساسا يوريتش (12 يناير 2019). إكسير في العمل، الطبعة الثانية . منشورات مانينغ . رقم ISBN 978-1617295027.
- لغات البرمجة المتزامنة
- اللغات الوظيفية
- لغات برمجة مطابقة الأنماط
- لغات البرمجة
- لغات البرمجة التي تم إنشاؤها في عام 2012
- برنامج يستخدم ترخيص أباتشي
- الاختراعات البرازيلية
