ماشین حالت
واضع عبارت Structured Concurrency
در چند نوشته خود به همروندی
ساختیافته به عنوان راه رهایی از ماشین حالت اشاره میکند.
امروز این
مطلب
و دو ویدئویی که به آن اشاره شده را میدیدم. جایی در این
ویدئو در حین پیادهسازی
پروژه serverlesspresso
متوجه میشوند که گویا در حال پیادهسازی یک
ماشین حالت هستند. در نهایت ماشین حالت را به یک سری تابع تبدیل میکنند
که بر بستر AWS Lambda
قابل اجرا باشد و با استفاده از EventBridge
رخدادهای خارجی را پوشش میدهند. به نظر آمازون با سبد محصولی خود تمام
زیرساخت مورد نیاز برای پیادهسازی یک ماشین حالت در حالت مقیاسپذیر را
فراهم کرده است.
اما اگر به نوشتههای آقای Martin Sústrik
در مورد همروندی ساختیافته مراجعه کنیم، ایشان دو مشکل را در
مورد ماشین حالت ذکر میکنند، اول اینکه ماشینهای حالت معمولا بزرگ و
شکننده هستند و دوم اینکه معمولا زبانهای برنامه نویسی به صورت ذاتی از
آنها پشتیبانی نمیکنند.
اما در مورد زبان Erlang
قضیه متفاوت است و این زبان به صورت ذاتی
رویکردی برای پیادهسازی ماشین حالت دارد که تحت عنوان رفتار gen_statem
شناخته
میشود. رفتارها
در این زبان چیزی شبیه مفهوم Design Pattern
هستند. برای آشنایی بیشتر
با ماشین حالت در این زبان مستندات
اصلی خیلی راهگشا
هستند.