معرفی لوا
لوا چیست، چه نقشی در دنیای بازی و فناوری دارد و چرا یکی از سبکترین و سریعترین زبانهای اسکریپتنویسی است؟
لوا چیست؟
لوا (Lua — در زبان پرتغالی به معنی «ماه») یک زبان برنامهنویسی سطح بالا، سبک، متنباز و اسکریپتنویسی است که در سال ۱۹۹۳ در دانشگاه پاپی کاتولیک ریو دو ژانیرو (PUC-Rio) برزیل توسط تیمی به رهبری روبرتو ایروسالیمسکی (Roberto Ierusalimschy) ساخته شد.
هدف اصلی طراحی لوا سادگی، سرعت، حجم کم و قابلجاسازی بودن (Embeddable) بوده است. کل مفسر لوا کمتر از ۱ مگابایت حجم دارد و بهراحتی داخل برنامههای دیگر (مثل موتورهای بازی) جاسازی میشود.
چرا لوا اینقدر محبوب است؟
| ویژگی | توضیح |
|---|---|
| فوقالعاده سبک | کل مفسر کمتر از ۱ مگابایت است! |
| خیلی سریع | یکی از سریعترین زبانهای اسکریپتنویسی دنیا (LuaJIT) |
| یادگیری آسان | فقط ۲۱ کلمه کلیدی — سادهترین زبان اسکریپتی! |
| قابلجاسازی | بهراحتی داخل C، C++، C#، Java و... ادغام میشود |
| تایپ پویا | نیازی به تعریف نوع متغیر نیست |
| جدول (Table) | یک ساختار داده قدرتمند برای همهچیز: آرایه، دیکشنری، شیء |
| متنباز و رایگان | مجوز MIT — کاملاً رایگان برای هر پروژهای |
| چندسکویی | روی ویندوز، مک، لینوکس، موبایل و حتی میکروکنترلرها اجرا میشود |
لوا کجا استفاده میشود؟
لوا پادشاه زبانهای اسکریپتنویسی در صنعت بازی است، اما فقط برای بازی نیست:
- 🎮 توسعه بازی: Roblox، World of Warcraft، Angry Birds، Civilization و هزاران بازی دیگر
- 🕹️ موتورهای بازی: LÖVE 2D، Defold، Corona/C Solar2D، Garry's Mod
- 🌐 وب سرورها: Nginx و OpenResty (پردازش میلیونها درخواست)
- 💾 دیتابیسها: Redis (اسکریپتنویسی سمت سرور)
- 📝 ویرایشگرها: Neovim (پیکربندی و پلاگینها)
- 🔧 ابزارها: Adobe Lightroom، Wireshark، HAProxy
- 📺 تلویزیونها: بسیاری از Smart TV ها رابط کاربری خود را با لوا میسازند
لوا چقدر ساده است؟
لوا فقط ۲۱ کلمه کلیدی دارد — در حالی که جاوا بیش از ۵۰ و پایتون بیش از ۳۵ کلمه کلیدی دارد! این یعنی کل زبان را میتوانید در چند هفته یاد بگیرید.
برای چاپ یک پیام در لوا فقط به این نیاز دارید:
print("سلام دنیا!")
همین! بدون نقطهویرگول اجباری، بدون تابع main، بدون کلاس. ساده، کوتاه، واضح.
تاریخچه مختصر لوا
| نسخه | سال | ویژگی برجسته |
|---|---|---|
| Lua 1.0 | ۱۹۹۳ | اولین نسخه — جایگزین SOL و DEL |
| Lua 3.0 | ۱۹۹۷ | توابع بینام و متامکانیزم |
| Lua 4.0 | ۲۰۰۰ | متاتبلها (metatables) |
| Lua 5.0 | ۲۰۰۳ | ثبتکننده مجازی جدید، coroutine |
| Lua 5.1 | ۲۰۰۶ | ماژولها و require — پایه LuaJIT |
| Lua 5.2 | ۲۰۱۱ | goto، بدون محیط سراسری ضمنی |
| Lua 5.3 | ۲۰۱۵ | اعداد صحیح ۶۴ بیتی، عملگرهای بیتی |
| Lua 5.4 | ۲۰۲۰ | اعداد صحیح معکوس، بهبود GC |
«لوا» از کجا آمده؟
نام «Lua» در زبان پرتغالی به معنی «ماه» است. این زبان در برزیل ساخته شده و نامگذاری آن بخشی از سنت تیم دانشگاه PUC-Rio بود — زبان قبلی آنها SOL (خورشید) نام داشت و لوا بهعنوان ماه، مکمل آن انتخاب شد! 🌙
تفاوت لوا با زبانهای دیگر
| ویژگی | Lua | Python | JavaScript | PHP |
|---|---|---|---|---|
| حجم مفسر | ~۱ مگابایت | ~۳۰ مگابایت | ~۷۰ مگابایت | ~۵۰ مگابایت |
| کلمات کلیدی | ۲۱ | ۳۵+ | ~۵۰ | ~۶۰ |
| شروع آرایه | ۱ | ۰ | ۰ | ۰ |
| ساختار داده | فقط table | list, dict, ... | Array, Object, Map | Array, ... |
| کاربرد اصلی | جاسازی در نرمافزار | عمومی | وب | وب |
چرا لوا یاد بگیریم؟
- ورود به دنیای بازیسازی: Roblox بهتنهایی میلیونها بازیساز لوا استخدام میکند
- سادگی: کوچکترین و سادهترین زبان اسکریپتی محبوب دنیا
- سرعت یادگیری: در چند هفته مسلط میشوید
- پرفورمنس: با LuaJIT گاهی از جاوااسکریپت هم سریعتر است
- مکمل عالی: برای C/C++ یک زبان اسکریپتنویسی عالی است
- پیکربندی Neovim: ترند بزرگ دنیای ویرایشگرها
در این دوره چه چیزی یاد میگیرید؟
- مبانی لوا: متغیرها، انواع داده، عملگرها
- کنترل جریان: شرطها و حلقهها
- توابع: بازگشتی، varargs، closure
- جدولها: تنها ساختار داده لوا — آرایه و دیکشنری
- شیگرایی (OOP) با متاجدولها
- مدیریت خطا، ماژولها و الگوها (Patterns)
- مباحث پیشرفته: Coroutine، بهینهسازی
- ۴ پروژه عملی کامل
آمادهاید؟ بریم شروع کنیم! 🌙🚀
این مبحث بخشی از دوره آموزش کامل لوا است.