چرا الیکسیر؟ (Elixir)
الیکسیر تقریباً زبان برنامهنویسی جدیدی است که در بین توسعهدهندگان محبوبیت زیادی یافته است. خوزِه وَلیم (José Valim)، که سالها در جمعیت توسعهدهندگانِ Ruby بود، این زبان را در سال ۲۰۱۰ ساخت. در آن زمان خوزه و همکارانش در شرکت توسعۀ نرمافزار و مشاورۀ Plataformatec در جستوجوی راهی برای بهبود عملکرد برنامههای کاربردی Rails که بر چند CPU اجرا میشوند بودند. این نوع برنامههای کاربردی با مانع مشابهی مواجه میشدند؛ این مانع مدل همزمانیِ Ruby بود. زبان روبی برای بیشتر موارد بسیار مناسب بود اما برای نوشتن کد همزمان مناسب نبود.
خوزه در تحقیقاتش دربارۀ فناوریهای دیگری که برای همزمانی مناسب بودند Erlang را پیدا کرد و به آن علاقهمند شد. چون ماشین مجازی اِرلنَگ (Erlang Virtual Machine)، که به BEAM معروف است، برای مشکلات موردنظر او مناسب بود، خوزه متوجه شد که زبان ارلنگ فاقد سازههایی است که در دیگر زبانهای برنامهنویسی وجود دارند. همینموقع تصمیم گرفت الیکسیر را بسازد؛ الیکسیر رویکرد مدرنی به برنامهنویسی تابعی بود که دههها تجربۀ جمعیت Erlang را بهکار میگرفت. برنامههایی که در الیکسیر نوشته میشوند در بایتکدِ (Bytecode) ارلنگ کامپایل میشوند و با ماشین مجازی اِرلَنگ اجرا میشوند.
اگر برنامهنویسی تابعی برای شما جدید است، شاید نوشتن کد الیکسیر موجب تغییراتی در تفکر برنامهنویسی شما بشود؛ اما شاید اتفاق بدی نباشد. آلن پرلیس، دانشمند مشهور علوم رایانه، معتقد است که «زبانی که بر شیوۀ تفکر شما دربارۀ برنامهنویسی تأثیر نمیگذارد، ارزش یاد گرفتن ندارد».
ویژگیهایی هستند که در زبانهای برنامهنویسیِ محبوب مثل Ruby، Python، PHP و C# مشترکاند اما جزء Elixir نیستند، مثلِ کلاسها، اشیاء و حلقهها. منظور این نیست که در الیکسیر نمیتوان مخفیسازی (encapsulation) انجام داد، یا کدهای ناهمبسته (decoupled) نوشت، یا در مجموعهها تکرار کرد؛ بلکه این کارها بهطور متفاوتی انجام میشوند.
حتی با برخی از ویژگیهای الیکسیر مانند توابع کلاس اول، انطباق الگویی (pattern matching)، عملگر پایپ (|>) و عملکر کانز (|) و نیز تکنیکهایی مثل بازگشت (ریکِرژن) میتوانیم برنامههایی را بنویسیم که واقعاً مثل زبانهای غیرتابعی (یا حتی بیشتر از آنها) خوانشپذیر باشند.