آموزش ارلنگ

آنچه در این صفحه می خوانید:

معرفی زبان ارلنگ (Erlang)

Erlang یک زبان برنامه نویسی با همه منظوره، همزمان، کاربردی و دارای سیستم زمان جمع آوری زباله است. اصطلاح ارلنگ با Erlang / OTP یا Open Telecom Platform قابل تعویض است که از سیستم ران تایم ارلنگ، چندین مؤلفه آماده استفاده (OTP) که عمدتاً در Erlang نوشته شده است، استفاده می شود و مجموعه ای از اصول طراحی برنامه های Erlang را شامل می شود.

سیستم ران تایم ارلنگ به دلیل طراحی های خود که به خوبی برای سیستم هایی با این صفات مناسب است شناخته شده است:

  • توزیع شده
  • خطاپذيري
  • real-time نرم
  • برنامه های بسیار در دسترس و بدون توقف
  • تعویض گرم، که در آن کد بدون توقف یک سیستم قابل تغییر است.

زبان برنامه نویسی ارلنگ به این خصوصیات مشهور است:

  • داده های غیرقابل تغییر
  • تطبیق الگو
  • برنامه نویسی کاربردی

زیر مجموعه متوالی زبان Erlang از ارزیابی مشتاقانه، تکالیف تک و تایپ پویا پشتیبانی می کند. در ابتدا این نرم افزار اختصاصی در اریکسون بود که توسط جو آرمسترانگ، رابرت وردینگ و مایک ویلیامز در سال 1986 توسعه داده شد، اما به عنوان نرم افزار رایگان و اوپن سورس در سال 1998 عرضه شد.

Erlang برای توسعه سیستم های قوی از برنامه هایی که می تواند در میان کامپیوترهای مختلف در یک شبکه توزیع شود طراحی شده است. این زبان توسط آزمایشگاه علوم رایانه اریکسون برای ایجاد نرم افزار برای محصولات مخابراتی خود ایجاد شده است. Erlang شبیه به جاوا است چرا که از یک ماشین مجازی استفاده می کند و از multithreading پشتیبانی می کند. با این حال، در حالی که جامعه توسعه جاوا بر برنامه های کاربردی وب متمرکز است، Erlang در بازار برای سرورهای بسیار قوی و سیستم های جاسازی شده مناسب است. Erlang به عنوان یک زبان برنامه نویسی کاربردی توصیف شده است، به این معنی که آن را بر ارزیابی عبارات به جای اجرای دستورات تاکید می کند. عبارات از توابع برای ارزیابی مقادیر اساسی استفاده می کنند. (دو مدل شناخته شده دیگر برنامه نویسی رویه ای و شی گرا هستند).

تاریخچه ارلنگ (Erlang)

ارلنگ با هدف بهبود برنامه های کاربردی مخابراتی طراحی شده است. نسخه اولیه ارلنگ در Prolog پیاده سازی شد و تحت تأثیر زبان برنامه نویسی PLEX بود که در مبادلات قبلی اریکسون مورد استفاده قرار می گرفت. در سال 1988 ارلنگ ثابت کرده است که برای نمونه سازی مبادلات تلفنی مناسب است، اما مترجم Prolog خیلی کند بود. یک گروه از شرکت اریکسون تخمین زدند که 40 برابر سریعتر است تا برای استفاده در تولید مناسب باشد. در سال 1992، کار بر روی ماشین مجازی BEAM آغاز شد که Erlang را با استفاده از ترکیبی از کد کاملاً کامپایل شده و کد رشته ای کامپایل می کند تا تعادل بین عملکرد و فضای دیسک برقرار شود. به گفته آرمسترانگ، این زبان پس از فروپاشی تبادل تلفن نسل بعدی AX با نام AX-N در سال 1995، از محصول آزمایشگاه به برنامه های واقعی منتقل شد. در نتیجه، ارلنگ برای حالت انتقال ناهمزمان بعدی (ATM) تبادل AXD انتخاب شد.

در سال 1998 اریکسون سوئیچ AXD301 را اعلام کرد، که حاوی بیش از یک میلیون خط ارلنگ بود و گزارش شده بود که به دسترس پذیری بالایی با رتبه "9" می رسد. اندکی پس از آن، اریکسون استفاده از رادیو سیستم های منزل Erlang را برای محصولات جدید ممنوع اعلام کرد و بر ترجیح زبان های غیر اختصاصی قرار داد. این ممنوعیت باعث شد تا آرمسترانگ و دیگران اریکسون را ترک کنند. اجرای این برنامه در پایان سال آغاز به کار شد. سرانجام اریکسون این ممنوعیت را برطرف کرد. این شرکت آرمسترانگ را مجدداً در سال 2004 استخدام کرد. در سال 2006، پشتیبانی چند پردازش متقارن نیتیو به سیستم real-time و VM اضافه شد.

کاربرد ارلنگ (Erlang)

از ارلنگ در موارد زیر استفاده می شود:

  • برای نظارت بر سیستم هایی که بر هزاران دستگاه مجازی نظارت و هماهنگی دارند.
  • برای پایگاه داده های توزیع شده (RIAK و CouchDB).
  • برای داشبورد مبتنی بر وب که داده های real-time را نشان می دهد یا ترسیم می کند.
  • برای معماری های نرم افزاری سرویس گرا. (RabbitMQ یک داستان موفقیت است.)
  • برای خدمات تخصصی وب با کارایی بالا مانند سرور تبلیغاتی یا نقاط پایانی API.
  • برای برنامه هایی که از داشتن یک معماری توزیع شده و چند گره سود می برند.
  • برای برنامه های بلادرنگ نرم (پخش ویدئویی در real-time نرم است، موشک های بالستیک در real-time سخت هستند).
  • برای ارتباطات دودویی حالت پذیر، مانند یک پروتکل آگاه کننده پروتکل-بار.
  • برای سایر دیمون ها و سرویس های طولانی مدت. (برخلاف صفحات وب مبتنی بر درخواست - پاسخ یا اسکریپت ها.)

ویژگی های ارلنگ (Erlang)

  • به راحتی می تواند در هر نقطه ای از شبکه توزیع و اجرا شود
  • ارائه داده های پویا
  • تطابق الگو
  • جمع آوری زباله
  • به روزرسانی بدون نیاز به توقف سیستم
  • مرتبط با زبان های برنامه نویسی دیگر مانند سی و سی پلاس پلاس و جاوا
  • دارای الگوهای طراحی یا فرمت هایی ها برای طراحی
  • دارای سرور HTTP ،SNMP ،CORBA، زیر سیستم OAM و یک موتور پایگاه داده

مثال های ارلنگ (Erlang)

مثال های برنامه نویسی کاربردی

یک تابع ارلانگ که از تابع بازگشتی برای شمارش تا ده استفاده می کند:

-module(count_to_ten).
-export([count_to_ten/0]).
count_to_ten() -> do_count(0).
do_count(10) -> 10;
do_count(N) -> do_count(N + 1).

الگوریتم اجرای فاکتوریل در ارلنگ:

-module(fact).    % This is the file 'fact.erl', the module and the filename must match
-export([fac/1]). % This exports the function 'fac' of arity 1 (1 parameter, no type, no name)

fac(0) -> 1; % If 0, then return 1, otherwise (note the semicolon ; meaning 'else')
fac(N) when N> 0, is_integer(N) -> N * fac(N-1).
% Recursively determine, then return the result
% (note the period . meaning 'endif' or 'function end')
%% This function will crash if anything other than a nonnegative integer is given.
%% It illustrates the "Let it crash" philosophy of Erlang.
نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود