İçeriğe atla

Lua

Lua
ParadigmasıÇoklu paradigma: Yordamsal, prototip tabanlı, betik dili, nesne yönelimli, fonksiyonel
İlk çıkışı1993 (31 yıl önce) (1993)
TasarımcıRoberto Ierusalimschy
Waldemar Celes
Luiz Henrique de Figueiredo
Kararlı sürüm5.3.3 (6 Haziran 2016 (2016-06-06))
Önizleme sürümü5.3.3 RC3 (30 Mayıs 2016 (2016-05-30))
Önemli uygulamalarıLua, LuaJIT, LLVM-Lua
LehçeleriMetalua, Idle, GSL Shell
EtkilendikleriC++, CLU, Modula, Scheme, SNOBOL
EtkiledikleriFalcon, GameMonkey, Io, JavaScript, Julia, MiniD, Red, Ruby, Squirrel, MoonScript
Uygulama diliANSI C
İşletim sistemiÇapraz platform
LisansMIT Lisansı
Olağan dosya uzantıları.lua
Web sitesilua.org

Lua (İngilizce telaffuz: [ˈluːə] LOO, Portekizcelua Portekizce telaffuz: [ˈ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ş

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

  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. ^ a b c 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. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

<span class="mw-page-title-main">C♯</span> programlama dili

C#; Microsoft tarafından .NET Teknolojisi için geliştirilen modern bir programlama dilidir. Sözdizimi C-like bir deneyim sunar.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">Mikrodenetleyici</span>

Mikrodenetleyici bir VLSI entegre devre çipinde küçük bir bilgisayar'dır. Mikrodenetleyici, bellek ve programlanabilir giriş/çıkış çevre birimleri ile birlikte bir veya daha fazla CPU kapsar.

<span class="mw-page-title-main">Viki</span> ziyaretçilerin düzenleyebileceği web sitesi türü

Viki, bir iş birliği etrafında toplanan kimselerin web tarayıcı üzerinden yeni sayfalar oluşturmasına, sayfalarda düzenlemeler yapmasına ve bu sayfaları birbirine bağlamasına olanak sağlayan MediaWiki vb. bir yazılım altyapısı kullanan web sitelerinin genel adıdır.

<span class="mw-page-title-main">Ada (programlama dili)</span> programlama dili

Ada, yapısal, statik tipli, zorunlu, geniş spektrumlu ve nesne yönelimli bir üst düzey bilgisayar programlama dilidir. Pascal ve diğer dillerin genişletilmiş halidir. Gömülü design-by-contract (DbC), güçlü yazımı, açık eşzamanlı, senkronize mesaj geçişi, korunmuş objeli ve belirsiz bir dildir. Ada kod güvenliğini ve sürdürebilirliğini derleyicide hataları bularak geliştirdi.

Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.

<span class="mw-page-title-main">Microsoft Silverlight</span>

Microsoft Silverlight, ağ uygulamaları için animasyon, vektör, 3D grafik ve görüntü oynatma imkânları sağlayan zengin internet uygulamaları geliştirme düzlemidir.

GLSL, C tabanlı yüksek seviye bir programlama dilidir.OpenGL ARB tarafından,geliştiricilerin grafik işhattına assembly veya donanım-bağımlı bir dil bilmeden direkt erişim sağlaması için yaratılmıştır.

<span class="mw-page-title-main">SQLite</span>

SQLite, dünyada en çok dağıtılan ve tavsiye edilen kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve yapılandırma gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur.

<span class="mw-page-title-main">Go (programlama dili)</span> programlama dili

Go, statik tipli, derlenen, yüksek seviyeli bir programlama dilidir. Robert Griesemer, Rob Pike ve Ken Thompson tarafından Google'da 2007 yılından itibaren geliştirilmeye başlanmıştır. Sözdizimi C'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarak geri verilir, interface veri tipleri sayesinde yapısal tip sistemini destekler ve eşzamanlı (concurrent) çalışan işlemlerin (process) ortak hafıza kullanabilmelerinin yanında birbiriyle iletişim kurmalarını sağlayan ögelere sahiptir. Eski alan adı golang.org olduğundan sık sık golang ismiyle anılır ama asıl adı Go'dur.

<span class="mw-page-title-main">Adobe Flex</span>

Adobe Flex, çapraz platform tabanlı zengin İnternet uygulamalarının Adobe Flash platformu üzerinde geliştirilmesi ve dağıtılması amacıyla Adobe Systems tarafından yayımlanan bir yazılım geliştirme kitidir. Flex uygulamaları, Adobe Flash Builder kullanılarak ya da Adobe'den ücretsiz olarak kullanılabilen Flex derleyicisi kullanılarak yazılabilir. İlk sürümü Mart 2004'te bir yazılım geliştirme kiti, bir IDE ve Flex Data Services olarak bilinen bir Java EE entegrasyon uygulaması Macromedia tarafından dahil edildi. 2005 yılında Adobe, Macromedia'yı elde ettiğinden beri, artık Flex'in daha sonraki sürümleri, Flex Data Services için bir lisans gerektiriyor, LiveCylce Data Services gibi yeniden markalanmış ayrı bir ürün haline geldi. Adobe tarafından 2007 yılında kod katkısıyla başlayan bir açık kaynak projesi olan BlazeDS, Adobe LiveCycle Data Services'a bir alternatiftir. Şubat 2008'de Adobe, özgür Mozilla Kamu Lisansı altında Flex 3 SDK'yı yayınladı ve böylece Flex uygulamaları, herhangi bir standart IDE kullanılarak geliştirilebilir, örneğin Eclipse. Ayrıca Adobe Flash Builder denilen ticarî ve tescilli bir IDE vardır.

<span class="mw-page-title-main">Qt (çalışma alanı)</span>

Qt, birden çok platformu destekleyen bir grafiksel kullanıcı arayüzü geliştirme araç takımıdır. Genellikle GUI programları geliştirmek için kullanılsa da gelişmiş kütüphanesi GUI bileşenlerinin dışında birçok araç içermektedir. Qt, en çok KDE masaüstü ortamında, Opera ağ tarayıcısında ve Skype anlık mesajlaşma programlarında kullanılmasıyla bilinir.

<span class="mw-page-title-main">Processing</span>

Processing, dijital sanat ve görsel tasarım toplulukları tarafından programlamanın temellerini görsel bir yaklaşımla öğretmek için kullanılan veya elektronik bir eskiz defteri görevi de görebilen açık kaynaklı bir programlama dili ve tümleşik geliştirme ortamıdır (IDE). 2001 yılında Casey Reas ve Benjamin Fry tarafından başlatılan proje Java üzerine kurulmuş olup daha basit bir grafik programlama modeli ve sözdizimine sahiptir.

Swift, Apple tarafından iOS ve macOS platformlarına iOS ve Mac uygulamaları geliştirmek için oluşturulan, derlenerek çalışan güçlü ve kullanımı kolay, nesne yönelimli bir programlama dili.

General Polygon Clipper, çokgenlerde kırpma uygulamaları yapmayı sağlayan bir yazılım kütüphanesidir. Bu uygulama bilgisayar grafiklerindeki çokgenlerin çokgenler ile kesiştirilmesi sorununu genelleştirerek çözmeye odaklanır.

Windows Runtime, 2012 yılında ilk olarak Windows 8 ve Windows Server 2012'de tanıtılan platform tabanlı bir uygulama mimarisidir. WinRT, C++/WinRT, C ++/CX, JavaScript-TypeScript, yönetilen kod dilleri C Sharp ve Visual Basic .NET (VB.NET) 'in geliştirilmesini destekler. WinRT uygulamaları, hem x86 hem de ARM mimarisini doğal olarak destekler ve daha fazla güvenlik ve kararlılık sağlamak için sandbox ortamında çalışabilir. WinRT bileşenleri, yerel, yönetilen ve betik dilleri dahil olmak üzere birden fazla dil ve API arasında birlikte çalışabilirlikle tasarlanmıştır.

<span class="mw-page-title-main">Awesome (pencere yöneticisi)</span> X Pencere Sistemi için pencere yöneticisi

AwesomeWM, C ve Lua programlama dillerinde geliştirilmiş X Pencere Sistemi için tasarlanmış dinamik bir pencere yöneticisidir. Lua, pencere yöneticisini yapılandırmak ve genişletmek için de kullanılır. Gelişimi bir dwm çatalı olarak başladı. Son derece küçük ve hızlı olmayı, ancak kapsamlı bir şekilde özelleştirilebilir olmayı hedefliyor. Kullanıcının klavyeyi kullanarak pencereleri yönetmesini mümkün kılar.