LLL (Lisp Like Language) چیست؟ زبان برنامه نویسی قرارداد هوشمند اتریوم

قبل از Solidity، توسعه دهندگان قرارداد هوشمند اتریوم از LLL (مخفف Lisp-Like Language) استفاده می کردند. LLL که تا حدودی "زبان سطح پایین" است، اغلب با زبان اسمبلی مقایسه می شود.

با این حال، ساختار ساده و مینیمالیستی آن باعث می‌شود که وقتی به درستی قالب‌بندی شده باشد، کاملاً قابل خواندن است (و بسیار ساده‌تر از Lisp معمولی). به جای پرانتزهای جاوا اسکریپت، توسعه دهندگان LLL به سادگی از پرانتز برای تجزیه استفاده می کنند (همانطور که Lisp انجام می دهد). و مانند پایتون، توسعه دهندگان LLL از تورفتگی برای نشان دادن بلوک های کد استفاده می کنند. بنابراین هرکسی که LLL را مشاهده می کند، متوجه بسیار مختصر و ساده آن می شود و کدنویسی را برای توسعه دهندگان آسان می کند.

مزایای LLL

در حالی که نوشتن کد در LLL نسبتاً آسان است، توسعه دهندگان LLL از سایر نقاط قوت این زبان نیز بهره می برد:

  • بر خلاف Solidity، توسعه دهندگان LLL قادر به دسترسی مستقیم به حافظه (memory) و فضای ذخیره سازی (storage) هستند. این بدان معنی است که توسعه دهندگان LLL می توانند به طور مؤثر داده های قرارداد را آن طور که صلاح می دانند ترتیب دهند.
  • زبان LLL همچنین از همه کدهای عملیاتی ماشین مجازی اتریوم (EVM) (کدهای عملیاتی مانند ADDRESS، STACK، ORIGIN، PUSH1) استفاده می کند ... اما بدون درهم تنیدگی سطح بالا که در Solidity وجود دارد. این قدرت و اقتصاد کد است که بسیاری از توسعه دهندگان از آن استقبال می کنند.
  • دوباره - مختصر (Again- brevity) . قراردادهای هوشمند نوشته شده در LLL به باینری های کوچکتر از قراردادهای Solidity کامپایل می شوند - تا 70٪ کوچکتر (consensys.net).
  • در حالی که منتقدان LLL را چیزی فراتر از کد اسمبلی با نحو Lisp می‌دانند، «ساختارهای کنترلی (for, when, if و غیره) را ارائه می‌دهد که انجام آنها در اسمبلر دشوار و گیج‌کننده است. همچنین انتزاعات راحت دیگری مانند ماکروها را فراهم می کند، و این قابلیت را دارد که فایل های منبع دیگر را نیز در بر بگیرد.» (syrinx.net).

این مزایا به LLL تعلق می گیرد، علیرغم اینکه زبان سطح پایینی است. در حالی که LLL مانند Solidity اجازه مدیریت پشته (stack) و مدیریت پرش (jump) را نمی دهد، بسیاری از توسعه دهندگان آن را گزینه خوبی می دانند. در واقع، LLL صرفاً به دلیل عدم استحکام آن به جذب طرفداران خود ادامه می دهد. این طرفداران از "دیدگاه متفاوت و رشته برنامه نویسی (LLL ارائه می دهد) در مقایسه با زبان همه جا حاضر Solidity.

(Github: LLL Introduction).

چرا سالیدیتی؟

سالیدیتی Solidity مسائل امنیتی جدی را حفظ می‌کند و به راحتی برای توسعه‌دهنده معمولی قابل دسترسی نیست (به ویژه گاهی اوقات درک آن دشوار است). برای مثال، «روش‌های ذخیره‌شده آن چیزی نیست که توسعه‌دهنده معمولی به‌طور منظم بنویسد». با این حال، Solidity "بهترین قابلیت استفاده با APIهای جاوا اسکریپت" (reddit) را فراهم می کند. این به تنهایی دلیل اصلی استفاده از آن بر روی LLL و Serpent (زبان قرارداد هوشمند که در واقع به LLL کامپایل می شود) است.

از آنجایی که تعداد کمی از توسعه دهندگان به شدت از وجود Serpent (اکنون به عنوان Viper اصلاح شده) و LLL آگاه هستند، بسیاری از آنها Solidity را به عنوان اصلی ترین زبان قراردادهای هوشمند میدانند . این به سادگی بهترین زبان قرارداد هوشمند مستندسازی شده است. و همچنین بیشترین پشتیبانی را دریافت می کند.

با این حال، LLL باید نگاه دومی را از توسعه دهندگان قرارداد هوشمند داشته باشد. چندین طرفدار به دنبال احیای استفاده از آن هستند (به مقاله دانیل الیسون "ظهور زبان فراموش شده" مراجعه کنید). زبان های دیگر نیز باید توسط توسعه دهندگان قرارداد هوشمند در نظر گرفته شوند. همانطور که یکی از مفسران Reddit خاطرنشان کرد: «تنها مورد نیاز ساخت یک کامپایلر است که بتواند زبان را به بایت کد EVM ترجمه کند. تا زمانی که کامپایلرهای مناسب وجود داشته باشند، هر کسی می تواند قراردادهای هوشمندی را در جاوا، پایتون، سی و غیره بسازد.

اگر چنین است، شاید توسعه دهندگان به پلتفرمی نیاز دارند که بسیار متنوع تر باشد. برنامه ای که برای ترجمه زبان به بایت کد EVM نیازی به پرش از حلقه های زیادی ندارد. این امکان وجود دارد (حتی محتمل) که یک پلتفرم رمزنگاری مانند پلتفرم XTRABYTES ممکن است در آینده نزدیک این نقش را ایفا کند. مطمئناً به نظر می رسد که آینده روشن تری را برای هر توسعه دهنده ای که علاقه مند به ایجاد DApp های جدید و هیجان انگیز به زبان انتخابی خود است، ارائه می دهد.

منابع
The Github Repository for LLL
LLL Compiler Documentation