سلام دوستان، در این مطلب با معرفی زبان برنامه نویسی لوا (Lua) در خدمت شما هستیم. Lua یک زبان برنامه نویسی سبُکوزن، بازتابنده و امری-تابعی است. زبان لوا با ساختار پردازه نویسی (برنامهنویسی اسکریپتی) و با هدف داشتن قابلیتهای گسترشپذیر طراحی شدهاست. معرفی کامل زبان برنامه نویسی Lua در ادامه مطلب، لطفا با ما همراه باشید…
معرفی زبان برنامه نویسی Lua از زبان یکی از کاربران
امروز با یه زبان جدید آشنا شدم که اسمش 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 داره اما به اون مشهوری نیست.
معرفی زبان برنامه نویسی Lua (لوا)
Lua (لوا) یک زبان برنامه نویسی سبُکوزن، بازتابنده و امری-تابعی است. زبان لوا با ساختار پردازهنویسی (برنامهنویسی اسکریپتی) و با هدف داشتن قابلیتهای گسترشپذیر طراحی شدهاست. فلسفلهٔ اولیه ساخت این زبان، استفاده از آن به عنوان یک زبان عمومی و ساده پردازهنویسی بود. جامعه هدف لوا شامل کاربران نیمه حرفهای هم میشود.
در پردازهنویسی برای انجام توصیفات پیچیده از یک زبان نهفته شده در یک زبان دیگر استفاده میشود. به خاطر سبک بودن کتابخانه لوا، میتوان لوا را با تمام قابلیتها به عنوان یک زبان نهفته در سی استفاده نمود. حجم مفسر کامپایل شده حدود ۱۵۰KB است. در طراحی لوا سعی شدهاست از فرا ساز و کارها بیشتر استفاده شود تا در عین کوچکی، انعطافپذیری زبان افزایش یابد. دادهساختار جدول، داده ساختار اصلی مورد استفاده در این زبان است. لوا یک مفسر اصلی دارد که توسط طراحان اصلی زبان پیادهسازی شدهاست.
این مفسر دارای واسط سی نسبتاً سبک و سادهای است.[۱] هر دوی لوا و جاوااسکریپت از اشیاء نمونهپایه استفاده میکنند. آنها هر دو از شِما الگو گرفتهاند. بسیاری از مفاهیم مشترک میان آنها وجود دارد، گرچه تفاوتهای اساسی در نحو دارند. در طراحی لوا شبیه به آیکون است، شاید به این علت که هر دو از اسنوبال تأثیر پذیرفتهاند. زبان لوا در طول زمان تغییر میکند، قابلیتهایی از آن کاسته و قابلیتهایی بر آن افزوده میشوند. اکنون این زبان در نسخه ۵٫۳٫۲ قرار دارد (آذر ۱۳۹۴) لوا در صنعت بازیهای ویدئویی محبوبیت زیادی دارد. به جز بازیها لوا در کاربردهای بسیاری هم تجاری و هم غیرتجاری استفاده شدهاست. نام این زبان از کلمه پرتغالی lua به معنای «ماه» میآید.
کاربردهای زبان برنامه نویسی Lua
لوا در صنعت بازیهای ویدئویی محبوبیت زیادی دارد. در تعدادی از موتورهای بازی از زبان لوا برای توسعه و به عنوان اسکریپت استفاده میشود از جمله
- CryEngine
- Leadwerks Engine
- Corona SDK
از جملهٔ بازیهایی که از افزونبستههای (Plugin) لوا پشتیبانی میکنند میتوان به موارد زیر اشاره کرد
- Crysis
- BZFlag
- PlayStation Home
- Dawn of War
- World of Warcraft
- DeathStatue Game (بازی تندیس مرگ)
- cs2d
به جز بازیها لوا در کاربردهای بسیاری هم تجاری و هم غیرتجاری استفاده شدهاست از جمله
- Adobe Photoshop Lightroom
- Apache HTTP Server
- Damn Small Linux
- LuaTex
- nmap
- WireShark
نمونه کدهای برنامه نویسی Lua
کدهای این قسمت همگی کامل هستند و بدون هیچ تغییری تفسیر میشوند.
برنامهٔ نوشتن عبارت “Hello World” بر روی صفحه:
print('Hello World') -- this is a comment
کامنتها با—مشخص میشوند.
جمع کردن دو عدد در ورودی:
a = io.read()
b = io.read()
print(a+b)
توصیف یک پنجره گرافیکی:
d = dialog {
hbox {
button{ label = "ok" },
button{ label = "cancel" }
}
}
در این مثال dialog با یک جدول توصیف میشود.
تابع فاکتوریل نمونهای از یک تابع بازگشی در لوا است، که به دو روش پیادهسازی شده است
function factorial(n)
if n == 0 then
return 1
else
return n * factorial(n - 1)
end
end
function factorial2(n) -- Shorter equivalent of the above
return n == 0 and 1 or n * factorial2(n - 1)
end
در تابع دوم از خصوصیت محاسبه کمینه عبارت بولی از چپ در زبان لوا استفاده شد. یعنی اینکه فقط اگر شرط n==0
برقرار نباشد محاسبه factorial2(n-1)
انجام میشود.
عوض کردن تابع print تعریف شده در لوا به گونهای که رفتار آن فقط به ازای حالت خاص ورودی “foo” تفاوت کند.
do
local oldprint = print -- Store current print function as oldprint
function print(s) -- Redefine print function
if s == "foo" then
oldprint("bar")
else
oldprint(s)
end
end
end
این مثال به خوبی نشان میدهد که توابع کتابخانه در لوا متغیرهای عمومی (یا سطح اول) هستند.
مبحث شیرین برنامه نویسی شیءگرا در لوا
شیءگرایی در لوا بهطور مستقیم وارد نشده است. شیءگرایی از طریق سازوکار فراجدولها قابل پیادهسازی است. نمونهای ساده از پیادهسازی شیءگرایی
a={x=100, y=200, color="red"}
b={x=300, y=400}
setmetatable(b,{ __index = a })
print(b.color) --> red
رابط برنامه نویسی لوا (API)
زبانهای پردازهنویسی درون یک زبان بزرگتر اجرا میشوند. این زبان باید با زبان پردازهنویسی داخلی از طریق یک لایه ارتباط برقرار کند، که آن رابط ربن (برنامه نویسی نرمافزار) است. در لوا از دو بخش هسته و کمکی تشکیل شدهاست. لایه ربن در لوا نسبتاً ساده است، چون برخلاف پایتون مدیریت ارجاع در آن نیاز نیست. ربن لوا همچون خود زبان کمینه است: عملکرد پیشرفتهتر توسط کتابخانهٔ کمکی پشتیبانی میشود، که شامل ماکروهای تعریف شده زیادی است که عملیات پیچیده جدولی را آسان میکند.
سرعت زبان برنامه نویسی Lua
مهمترین علت شهرت زبان Lua بخاطر کارایی آن است. آنطور که گفته شده است، سرعت دیگر زبانهای برنامه نویسی را با سرعت Lua میسنجند. بنچ مارکهای بسیاری درباره زبان Lua وجود دارد که معمولا به عنوان سریع ترین در حوزه اسکریپت امبددها ذکر شده است. یک کامپایر سریعتر برای Lua توسعه داده شده است به نام LuaJIT که یک کامپایلر just-in-time میباشد. زبان Lua از سینتکس بسیار ساده و در عین حال ساختار توصیف داده بسیار ساده بهره میبرد که بر اساس آرایههای داینامیک و زبان توصیفی میباشد.
منابع آموزش برنامه نویسی Lua (لوا)
- فیلم آموزش برنامه نویسی LUA به زبان اصلی
- دیگر مطالب آموزشی Lua (به زودی این بخش تکمیل می شود)
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- منبع : سورس باران
- رمز فايل : www.sourcebaran.com
- انتشار: ۲ شهریور ۱۳۹۷
دسته بندی موضوعات
- آموزش برنامه نویسی
- آموزش کریپتو کارنسی (ارز دیجیتال)
- آموزش متنی برنامه نویسی
- پروژه برنامه نویسی
- فروشگاه
- فیلم های آموزشی
- #F
- ++C
- 3ds max
- Ada
- ADO.NET
- Adobe Flash
- Agile
- Ajax
- AngularJS
- Anime Studio
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- assembly
- AVR
- Azure
- Bootstrap
- Cassandra
- CCNA
- CCNP
- CCSP
- ChatGPT
- Cisco
- CMD
- COBOL
- CSS
- Cython
- Django
- Dreameaver
- Elixir
- EntityFramework
- Erlang
- Flash
- Go
- Groovy
- Haskell
- Htaccess
- HTML
- IOS
- Jade
- jquery
- Kendo UI
- Linq
- Linux
- LUA
- MariaDB
- maya
- Meteor
- MongoDB
- Mono Android
- MonoGame
- Mysql
- NoSQL
- Oracle
- Orchard
- Perl
- php
- PHPMyAdmin
- R
- Rational Rose
- Ruby
- Rust
- Scala
- Scrum Master
- SFML
- SharePoint
- SignalR
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- Vue 3
- WPF
- Xml
- آردوینو
- آموزش های پروژه محور
- آیونیک
- اتوکد
- الگوریتم تقریبی
- الگوریتم نویسی و فلوچارت
- امنیت
- اندروید
- اندروید استودیو
- انیمیشن سازی
- بازی سازی با Scratch
- بک ترک
- بیسیک فور اندروید
- پایتون
- پرولوگ
- پریمیر
- جاوا
- جاوا اسکریپت
- جنگو
- جوملا
- دارت
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- ساخت اتوران
- ساختمان داده ها
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کاتلین
- کامپایلرها
- کانستراکت
- کریستال ریپورت
- کلوژر
- گوگل آنالیتیکس
- گیت
- لاراول
- مای بی بی
- مایکروسافت پروجکت
- متریال دیزاین
- متلب
- معماری کامپیوتر
- مهندسی اینترنت
- میکروتیک
- نود جی اس
- نیوک
- هوش مصنوعی
- ویبولوتین
- ویژوال استودیو
- یونیتی
- کتاب های آموزشی
- Ada
- Ajax
- Android
- ASP.NET
- ASP.NET Core
- AVR
- clips
- CNC
- COBOL
- CQRS
- Cython
- Dreamweaver
- Elixir
- Entity Framework 4.0
- Erlang
- Go
- Groovy
- Haskell
- LINQ
- Lua
- Matlab
- MFC
- Node.js
- PERL
- php
- PLC
- Prolog
- React
- Rust
- Scala
- SFML
- SharePoint
- silver light
- VHDL
- VMware
- WinJS
- Workflow
- WPF
- XHTML
- Yii Framework
- اتوکد
- اچ تی ام ال
- اسمبلی
- اکتیو ایکس
- الگوریتم و فلوچارت
- انگولار
- اوبونتو
- اوراکل
- بازی سازی
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- بک ترک
- پاسکال
- پایان نامه
- پایتون
- پرولوگ
- جاوا
- جاوا اسکریپت
- جی کوئری
- حوملا
- داده کاوی
- دلفی
- رباتیک
- روبی
- زبان ماشین
- سئو
- ساختمان داده ها
- سایر کتاب ها
- سخت افزار
- سوئیفت
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- سیستم عامل
- سیستم های خبره
- شبکه و مجازی سازی
- شبیه سازی کامپیوتر
- طراحی الگوریتم
- فتوشاپ
- فریم ورک گتنا
- کاتلین
- کالی لینوکس
- کریستال ریپورت
- گزارش کارآموزی
- گوگل
- لیسپ
- متلب
- مقاله
- مهندسی نرم افزار
- نیوک
- هوش مصنوعی
- وب مستر
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس
اقای محمود یک بازی هست بنام roblox اون میتونید داخلش بازی با برنامه نویسی لوا بسازید میلیون ها دلار هم میتونید کسب درامد کنید
با سلام خدمت آقا صابر عزیز.
من یک برنامه نویس زبان لوا هستم اما نه با برنامه ها و بازی هایی که می توان در آن از این زبان برنامه نویسی استفاده کرد بلکه می توان در اتوران ساز AutoPlay Media stdio هم استفاده کرد.
محمود جمشیدیان ۱۴ ساله از اصفهان