اینم یه تجربه پراکنده دیگه!
امروز با یه زبان جدید آشنا شدم که اسمش lua است. این زبان رو قبلا تو کانفیگ کردن nginx و جاهای دیگه هم دیده بودم. این زبان یک زبان مفصریه و یعنی کامپایلری نداره و زمان اجرا تفسیر و اجر میشه. این زبان به نسبت ساده است و با زبانهایی مثل javascript و scheme مقایسه میشه. چند روز پیش هم که داشتم توی اینترنت میگشتم دیدم که یکی از ویژگیهای این زبان اینه که شما میتونی توی یک برنامه دیگه از اون استفاده کنی. یعنی مفسرش به برنامه اضافه میشه و برنامت میتونه به با استفاده از lua برنامه ریزی بشه و مثلا plugin براش طراحی بشه.
کل مساله ای که من میخواستم حل کنم و به نظرم lua برای این کار مناسب اومد اینه که، قراره برنامهای نوشته بشه که بصورت داینامیک بشه منطق کسب و کار رو توش عوض کرد. یعنی اینکه تا دیروز براساس روند a عمل میشده و امروز روند b باید عمل بشه. راهحلهای زیادی برای این مساله وجود داره که در جامع ترین حالتش شما باید یه زبان توصیف مخصوص به خودت درست کنی و از اون استفاده کنی تا منطق کسب و کار رو پیادهسازی و تست بکنی. خب این روش الان توی تقریبا همهی سیستمهای مدیریت روندهای کسب و کار وجود داره ولی من به ذهنم رسید وقتی یه چیزی مثل lua وجود داره و به راحتی با برنامهی شما integrate میشه چرا بایستی من با تجربه و توان محدودم بخوام یه شبه زبان برنامه نویسی طراحی کنم. یه چیز دیگه که باعث شد به استفاده از lua فکر کنم این بود که مثلا یه بخش از برنامه رو توی یه زبان دیگه بنویسی و فقط توی lua از اون استفاده کنی. این باعث میشه کارهایی که نیاز به کارایی و این چیزا دارن در زبانه دیگه طراحی بشن و فقط lua اونها رو سر هم کنه.
بعد گشتم و سعی کردم شواهدی در اینترنت پیدا کنم که ایدهای که به ذهنم رسیده آیا درسته یا نه. دیدم که مثلا در طراحی بازی خیلی از این ویژگی استفاده وعملا lua یک زبان برنامهنویسی محبوب در بین توسعه دهندههای بازی هست. یا دیدم که نرمافزاری به نام freeswitch که برای راهکاری تلفنی مبتنی بر voip هست از lua به عنوان زبان طراحی روند تماس استفاده میکنه. یا با استفاده از lua شما میتونی nginx رو کنترل کنی. همچنین دیدم یه جایی مثل cisco برای سطوح دسترسی پویا از این زبان استفاده کرده. حتی lua یک سرور مثل node.js به نام luvit داره اما به اون مشهوری نیست.
همه اینها مطمئنم کرد که این ایده در صورت عملیاتی شدن خیلی بد نیست و باید یه طرح اولیه ازش پیادهسازی بشه و بعد تصمیم گرفته بشه که دقیقا چه اتفاقی بیفته.
همین!