موضوع مقاله: ارلنگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ارلنگ | مقدمه: ارلنگ یک زبان برنامه‌نویسی همه‌منظوره، همروند، دارای زباله جمع‌کن و سامانهٔ زمان‌اجرا است. | ## بخش 1: ارلنگ | این زبان توسط شرکت اریکسون برای پشتیبانی و توسعه برنامه‌های توزیع‌شده، تحمل‌پذیر در برابر خطا، بیدرنگ نرم و بدون وقفه طراحی شده‌است. این زبان از تعویض داغ که در آن بدون توقف سامانه، قادر به تغییر کدهای برنامه هستیم پشتیبانی می‌کند. سیستم زمان اجرا ارلنگ برای طراحی سیستم هایی که نیازمند خصوصیات زیر هستند استفاده میشود (به نوع ماشین مجازی ارلنگ این امکانات را دارد): توزیع شده بردباری خطا زمان واقعی ملایم بسیار در دسترس، بدون توقف تعویض داغ که در آن کد می‌تواند بدون توقف سیستم تغییر کند. زبان برنامه‌نویسی ارلنگ برای خواص زیر شناخته می‌شود: داده تغییرناپذیر تطبیق الگو برنامه‌نویسی تابعی ارلنگ در واقع یک زبان اختصاصی در شرکت اریسکون بود که توسط جو آرمسترانگ، رابرت ویردینگ و مایک ویلیامز در سال ۱۹۸۶ توسعه پیدا کرده بود، اما در سال ۱۹۹۸ به عنوان یک زبان متن باز منتشر شد. نسخه اولیه ارلنگ در پرولگ اجرا شد و توسط زبان برنامه‌نویسی مورد استفاده در PLEX مبادلات زودتر اریکسون تأثیر پذیرفته بود. در سال ۱۹۸۸ ارلنگ ثابت کرده بود که برای نمونه‌سازی مبادلات تلفنی مناسب است، اما در prolog بسیار آهسته اجرا می‌شد. یک گروه از متخصصان اریکسون تخمین زده بودند که برای استفاده از محصولشان سرعت آن باید ۴۰ بار سریعتر شود بنابراین در سال 1992 شروع به بازنویسی آن با زبان C کردند و ماشین مجازی BEAM متولد شد. نحوه عملکرد ماشین مجازی BEAM ترکیبی از کدهای NATIVE و تفسیر مستقیم برای ایجاد تعادل بین حجم کدها و افزایش عملکرد محیط اجرا است. مدت کوتاهی پس از آن، سیستم رادیو ارلنگ استفاده از ارلنگ برای محصول جدید در مصارف خانگی را ممنوع کرد، این اتفاق با استناد به اولویت زبان‌های غیررسمی روی داد. سرانجام با برداشتن این ممنوعیت اریکسون دوباره آرمسترانگ را در سال ۲۰۰۴ استخدام کرد. در سال ۲۰۰۶، پشتیبانی از چند پردازنده‌ای متقارن محلی به سیستم زمان اجرا و ماشین مجازی اضافه شد. فرایندها کارهایی که پشتیبانی می‌کنند را انجام می‌دهند که منجر به انجام یا شکست می‌شود. جو آرمسترانگ در سال ۲۰۱۳ در مصاحبه با Rackspace اشاره می‌کند: «اگر جاوا یک بار نوشته شود و همه جا اجرا شود، پس ارلنگ یک بار نوشته می‌شود و همیشه اجرا می‌شود.» استفاده ارلنگ در حال حاضر توسط شرکت‌ها از جمله سیسکو سیستمز, متا پلتفرمز, نورتل و تی-موبایل استفاده شده‌است. | ## بخش 2: ارلنگ | - آنها با استفاده از توابع ` spawn` ایجاد می‌شوند و از طریق پیام‌های غیرهمزمان با هم ارتباط برقرار می‌کنند. پایش‌ها - پایش‌ها پیوندهای یک‌طرفه بین فرایندها هستند که به یک فرایند امکان می‌دهند فرایند دیگری را پایش کند. - پایش‌ها برای فرایندهای خارجی که به وضعیت فرایند دیگری علاقه‌مند هستند اما مسئول مستقیم آن نیستند مفید هستند. ناظران - ناظران فرایندهای ویژه‌ای هستند که مجموعه‌ای از فرایندهای فرزند را پایش و کنترل می‌کنند، که می‌توانند کارگران (workers) یا ناظران دیگر باشند. - ناظران با استفاده از یک ماژول بازخورد که توابعی مانند `init/1` را صادر می‌کند تعریف می‌شوند تا فرایندهای فرزند و استراتژی راه‌اندازی مجدد را مشخص کنند. به طور خلاصه، فرایندها واحدهای اجرای پایه را فراهم می‌کنند، پایش‌ها به فرایندها امکان می‌دهند یکدیگر را زیر نظر بگیرند، و ناظران سلسله‌مراتبی از فرایندها را با سیاست‌های راه‌اندازی مجدد تعریف‌شده هماهنگ می‌کنند. به طور یکپارچه، آنها ساخت برنامه‌های مقاوم Erlang خودترمیم را امکان‌پذیر می‌سازند. در مثال بالا تابع فراخوانی بازگشتی مرتب‌سازی سریع تا زمانی که چیزی برای مرتب‌سازی باقی نمانده باشد ادامه پیدا می‌کند . انواع داده Integers اعداد صحیح به عنوان دنباله‌ای از اعداد اعشاری نوشته شده‌است، به عنوان مثال، ۱۲، ۱۲۳۷۵ و -۲۳٬۴۲۷ اعداد صحیح هستند. آن‌ها به صورت رشته‌ای از کاراکترهای الفبایی متوالی نوشته می‌شوند، اولین کاراکتر که حروف کوچک است. اتم‌ها می‌توانند شامل هر کاراکتر باشند اگر آن‌ها در نقل قول‌های محصور و یک کنوانسیون فرار وجود داشته باشد که اجازه می‌دهد هر کاراکتر در یک اتم استفاده شود. Reference مراجع نمادهای منحصر به فرد جهانی هستند که تنها ویژگی آن‌ها این است که می‌توان آن‌ها را برای برابری مقایسه کرد. نوع داده مرجع در زبان ارلنگ : در ارلنگ، یک مرجع یک عبارت منحصر به فرد است که برای شناسایی یک فرآیند یا منبع خاص در سیستم زمان اجرای ارلنگ ایجاد می‌شود. | ## بخش 3: ارلنگ | این منحصر به فرد بودن باعث می‌شود که مراجع را بتوان به طور ایمن در برنامه‌نویسی همزمان استفاده کرد، جایی که چندین فرآیند ممکن است همزمان در حال اجرا باشند. هر فراخوانی از این تابع یک مرجع جدید تولید می‌کند که متمایز از همه مراجع دیگری است که در طول اجرای برنامه ایجاد شده‌اند. ویژگی‌های مراجع : منحصر به فرد بودن: هر مرجع تضمین می‌شود که در سراسر سیستم ارلنگ منحصر به فرد باشد. این بدان معناست که هیچ دو مرجعی هرگز برابر نخواهند بود، که آنها را برای تمایز بین موجودیت‌های مختلف ایده‌آل می‌کند. استفاده: مراجع اغلب در سناریوهای مربوط به ارتباطات آسنکرون استفاده می‌شوند، مانند زمانی که پیام‌ها بین فرآیندها ارسال می‌شوند. آنها می‌توانند به عنوان شناسه‌هایی برای پاسخ‌ها یا ردیابی وضعیت عملیات‌ها عمل کنند. پیام‌ها را می‌توان به پورت‌ها ارسال و دریافت کرد، اما این پیام‌ها باید به اصطلاح «پروتکل پورت» مطابقت داشته باشند. این یک نحو جالب برای نمایش دنباله‌ای از کدهای اسکی یا لیستی از کارکترها می‌باشد؛ بنابراین، به عنوان مثال، رشته "CAT" به صورت [۹۹٬۹۷٬۱۱۶] کوتاه می‌شود. Records سوابق یک راه مناسب برای ارتباط یک برچسب با هر یک از عناصر در یک تاپل فراهم می‌کند. این موضوع اجازه می‌دهد تا به یک عنصر از یک تاپل با نام و نه با موقعیت اشاره کرد. بارگذاری کد و ماژول‌های جدید ارلنگ از بروزرسانی برنامه‌هایی با سطح زبان پویا پشتیبانی می‌کند. برای اجرای این، کد به عنوان یک واحد «ماژول» بارگذاری و مدیریت می‌شود؛ ماژول یک واحد تلفیقی است. سیستم می‌تواند هم‌زمان دو نسخه از یک ماژول را در حافظه نگه دارد و فرایندها می‌توانند هم‌زمان هر یک از کدها را اجرا کنند. | ## جمع‌بندی | فرایندها تا زمانی که یک تماس خارجی به ماژول آن ایجاد نشود به نسخه جدید تبدیل نمی‌شوند.