برنامه نویسی

شروع به اکسیر، میکس و اکتو.

من این مقاله را با این فرض می نویسم که شما، خواننده، اصول برنامه نویسی را دارید. من قصد دارم خواندن آن را ساده نگه دارم، اما اگر اولین زبان برنامه نویسی شما Elixir باشد، ممکن است گیج شوید.

اکسیر

Elixir یک زبان برنامه نویسی کاربردی است که در بالای ماشین مجازی ERlang a BEAM اجرا می شود.
اکسیر در سراسر جهان عمدتاً در کشورهای دیگر و محصولات بزرگ مانند برکس، دیسکورد، پینترست و چندین مورد دیگر استفاده می شود، اما یک افتخار ملی است.

تفاوت اکسیر در این است که کد آن در فرآیندهای ایزوله اجرا می شود.این جداسازی باعث می شود که بازگشت از هر فرآیند به طور مستقل جمع آوری شود و از منابع دستگاه به بهترین شکل استفاده شود.

انواع داده ها در اکسیر

در اکسیر انواع داده ای وجود دارد که برای نمایش انواع مختلف اطلاعات استفاده می شود، مانند:

int اعداد صحیحی که می توانند مثبت یا منفی باشند
float نقاط شناور که نشان دهنده اعداد اعشاری است.
string که نشان دهنده دنباله ای از کاراکترها هستند که بین دو علامت نقل قول نوشته شده اند
boolean نشان دهنده مقادیر درست یا نادرست / true false
atom که برای مثال ثابت هایی هستند که خود مقدار معادل خود نام است :true, :heyThere, :barco

نحو و ماژول ها

بیایید برای موفقیت یک Hello World را شروع کنیم.

defmodule helloModule do
    def hello do
    IO.puts("Hello World") #Output => Hello World
    end
end
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا می توان به برخی از “ویژگی های اکسیر” توجه کرد که عبارتند از módulos.
ماژول ها در Elixir واحدهای سازماندهی کد هستند و برای گروه بندی عملکردهای مرتبط استفاده می شوند. ماژول ها همچنین می توانند حاوی مقادیر، ثابت ها و حتی ماژول های دیگر باشند.
شما همچنین می توانید یک تابع را بدون کپسوله کردن آن با یک ماژول ایجاد کنید، اما در Elixir این بهترین روش است که توابع را در ماژول ها کپسوله کنید تا کد خود را به روشی واضح تر و ماژولارتر سازماندهی و ساختار دهید.
ماژول ها در اکسیر نیز اتم هستند

iex> is_atom(helloModule) #Output => true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که اشاره کردم، در اکسیر امکان ایجاد ماژول در داخل ماژول ها وجود دارد، اما طبق قرارداد، توصیه می شود در هر فایل فقط یک ماژول ایجاد کنید. (مگر اینکه شرایط اقتضا کند)

علاوه بر این، ما همچنین دو پسوند اصلی در اکسیر داریم، بودن .ex ه .exs.
فایل ها .ex برای کدهای کامپایل شده که بخشی از برنامه یا کتابخانه است، در حالی که فایل ها استفاده می شوند .exs برای اسکریپت‌های اکسیر که مستقیماً توسط مفسر اجرا می‌شوند، عمدتاً برای کارهای اتوماسیون، آزمایش و نمونه‌سازی استفاده می‌شوند.

نظارت و سرپرستان

مفاهیم نظارت و سرپرست از سیستم ERlang آمده است. در اکسیر، سرپرستان وظیفه نظارت بر چرخه زندگی یک فرآیند کودک و راه اندازی مجدد آن را در صورت لزوم بر عهده دارند.
سرپرست اطمینان می دهد که در صورت شکست فرآیند، طبق استراتژی تعریف شده مجدداً راه اندازی می شود. این به ایجاد سیستم های مقاوم در برابر خطا کمک می کند.

چند نوع ناظر وجود دارد:

  • Simple Supervisor: ابتدایی ترین نوع، بر فرآیندها نظارت می کند و در صورت شکست آنها را مجدداً راه اندازی می کند.
  • Dynamic Supervisor: با این کار می توان به صورت پویا پردازش های فرزند را در حین اجرای سیستم اضافه و حذف کرد.
  • Task Supervisor: این ناظر بر کارهای ناهمزمان مانند عملیات I/O نظارت می کند.(ورودی و خروجی)
  • سرپرست گروه: به شما امکان می دهد فرآیندهای فرزند را گروه بندی کنید تا با هم مدیریت شوند.

نمونه ای از سرپرست:

defmodule GenericSupervisor do
    use Supervisor
    def start_link do
        Supervisor.start_link(__MODULE, [])
    end
    def init([]) do
    children = [
        worker(GenericWorker), []]
        Supervisor.init(children, strategy: :one_for_one)
    end
end
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، GenericSupervisor بر یک فرآیند واحد نظارت می کند که در صورت شکست، طبق استراتژی مجدداً راه اندازی می شود :one_for_one

مخلوط کردن

Mix یکی از ابزارهایی است که به توسعه برنامه های کاربردی Elixir کمک می کند. او مسئول ایجاد، کامپایل و مدیریت پروژه ها و همچنین اتوماسیون و آزمایش وظایف است.

با Mix می توانید به راحتی با استفاده از دستور یک پروژه جدید Elixir را شروع کنید mix new projeto. این یک ساختار دایرکتوری استاندارد برای پروژه شما با فایل های پیکربندی، تست ها و اسکلت کد اصلی ایجاد می کند.

├── README.md
├── lib
│   └── projeto.ex
├── mix.exs
└── test
    ├── projeto_test.exs
    └── test_helper.exs
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ساختار یک پروژه میکس

lib این دایرکتوری جایی است که کد منبع و فایل های پروژه شما قرار دارد. .ex در اینجا آنها گردآوری خواهند شد.

mix.exs این فایل پیکربندی اصلی پروژه شما است. اینجا جایی است که شما ابرداده پروژه، وابستگی ها، وظایف سفارشی و تنظیمات دیگر را تعریف می کنید.

test این فهرست شامل فایل های آزمایشی پروژه شما می باشد. فایل های تست با استفاده از ExUnit نوشته می شوند و دارای پسوند هستند .exs

علاوه بر این، Mix برای کامپایل و اجرای کد شما استفاده می شود. برای مثال می توانید استفاده کنید mix compile برای کامپایل پروژه خود و mix run برای اجرای آن

Mix همچنین از ایجاد وظایف سفارشی پشتیبانی می کند، که می تواند برای خودکارسازی وظایف توسعه رایج مانند اجرای آزمایش ها یا تولید اسناد استفاده شود.

اکتو

Ecto یک کتابخانه پایداری داده برای Elixir است که برای کار با پایگاه های داده رابطه ای طراحی شده است. با استفاده از رویکرد مبتنی بر مدل و پرس و جو، روشی تمیز و ظریف برای تعامل با پایگاه داده ارائه می دهد.

(پایداری داده مفهوم ذخیره سازی اطلاعات به شیوه ای پایدار است، به طوری که می توان بعداً بازیابی و استفاده کرد، حتی پس از بستن برنامه ای که آن را ایجاد کرده است)

با Ecto می توانید مدل هایی را برای نمایش جداول پایگاه داده خود تعریف کنید و از این مدل ها برای ایجاد، به روز رسانی، حذف و پرس و جو رکوردها در پایگاه داده استفاده کنید.

علاوه بر این، Ecto مکانیزم مهاجرت را ارائه می دهد که به شما امکان می دهد طرحواره پایگاه داده خود را در طول زمان مدیریت کنید. با مهاجرت، می توانید جداول، فهرست ها و محدودیت های کلید خارجی را به روشی کنترل شده و برگشت پذیر ایجاد و اصلاح کنید.

Ecto همچنین از پرس و جوها با استفاده از زبان پرس و جو Ecto.Query پشتیبانی می کند. با Ecto.Query، می‌توانید پرس‌وجوهای SQL را به صورت برنامه‌نویسی بسازید، و تولید کوئری‌های پویا را بر اساس متغیرهای ورودی آسان‌تر و ایمن‌تر می‌کند.

Ecto همچنین از تراکنش ها پشتیبانی می کند و به شما امکان می دهد چندین عملیات پایگاه داده را به عنوان یک واحد اتمی انجام دهید. این تضمین می کند که همه عملیات ها با موفقیت انجام می شوند یا هیچ یک از آنها اعمال نمی شوند و یکپارچگی داده ها حفظ می شود.

اگر به اکسیر علاقه دارید، مستندات شگفت انگیز را بررسی کنید.
https://elixir-lang.org/docs.html
و البته آموزش PT-BR
https://elixirschool.com/pt

نوشته های مشابه

دکمه بازگشت به بالا