**Lua** (İngilizce telaffuz: [ˈluːə] *LOO-ə*, Portekizce: lua Portekizce telaffuz: [ˈlu.(w)ɐ] 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.

Geçmiş
------

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 Evrimi (*The Evolution of Lua*) adlı çalışmada, dil yazarları şunları yazdı:

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

1. ↑  Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Filho, Waldemar Celes (Haziran 1996). "Lua—An Extensible Extension Language". *Software: Practice and Experience*. Cilt 26. ss. 635-652. doi:10.1002/(SICI)1097-024X(199606)26:6<635::AID-SPE26>3.0.CO;2-P. 23 Ekim 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Ekim 2015.
2. ↑  "About Lua". Lua.org. 2 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Ağustos 2011.
3. 1 2 3  Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (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. 14 Aralık 2019 tarihinde kaynağından arşivlendi.
4. ↑  "The evolution of an extension language: a history of Lua". 2001. 14 Ekim 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Aralık 2008.

| * g
* t
* d
Programlama dilleri |
| --- |
| 
* Karşılaştırma
* Zaman Çizelgesi
* Tarihçe

 |
| 
* Ada
* ALGOL
* APL
* Assembly
* BASIC
* C
* C++
* C#
* Classic Visual Basic
* COBOL
* Erlang
* Forth
* Fortran
* Go
* Haskell
* Java
* JavaScript
* Kotlin
* Lisp
* Lua
* MATLAB
* ML
* Object Pascal
* Pascal
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* SQL
* Scratch
* Shell
* Simula
* Smalltalk
* Swift
* Visual Basic
* *dahası...*

 |
| 
* Liste **Listeler:** Alfabetik
* Kategoriik
* Nesilsel
* İngilizce temelli olmayan
* Kategori Kategori

 |

|  |  |
| --- | --- |
| Otorite kontrolü Bunu Vikiveri'de düzenleyin | 
* BNF: cb166522948 (data)
* GND: 7547043-3
* LCCN: sh2004007514
* NLI: 987007563918605171

 |