Lua (programlama dili)

Vikipedi, özgür ansiklopedi
Gezinti kısmına atla Arama kısmına atla
Lua
Lua-logo-nolabel.svg
Paradigması Çoklu paradigma: Yordamsal, prototip tabanlı, betik dili, nesne yönelimli), fonksiyonel
İlk çıkışı 1993 (25 yıl önce) (1993)
Tasarımcı Roberto Ierusalimschy
Waldemar Celes
Luiz Henrique de Figueiredo
Kararlı sürüm

5.3.3

(6 Haziran 2016 (2016-06-06))
Önizleme sürümü

5.3.3 RC3

(30 Mayıs 2016 (2016-05-30))
Tip sistemi dinamik, güçlü, duck
Önemli uygulamaları Lua, LuaJIT, LLVM-Lua
Lehçeleri Metalua, Idle, GSL Shell
Etkilendikleri C++, CLU, Modula, Scheme, SNOBOL
Etkiledikleri Falcon, GameMonkey, Io, JavaScript, Julia, MiniD, Red, Ruby, Squirrel, MoonScript
Uygulama dili ANSI C
İşletim sistemi Çapraz platform
Lisans MIT Lisansı
Olağan dosya uzantıları .lua
Web sitesi lua.org

Lua (/ˈlə/ LOO, Portekizce: lua [ˈlu.(w)ɐ] anlamı ay), ağırlıklı olarak gömülü sistemler ve istemciler için tasarlanmış hafif paralel bir programlama dilidir.[1] Lua, ANSI C'de[2] yazılmış olduğu için çapraz platform destekli bir dildir ve nispeten basit bir C API'sine sahiptir.

Lua başlangıçta 1993 yılında özelleştirmeye olan artan talebi karşılamakta yazılım uygulamalarını genişletmek için bir dil olarak tasarlandı. Çoğu yordamsal programlama dillerinin temel olanaklarını sağlamış ancak daha karmaşık veya alana özgü özellikler dahil edilmemiştir; bunun yerine, programcının bu özellikleri uygulamasına imkân tanıyan, dilin genişletilmesi için mekanizmalar içermekteydi. Lua, genel gömülebilir bir uzantı dili olarak tasarlandığından, Lua tasarımcıları, hızını, taşınabilirliğini, genişletilebilirliğini ve geliştirilmesinde kullanım kolaylığını geliştirmeye odaklanmışlardır.

Geçmiş[değiştir | kaynağı değiştir]

Lua 1993 yılında Rio de Janeiro Pontifical Katolik Üniversitesi'nde Bilgisayar Grafik Teknoloji Grubu (Tecgraf) üyesi olan Roberto Ierusalimschy, Luiz Henrique de Figueiredo ve Waldemar Celes tarafından Brezilya'da geliştirilmiştir.

1977'den 1992'ye kadar Brezilya, bilgisayar donanımı ve yazılımı konularında güçlü ticaret engelleri ("piyasa ihtiyatları" şeklinde tanımlanır) politikalarına sahipti. Bu ortamda Tecgraf'ın müşterileri, politik ya da finansal açıdan yurtdışından özel yazılımlar satın almaya muktedir değildi. Bu gibi nedenlerden dolayı Tecgraf, ihtiyaç duyduğu temel araçları sıfırdan sağlamaya başlamıştı.[3]

Lua'nın öncülleri veri tanımlama/yapılandırma dilleri olan SOL (Simple Object Language, Basit Nesne Dili) ve DEL (data-entry language, veri giriş dili) idi.[4] 1992-1993 yılları arasında iki farklı projeye esneklik kazandırmak için (her ikisi de Petrobras şirketindeki mühendislik uygulamaları için etkileşimli grafiksel programlardı) Tecgraf'ta bağımsız olarak geliştirilmişlerdi. SOL ve DEL'de herhangi bir akış denetim yapısı eksikliği vardı ve Petrobras, onları tam anlamıyla artan bir programlama gücüne eriştirme ihtiyacı hissetmişti.

Lua Evrimi (The Evolution of Lua) adlı çalışmada, dil yazarları şunları yazdı:[3]

1993'te, gerçek şu ki, Tcl, açıkça uygulamalara gömülmek için tasarlanmıştı. Bununla birlikte, Tcl, bilmediğiniz sözdizimlerine sahipti, veri açıklamaları için iyi bir destek sağlamıyor ve yalnızca Unix platformlarında çalışıyordu. Düşmanca sözdizimi nedeniyle LISP'yi veya Sheme'i düşünmedik. Python henüz emekleme aşamasındaydı. Tecgraf'da hüküm süren ücretsiz, kendi başımıza ortamımızda, kendi betik dilimizi geliştirmeye çalışmamız doğaldı ... Dilin pek çok olası kullanıcısı deneyimli programcılar olmadığından dil, şifresiz sözdizimi ve anlambiliminden kaçınmalıydı. Tecgraf'ın müşterileri çok çeşitli bilgisayar yapıları derlemelerine sahip olduğundan, yeni dilin uygulanması oldukça taşınabilir olmalıydı. Son olarak, diğer Tecgraf ürünlerinin bir betik dili gömmek zorunda kalmasını beklediğimizden, yeni dil SOL örneğini takip etmeli ve C API'li bir kütüphane olarak sağlanmalıydı.

Lua 1.0, nesne yapıcılarının, daha sonra mevcut geçerli hafif ve esnek tarzdan biraz farklı olması nedeniyle SOL'nin veri açıklaması sözdizimini ekleyecek şekilde tasarlanmıştı (Bu nedenle Sol "Güneş" anlamında Portekizce kullanılan bir sözcüktü ve Lua "Ay" kelimesine karşılık geliyordu). Kontrol yapıları için Lua Syntax yapıları çoğunlukla Modula'dan alındı (if, while, repeat/until), aynı zamanda CLU'dan (çoklu atamalar ve işlev çağrılarından çoklu geri dönüş, örnek parametrelerine veya açık işaretçilere daha basit değişik bir yorum olarak) etki etmişti, C++ ("yerel bir değişkenin yalnızca ihtiyaç duyduğumuz yerde alenileşmesine izin veren düzgün bir fikir"[3]) SNOBOL ve AWK (ilişkilendirilebilir diziler). Dobb's Journal'da yayınlanan bir makalede, Lua'nın yaratıcıları ayrıca LISP ve Scheme'in tek, her yerde bulunan veri yapısı işleyişi (liste) ile Lua'nın temel veri yapısı olarak tabloyu geliştirme kararı üzerinde büyük bir etkiye sahip olduklarını belirtmektedir.

Lua semantiği, özellikle anonim işlevlerin ve tam sözlü skopingin uygulanması ile zamanla Scheme tarafından gittikçe artan bir şekilde etkilenmiştir. Birçok özellik yeni Lua sürümlerine eklendi.

Sürüm 5.0'dan önceki Lua sürümleri, BSD lisansına benzer bir lisansla yayınlandı. Lua, 5.0 sürümünden itibaren MIT Lisansı ile lisanslanmıştır. Her ikisi de izin verilen özgür yazılım lisanslarıdır ve hemen hemen çoğu konuda aynıdır.

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Filho, Waldemar Celes (June 1996). "Lua—An Extensible Extension Language". Software: Practice and Experience 26: 635–652. DOI:10.1002/(SICI)1097-024X(199606)26:6<635::AID-SPE26>3.0.CO;2-P. http://www.lua.org/spe.html. Erişim tarihi: 24 Ekim 2015. 
  2. ^ "About Lua". Lua.org. 2 Ocak 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170102192926/http://www.lua.org/about.html. Erişim tarihi: 11 Ağustos 2011. 
  3. ^ a b c Ierusalimschy, R.; Figueiredo, L. H. (2007). "The evolution of Lua". Proc. of ACM HOPL III. ss. 2-1–2-26. DOI:10.1145/1238844.1238846. ISBN 978-1-59593-766-7. http://www.lua.org/doc/hopl.pdf. 
  4. ^ "The evolution of an extension language: a history of Lua". 2001. 14 Ekim 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20171014054934/http://www.lua.org/history.html. Erişim tarihi: 18 Aralık 2008.