Elixir: Multi-threaded، Fault-Tolerant – DEV Community

Summarize this content to 400 words in Persian Lang
چرا اکسیر ساخته شد؟
اکسیر در سال 2012 به عنوان بخشی از یک پروژه تحقیق و توسعه ایجاد شد. الکسیر در نظر گرفته شده بود که زبانی سازنده و قابل توسعه برای نوشتن نرم افزار باشد که هم قابل نگهداری و هم قابل اعتماد باشد. هدف آن افزایش سازگاری، بهره وری و توسعه پذیری است.
اکسیر برای چه مواردی استفاده می شود؟
Elixir یک زبان برنامه نویسی کاربردی است که برای ساخت برنامه های مقیاس پذیر و قابل نگهداری استفاده می شود. کد اکسیر در رشتههای اجرایی سبک (فرآیند) اجرا میشود که همزمان به صورت مجزا اجرا میشوند اما میتوانند اطلاعات را تبادل کنند. این زبان همچنین از این جهت قابل گسترش است که توسعه دهندگان می توانند زبان را در صورت لزوم گسترش دهند. به گزارش سایت اکسیر:
Elixir بر روی Erlang VM اجرا میشود که به دلیل ایجاد سیستمهای کم تأخیر، توزیعشده و مقاوم در برابر خطا شناخته میشود. این قابلیتها و ابزار Elixir به توسعهدهندگان اجازه میدهد تا در حوزههای مختلف، مانند توسعه وب، نرمافزار تعبیهشده، یادگیری ماشین، خطوط لوله داده و پردازش چندرسانهای در طیف وسیعی از صنایع، بهرهور باشند.
چه چیزی اکسیر را متفاوت می کند؟
ابتدا باید بررسی کنیم که یک چیزی به چه معناست نخ. thread یک توالی منفرد از دستورالعمل ها است که یک کامپیوتر باید اجرا کند. در بسیاری از زبان های برنامه نویسی، چندین رشته برای انجام وظایف مختلف به طور همزمان استفاده می شود که هر رشته دنباله ای جداگانه از دستورالعمل ها را اجرا می کند.
با این حال، در زبانی مانند جاوا اسکریپت، رشته اصلی اجرای تمام کدها را به ترتیب مدیریت میکند و اطمینان میدهد که هر کار در یک زمان پردازش میشود. کد همزمان ما برای اجرای فوری به پشته تماس اضافه می شود، در حالی که عملیات ناهمزمان به محیط بارگذاری می شود و نتایج آنها برای پردازش بعدی توسط حلقه رویداد در صف قرار می گیرند. از این نظر، جاوا اسکریپت به موفقیت می رسد شبه همزمانی- توهم انجام چندین کار به طور همزمان – حتی اگر روی یک رشته اجرا شود.
در مقابل، اکسیر به عنوان یک چند رشته ای زبان، که در آن وظایف در چندین رشته پخش شده و به صورت مجزا اجرا می شوند فرآیندها. در نتیجه، Elixir نیازی به تخلیه عملیات در محیط خارجی ندارد. اکسیر به دست می آورد درست است همزمانی با طراحی؛ چندین کار به طور همزمان در رشته های جداگانه اجرا می شوند. هر زمان که لازم باشد، این فرآیندها می توانند با ارسال “پیام” برای به اشتراک گذاری داده ها با یکدیگر ارتباط برقرار کنند.
مدل چند رشته ای اکسیر به آن اجازه می دهد تا چندین کار را به طور همزمان انجام دهد و آن را برای برنامه های کاربردی در مقیاس بزرگ مانند پلت فرم های پیام رسانی بلادرنگ، پایگاه های داده و سیستم های توزیع شده ایده آل می کند. بنابراین برای سیستم های همزمان و مقاوم به خطا مناسب تر است، به خصوص زمانی که مقیاس پذیری و قابلیت اطمینان سیستم اولویت های کلیدی هستند.
“تحمل خطا” چیست و چرا مهم است؟
تحمل خطا به توانایی سیستم برای رسیدگی به خطاها، خرابی ها یا استثنائات بدون خرابی کامل اشاره دارد. اگر با جاوا اسکریپت آشنایی دارید، احتمالاً با خطاهایی مواجه شده اید که به طور بالقوه می تواند کل برنامه شما را خراب کند. این سؤال را ایجاد می کند: آیا تحمل خطا همیشه a خوب چیز؟
Erlang این واقعیت را پذیرفته است که خطاها در توسعه و تولید نرم افزار اجتناب ناپذیر هستند و فلسفه تحمل خطا باعث ایجاد شعار “بگذارید خراب شود”. اکسیر، که بر اساس این فلسفه استوار است، همین رویکرد را اتخاذ می کند. مایلم فرد هبرت را که این فلسفه را در مقاله خود توضیح می دهد قدردانی کنم. ذن ارلنگ:
وقتی یک برنامه C می نویسید، یک برنامه بزرگ دارید main() عملکردی که کارهای زیادی انجام می دهد. این نقطه ورود شما به برنامه است. در ارلنگ چنین چیزی وجود ندارد. هیچ فرآیندی استاد تعیین شده برنامه نیست. هر یک از آنها یک تابع را اجرا می کند و آن تابع نقش آن را ایفا می کند main() در آن فرآیند واحد
بنابراین این سوال پیش میآید که بفهمیم چگونه میتوانیم اطمینان حاصل کنیم که خرابیها به جای تخریبکننده، توانمندساز هستند. قطعه اصلی بازی برای این در Erlang روند است. فرآیندهای Erlang کاملاً ایزوله هستند و هیچ چیز مشترکی ندارند. هیچ فرآیندی نمیتواند به حافظه شخص دیگری برسد و یا با خراب کردن دادههایی که روی آنها کار میکند، بر کاری که انجام میدهد تأثیر بگذارد. این خوب است زیرا به این معنی است که فرآیند در حال مرگ اساساً تضمین می شود که مسائل خود را برای خود نگه دارد و این یک ایزوله سازی بسیار قوی خطا را در سیستم شما ایجاد می کند.
در اکسیر، مانند Erlang، تحمل خطا با استفاده از فرآیندهای سبک وزن و ایزوله به دست می آید. این فرآیندها بلوک های سازنده سیستم هستند و هر یک مسئول اجرای یک وظیفه هستند. ایده اصلی این است که فرآیندهای اکسیر کاملاً از یکدیگر جدا هستند. اگر یکی از فرآیندها با شکست مواجه شود، بر روی دیگران تأثیر نمی گذارد زیرا هر یک حافظه و فضای اجرایی خاص خود را دارند. اجازه دهید نگاهی دیگر به مقاله هیبرت در این زمینه بیندازیم:
ارسال پیام بصری ترین شکل ارتباط در یک محیط همزمان است. این قدیمی ترین نامه ای است که با آن کار کرده ایم، از روزهایی که نامه می نوشتیم و آنها را از طریق پیک سوار بر اسب می فرستادیم تا مقصدشان را پیدا کنیم. یکی از جنبههای مهم همه این پیامها، بهویژه در دوران قدیم، این است که همه چیز ناهمزمان بود و پیامها کپی میشدند.
هیچ کس روزها در ایوان خود نمی ایستاد و منتظر بازگشت پیک بود و هیچ کس (به گمان من) در کنار برج های سمافور نمی نشست و منتظر پاسخ بود. شما پیام را ارسال میکردید، به فعالیتهای روزانهتان بازمیگشتید، و در نهایت کسی به شما میگفت که پاسخ دریافت کردهاید.
این خوب است، زیرا اگر طرف مقابل پاسخ ندهد، کاری انجام نمی دهید جز اینکه در ایوان خود منتظر بمانید تا بمیرید. برعکس، گیرنده در انتهای دیگر کانال ارتباطی پیام تازه وارد شده را ناپدید نمیکند یا تغییر میکند، اگر شما بمیرید. هنگام ارسال پیام، داده ها باید کپی شوند. این دو اصل تضمین میکنند که شکست در حین برقراری ارتباط، حالت خراب یا غیرقابل جبرانی را به همراه نخواهد داشت. Erlang هر دوی اینها را اجرا می کند.
اکسیر اجازه می دهد تا فرآیندهای ایزوله به طور همزمان اجرا شوند و امکان برقراری ارتباط با یکدیگر از طریق ارسال پیام وجود دارد. این رویکرد نه تنها تضمین می کند که خطاها در یک فرآیند کل سیستم را خراب نمی کنند، بلکه از یک محیط بسیار همزمان و مقیاس پذیر نیز پشتیبانی می کند. هنگامی که فرآیندی از کار می افتد، سیستم را در وضعیت ناسازگار یا ناپایدار باقی نمی گذارد.
چگونه می توانم با اکسیر شروع کنم؟
Elixir دارای اسناد گسترده ای است که می تواند به شما در نصب بسته های لازم برای شروع استفاده از آن در سیستم یا در یک پروژه کمک کند.
چرا اکسیر ساخته شد؟
اکسیر در سال 2012 به عنوان بخشی از یک پروژه تحقیق و توسعه ایجاد شد. الکسیر در نظر گرفته شده بود که زبانی سازنده و قابل توسعه برای نوشتن نرم افزار باشد که هم قابل نگهداری و هم قابل اعتماد باشد. هدف آن افزایش سازگاری، بهره وری و توسعه پذیری است.
اکسیر برای چه مواردی استفاده می شود؟
Elixir یک زبان برنامه نویسی کاربردی است که برای ساخت برنامه های مقیاس پذیر و قابل نگهداری استفاده می شود. کد اکسیر در رشتههای اجرایی سبک (فرآیند) اجرا میشود که همزمان به صورت مجزا اجرا میشوند اما میتوانند اطلاعات را تبادل کنند. این زبان همچنین از این جهت قابل گسترش است که توسعه دهندگان می توانند زبان را در صورت لزوم گسترش دهند. به گزارش سایت اکسیر:
Elixir بر روی Erlang VM اجرا میشود که به دلیل ایجاد سیستمهای کم تأخیر، توزیعشده و مقاوم در برابر خطا شناخته میشود. این قابلیتها و ابزار Elixir به توسعهدهندگان اجازه میدهد تا در حوزههای مختلف، مانند توسعه وب، نرمافزار تعبیهشده، یادگیری ماشین، خطوط لوله داده و پردازش چندرسانهای در طیف وسیعی از صنایع، بهرهور باشند.
چه چیزی اکسیر را متفاوت می کند؟
ابتدا باید بررسی کنیم که یک چیزی به چه معناست نخ. thread یک توالی منفرد از دستورالعمل ها است که یک کامپیوتر باید اجرا کند. در بسیاری از زبان های برنامه نویسی، چندین رشته برای انجام وظایف مختلف به طور همزمان استفاده می شود که هر رشته دنباله ای جداگانه از دستورالعمل ها را اجرا می کند.
با این حال، در زبانی مانند جاوا اسکریپت، رشته اصلی اجرای تمام کدها را به ترتیب مدیریت میکند و اطمینان میدهد که هر کار در یک زمان پردازش میشود. کد همزمان ما برای اجرای فوری به پشته تماس اضافه می شود، در حالی که عملیات ناهمزمان به محیط بارگذاری می شود و نتایج آنها برای پردازش بعدی توسط حلقه رویداد در صف قرار می گیرند. از این نظر، جاوا اسکریپت به موفقیت می رسد شبه همزمانی– توهم انجام چندین کار به طور همزمان – حتی اگر روی یک رشته اجرا شود.
در مقابل، اکسیر به عنوان یک چند رشته ای زبان، که در آن وظایف در چندین رشته پخش شده و به صورت مجزا اجرا می شوند فرآیندها. در نتیجه، Elixir نیازی به تخلیه عملیات در محیط خارجی ندارد. اکسیر به دست می آورد درست است همزمانی با طراحی؛ چندین کار به طور همزمان در رشته های جداگانه اجرا می شوند. هر زمان که لازم باشد، این فرآیندها می توانند با ارسال “پیام” برای به اشتراک گذاری داده ها با یکدیگر ارتباط برقرار کنند.
مدل چند رشته ای اکسیر به آن اجازه می دهد تا چندین کار را به طور همزمان انجام دهد و آن را برای برنامه های کاربردی در مقیاس بزرگ مانند پلت فرم های پیام رسانی بلادرنگ، پایگاه های داده و سیستم های توزیع شده ایده آل می کند. بنابراین برای سیستم های همزمان و مقاوم به خطا مناسب تر است، به خصوص زمانی که مقیاس پذیری و قابلیت اطمینان سیستم اولویت های کلیدی هستند.
“تحمل خطا” چیست و چرا مهم است؟
تحمل خطا به توانایی سیستم برای رسیدگی به خطاها، خرابی ها یا استثنائات بدون خرابی کامل اشاره دارد. اگر با جاوا اسکریپت آشنایی دارید، احتمالاً با خطاهایی مواجه شده اید که به طور بالقوه می تواند کل برنامه شما را خراب کند. این سؤال را ایجاد می کند: آیا تحمل خطا همیشه a خوب چیز؟
Erlang این واقعیت را پذیرفته است که خطاها در توسعه و تولید نرم افزار اجتناب ناپذیر هستند و فلسفه تحمل خطا باعث ایجاد شعار “بگذارید خراب شود”. اکسیر، که بر اساس این فلسفه استوار است، همین رویکرد را اتخاذ می کند. مایلم فرد هبرت را که این فلسفه را در مقاله خود توضیح می دهد قدردانی کنم. ذن ارلنگ:
وقتی یک برنامه C می نویسید، یک برنامه بزرگ دارید
main()
عملکردی که کارهای زیادی انجام می دهد. این نقطه ورود شما به برنامه است. در ارلنگ چنین چیزی وجود ندارد. هیچ فرآیندی استاد تعیین شده برنامه نیست. هر یک از آنها یک تابع را اجرا می کند و آن تابع نقش آن را ایفا می کندmain()
در آن فرآیند واحدبنابراین این سوال پیش میآید که بفهمیم چگونه میتوانیم اطمینان حاصل کنیم که خرابیها به جای تخریبکننده، توانمندساز هستند. قطعه اصلی بازی برای این در Erlang روند است. فرآیندهای Erlang کاملاً ایزوله هستند و هیچ چیز مشترکی ندارند. هیچ فرآیندی نمیتواند به حافظه شخص دیگری برسد و یا با خراب کردن دادههایی که روی آنها کار میکند، بر کاری که انجام میدهد تأثیر بگذارد. این خوب است زیرا به این معنی است که فرآیند در حال مرگ اساساً تضمین می شود که مسائل خود را برای خود نگه دارد و این یک ایزوله سازی بسیار قوی خطا را در سیستم شما ایجاد می کند.
در اکسیر، مانند Erlang، تحمل خطا با استفاده از فرآیندهای سبک وزن و ایزوله به دست می آید. این فرآیندها بلوک های سازنده سیستم هستند و هر یک مسئول اجرای یک وظیفه هستند. ایده اصلی این است که فرآیندهای اکسیر کاملاً از یکدیگر جدا هستند. اگر یکی از فرآیندها با شکست مواجه شود، بر روی دیگران تأثیر نمی گذارد زیرا هر یک حافظه و فضای اجرایی خاص خود را دارند. اجازه دهید نگاهی دیگر به مقاله هیبرت در این زمینه بیندازیم:
ارسال پیام بصری ترین شکل ارتباط در یک محیط همزمان است. این قدیمی ترین نامه ای است که با آن کار کرده ایم، از روزهایی که نامه می نوشتیم و آنها را از طریق پیک سوار بر اسب می فرستادیم تا مقصدشان را پیدا کنیم. یکی از جنبههای مهم همه این پیامها، بهویژه در دوران قدیم، این است که همه چیز ناهمزمان بود و پیامها کپی میشدند.
هیچ کس روزها در ایوان خود نمی ایستاد و منتظر بازگشت پیک بود و هیچ کس (به گمان من) در کنار برج های سمافور نمی نشست و منتظر پاسخ بود. شما پیام را ارسال میکردید، به فعالیتهای روزانهتان بازمیگشتید، و در نهایت کسی به شما میگفت که پاسخ دریافت کردهاید.
این خوب است، زیرا اگر طرف مقابل پاسخ ندهد، کاری انجام نمی دهید جز اینکه در ایوان خود منتظر بمانید تا بمیرید. برعکس، گیرنده در انتهای دیگر کانال ارتباطی پیام تازه وارد شده را ناپدید نمیکند یا تغییر میکند، اگر شما بمیرید. هنگام ارسال پیام، داده ها باید کپی شوند. این دو اصل تضمین میکنند که شکست در حین برقراری ارتباط، حالت خراب یا غیرقابل جبرانی را به همراه نخواهد داشت. Erlang هر دوی اینها را اجرا می کند.
اکسیر اجازه می دهد تا فرآیندهای ایزوله به طور همزمان اجرا شوند و امکان برقراری ارتباط با یکدیگر از طریق ارسال پیام وجود دارد. این رویکرد نه تنها تضمین می کند که خطاها در یک فرآیند کل سیستم را خراب نمی کنند، بلکه از یک محیط بسیار همزمان و مقیاس پذیر نیز پشتیبانی می کند. هنگامی که فرآیندی از کار می افتد، سیستم را در وضعیت ناسازگار یا ناپایدار باقی نمی گذارد.
چگونه می توانم با اکسیر شروع کنم؟
Elixir دارای اسناد گسترده ای است که می تواند به شما در نصب بسته های لازم برای شروع استفاده از آن در سیستم یا در یک پروژه کمک کند.