برنامه نویسی به زبان ارلنگ

ارلنگ زبان برنامه نویسی تابعی و همروند است

برنامه نویسی به زبان ارلنگ

ارلنگ زبان برنامه نویسی تابعی و همروند است

برنامه نویسی به زبان ارلنگ

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

  • ۰
  • ۰

یکی از خواص ارلنگ که کلی برای آن تبلیغ می‌شود قابلیت بروز رسانی کد آنهم بدون نیز به پایین آوردن برنامه است، در حقیقت بدون نیاز به قطعی سرویس این امکان وجود خواهد داشت. این قابلیت برای سرویس هایی که حتی یک لحظه خارج از دسترس بودن هزینه‌ها و خسارات جبران ناپذیری ببار خواهد آورد خیلی حیاتی هستند. اما ارلنگ چطور این کار را می‌کند؟

ارلنگ در درون سیستم خود چیزی شبیه سرور کد را جای داده است. کد سرور ارلنگ در حقیقت یک پروسه ارلنگ است که در پس زمینه اجرا می‌گردد و یک دیتابیس در حافظه برای خودش ایجاد کرده است. کد سرور دو نسخه از هر کد را می‌تواند در خود نگه دارد و هر دو نسخه همزمان می‌توانند اجرا شوند. نسخه جدید هر برنامه هر زمان که کامپایل شد و سپس با استفاده از تابع l() بارگذاری گردید، قابل استفاده خواهد بود. باید این نکته را اضافه کنم که ارلنگ دو روش صدا زدن تابع دارد: داخلی و خارجی. روش صدا زدن داخلی تابع همان روش معمولی است:

f(Args).

و روش صدا زدن خارجی، استفاده از نام ماژول مربوطه در ابتدا است:

Mod:f(Args)

نکته اساسی و مفید اینجاست که در روش صدا زدن خارجی همیشه نسخه آخر تابع اجرا می‌شود. بنابراین بسادگی می‌توان برنامه‌ئی نوشت که با دریافت پیامی نسخه جدید را اجرا کنید. کد زیر را نظر بگیرید:

-module(hotload).
-export([server/1, upgrade/1]).
server(State) ->
	receive
	update ->
		NewState = ?MODULE:upgrade(State),
		?MODULE:server(NewState); %% run new version
	SomeMessage ->
		do_something(),
		server(State) %% Old Version
	end.

در کد بالا کافی است پیام update را با پروسه بفرستیم و در آن صورت نسخه جدید که بصورت فراخوانی خارجی قابل مشاهده است اجرا خواهد شد. کافی است مطابق نیاز خود تابع upgrade را بنویسیم که من جایش را خالی گذاشتم.

  • ۹۷/۰۳/۱۷
  • مهدی حسینی مقدم

آموزش ارلنگ

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی