| Paradigma | Multiparadigma: skrip, imperatif (prosedural, berbasis prototipe berorientasi objek), fungsional |
|---|---|
| Dirancang oleh | Roberto Ierusalimschy Waldemar Celes Luiz Henrique de Figueiredo |
| Pertama kali muncul | 1993;33 tahun lalu (1993) |
| Rilis stabil | |
| Tata tertib penjenisan | Dinamis, kuat, duck |
| SO | Multiplatform |
| Lisensi | Lisensi MIT |
| Ekstensi nama berkas | .lua |
| Situs web | www.lua.org |
| Pelaksanaan utama | |
| Lua, LuaJIT, LuaVela, MoonSharp, Luvit, LuaRT, LuaU | |
| Dialek | |
| Metalua, Idle, GSL Shell, Luau | |
| Dipengaruhi oleh | |
| C++, CLU, Modula, Scheme, SNOBOL | |
| Memengaruhi | |
| Io, GameMonkey, Squirrel, Falcon, MiniD | |
Lua (/ˈluːə/ dari bahasa Portugis:lua yang berarti "bulan") merupakan bahasa pemrograman ringkas yang dirancang sebagai bahasa pemrograman dinamis berbasis skrip dengan semantik yang dapat dikembangkan atau ditambahkan. Sebagai bahasa skrip, Lua memiliki API dalam bahasa C yang relatif lebih sederhana dibandingkan bahasa skrip lainnya.
Sejarah
Lua ditulis pertama kali oleh Roberto Ierusalimschy, Luiz Henrique de Figueiredo, dan Waldemar Celes yang merupakan anggota Computer Graphics Technology Group (Tecgraf) pada Universitas Katolik Kepausan Rio de Janeiro, Brasil, pada tahun 1993.
Sebelumnya, sejak tahun 1977 hingga tahun 1992, pemerintah Brasil menerapkan kebijakan perdagangan yang membatasi perdagangan termasuk pertukaran baik perangkat keras ataupun perangkat lunak komputer. Dalam atmosfer yang demikian, banyak klien Tecgraf tidak mampu, baik secara politik maupun finansial, untuk membeli perangkat lunak dari luar. Alasan itulah yang mendorong Tecgraf untuk mengimplementaskan perangkat utilitas dasar yang dibutuhkan.[2]
Secara historis, bahasa pemrograman Lua berawal dari bahasa pemrograman yang digunakan untuk pendeskripsian serta entri data, serta pengonfigurasian suatu sistem yang masing-masing dikembangkan secara terpisah oleh Tecgraf dari tahun 1992 hingga tahun 1993.[3] Tujuan pengembangan tersebut awalnya merupakan usaha untuk menambahkan fitur serta meningkatkan fleksibilitas atas dua proyek pengembangan perangkat lunak yang sedang mereka kerjakan saat itu. Namun terdapat kekurangan atas alur kontrol atas bahasa tersebut sehingga menumbuhkan ide untuk mengembangkannya lebih lanjut dengan fitur-fitur dasar yang lengkap sebagai sebuah bahasa pemrograman.
Fitur
Secara umum Lua digambarkan sebagai bahasa pemrograman multiparadigma yang menyediakan seperangkat kecil atas fitur-fitur umum yang dapat dikembangkan lebih lanjut untuk memenuhi ragam kebutuhan yang berbeda-beda, karenanya Lua tidak menyediakan fitur yang lengkap dan kompleks yang hanya berfokus pada satu paradigma pemrograman. Sebagai contoh, Lua tidak secara eksplisit mendukung inheritance yang merupakan kemampuan untuk menurunkan sifat sebuah objek dalam konsepsi pemrograman berorientasi objek tetapi Lua menyediakan fasilitas metatable yang memungkinkan hal tersebut diimplementasikan relatif cukup mudah.
Secara umum, Lua berusaha untuk menyediakan fitur-fitur abstrak maupun meta yang lebih fleksibel dan dapat dikembangkan jika dibutuhkan dibandingkan menyediakan seperangkat pustaka yang lengkap untuk memenuhi satu kebutuhan tertentu. Hal tersebut menjadikan Lua sebagai bahasa pemrograman yang ringkas dan dapat secara mudah diadaptasikan untuk memenuhi beragam jenis kebutuhan.
Lua merupakan bahasa pemrograman dinamis yang ditujukan untuk digunakan sebagai bahasa skrip, dan cukup ringkas untuk disisipkan ke dalam berbagai jenis platform utama. Lua hanya mendukung beberapa jenis struktur data atomik seperti boolean, floating point, serta string. Tipe atau struktur data lainnya seperti larik, set, ataupun list direpresentasikan dalam Lua melalui satu bentuk tipe data, table.
Contoh program Lua
Contoh klasik sebuah program hello world dapat ditulis dengan bahasa Lua sebagai berikut:
print("Hello World!")
Komentar menggunakan sintaksis yang lebih kurang sama dengan Ada, Eiffel, SQL dan VHDL:
-- Sebuah komentar di Lua dimulai dengan tanda hubung ganda dan berlaku sampai ke akhir baris. --[[ String dengan beberapa baris & komentar dibuka dan ditutup dengan kurung siku ganda. ]] --[=[ Komentar seperti ini dapat memiliki --[[komentar]] didalamnya. ]=]
Contoh lainnya, fungsi rekursif atas faktorial:
functionfactorial(n) ifn==0then return1 else returnn*factorial(n-1) end end
Lihat pula
Rujukan
- ↑ "diffs-lua-5.5.0-lua-5.5.1".
- ↑ Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (2007). "The evolution of Lua" (PDF). Proc. of ACM HOPL III. hlm. 2–1–2–26. doi:10.1145/1238844.1238846. ISBN 978-1-59593-766-7.
- ↑ "The evolution of an extension language: a history of Lua". 2001. Diakses tanggal 2008-12-18.
Bacaan lanjutan
- (Inggris) Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (2006). Lua 5.1 Reference Manual. Lua.org. ISBN 85-903798-3-3.
- (Inggris) Ierusalimschy, R. (2006). Programming in Lua (Edisi 2nd). Lua.org. ISBN 85-903798-2-5. (1st ed. is available online)
- (Inggris) Figueiredo, L. H.; Celes, W.; Ierusalimschy, R., ed. (2008). Lua Programming Gems. Lua.org. ISBN 978-85-903798-4-3.
- (Inggris) Gutschmidt, T. (2003). Game Programming with Python, Lua, and Ruby. Course Technology PTR. ISBN 1592000770.
- (Inggris) Schuytema, P.; Manyen, M. (2005). Game Development with Lua. Charles River Media. ISBN 1-58450-404-8.
- (Inggris) Jung, K.; Brown, A. (2007). Beginning Lua Programming. Wrox. ISBN 0-470-06917-1. Diarsipkan dari asli tanggal 2013-10-22. Diakses tanggal 2011-07-07.
- (Inggris) Quigley, Joseph (1 Juni 2007). "A Look at Lua". Linux Journal.
{{cite journal}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link) - (Inggris) Streicher, Martin (28 April 2006). "Embeddable scripting with Lua". developerWorks. IBM.
{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link) - (Inggris) Hamilton, Naomi (11 September 2008). "The A-Z of Programming Languages: Lua". Computerworld. IDG.
{{cite news}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)[pranala nonaktif permanen] – Interview with Roberto Ierusalimschy - (Inggris) Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Celes, Waldemar (12 Mei 2011). "Passing a Language through the Eye of a Needle". ACM Queue. ACM.
{{cite journal}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link) – How the embeddability of Lua impacted its design
Pranala luar
- Situs web resmi
- (Inggris) lua-users.org – Community website for and by users (and authors) of Lua
- (Inggris) Lua papers and theses
- (Inggris) Fieldhouse, Keith (16 Februari 2006). "Introducing Lua". ONLamp.com. O'Reilly Media. Diarsipkan dari asli tanggal 2006-03-12. Diakses tanggal 2011-07-07.
{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link) - (Inggris) eLua – Embedded Lua Diarsipkan 2011-07-23 di Wayback Machine.
- (Inggris) Projects in Lua Diarsipkan 2007-02-02 di Wayback Machine.
| Internasional | |
|---|---|
| Nasional | |
| Lain-lain | |