Lua

Lua ( , anlamı ay), ağırlıklı olarak gömülü sistemler ve istemciler için tasarlanmış hafif paralel bir programlama dilidir. Lua, ANSI C'de 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.

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ı.

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. 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 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") 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.