Jump to content

ലൂഅ (പ്രോഗ്രാമിംഗ് ഭാഷ)

വിക്കിപീഡിയ, ഒരു സ്വതന്ത്ര വിജ്ഞാനകോശം.
ലൂഅ
ശൈലി:ബഹുമാതൃക: സ്ക്രിപ്റ്റിംഗ്, ഇംപെരേറ്റീവ് (പ്രൊസീജ്വറൽ, പ്രോട്ടോടൈപ് അടിസ്ഥാനം വസ്തുതാധിഷ്ഠിതം), ഫംഗ്ഷണൽ
പുറത്തുവന്ന വർഷം:1993
രൂപകൽപ്പന ചെയ്തത്:റോബെർട്ടോ ലെറുസാലിംഷി
വാൾഡെമെർ സെലെസ്
ലൂയിസ് ഹെൻറിസ് ഡി ഫിഗറിഡോ
ഏറ്റവും പുതിയ പതിപ്പ്:5.2.2/ മാർച്ച് 27, 2013 (2013-03-27)
ഡാറ്റാടൈപ്പ് ചിട്ട:ഡൈനാമിക്, ശക്തം, ഡക്ക്
പ്രധാന രൂപങ്ങൾ:ലൂഅജിറ്റ്, എൽഎൽവിഎം-ലൂഅ, ലൂഅ ആൽക്കെമി
വകഭേദങ്ങൾ:മെറ്റാലൂഅ, ഐഡിൽ, ജിഎസ്എൽ ഷെൽ
സ്വാധീനിക്കപ്പെട്ടത്:സി++, ക്ലു, മൊഡ്യൂള, സ്കീം, സ്നോബോൾ
സ്വാധീനിച്ചത്:ലോ, ഗെയിംമങ്കീ, സ്ക്വിറൽ, ഫാൽകൺ, മിനിഡി
ഓപറേറ്റിങ്ങ് സിസ്റ്റം:ക്രോസ് പ്ലാറ്റ്ഫോം
അനുവാദപത്രം:എംഐടി അനുമതിപത്രം
വെബ് വിലാസം:ലൂഅ.ഓർഗ്

ലഘുവായ ഒരു ബഹുമാതൃകാ പ്രോഗ്രാമിംഗ് ഭാഷയാണ് ലൂഅ (പോർച്ചുഗീസ്: lua - അർത്ഥം: ചന്ദ്രൻ.[1]). വിപുലീകരിക്കാവുന്ന അർത്ഥ വിജ്ഞാനീയത്തോടു കൂടിയ ഒരു സ്ക്രിപ്റ്റിംഗ് ഭാഷ ലഭ്യമാക്കുക എന്നതായിരുന്നു ലൂഅയുടെ പ്രധാന ലക്ഷ്യം. ആൻസി സിയിൽ തയ്യാറാക്കപ്പെട്ടതിനാൽ ലൂഅ ഒരു ക്രോസ് പ്ലാറ്റ്ഫോം ഭാഷയാണ്.[1]പൊതുവെ ലളിതമായ സി എപിഐ ഉപയോഗിക്കുന്നതിനാൽ ലൂഅ ഉപകാരപ്രദമായ സോഫ്റ്റ്വെയറുകൾ രചിക്കാനുള്ള ലളിതമായ മാർഗ്ഗമൊരുക്കുന്നു.[2]

അക്കാലത്ത് കസ്റ്റമൈസേഷനായി വർദ്ധിച്ചുവരുന്ന ആവശ്യം നിറവേറ്റുന്നതിനായി സോഫ്റ്റ്വെയർ ആപ്ലിക്കേഷനുകൾ വിപുലീകരിക്കുന്നതിനുള്ള ഒരു ഭാഷയായാണ് 1993 ൽ ലൂഅ രൂപകൽപ്പന ചെയ്തത്. മിക്ക പ്രോസിജിറൽ പ്രോഗ്രാമിംഗ് ഭാഷകളുടെ അടിസ്ഥാന സൗകര്യങ്ങൾ ഇത് നൽകി, പക്ഷേ കൂടുതൽ സങ്കീർണ്ണമായ അല്ലെങ്കിൽ ഡൊമെയ്ൻ നിർദ്ദിഷ്ട സവിശേഷതകൾ ഉൾപ്പെടുത്തിയിട്ടില്ല; പകരം, ഭാഷ വിപുലീകരിക്കുന്നതിനുള്ള സംവിധാനങ്ങൾ അതിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, അത്തരം സവിശേഷതകൾ നടപ്പിലാക്കാൻ പ്രോഗ്രാമർമാരെ അനുവദിക്കുന്നു. പൊതുവായ ഉൾച്ചേർക്കാവുന്ന(embedded) വിപുലീകരണ ഭാഷയായി ലുആ ഉദ്ദേശിച്ചിരുന്നതിനാൽ, അതിന്റെ വേഗത, പോർട്ടബിലിറ്റി, വിപുലീകരണം, വികസനത്തെ എളുപ്പത്തിൽ ഉപയോഗിക്കൽ എന്നിവയിൽ ലൂഅയുടെ ഡിസൈനർമാർ ശ്രദ്ധ കേന്ദ്രീകരിച്ചു.

ചരിത്രം

[തിരുത്തുക]

1993 ൽ ബ്രസീലിലെ റിയോ ഡി ജനീറോയിലെ പോണ്ടിഫിക്കൽ കാത്തലിക് യൂണിവേഴ്‌സിറ്റിയിലെ കമ്പ്യൂട്ടർ ഗ്രാഫിക്സ് ടെക്‌നോളജി ഗ്രൂപ്പിലെ (ടെക്ഗ്രാഫ്) അംഗങ്ങളായ റോബർട്ടോ ഐറുസാലിംഷി, ലൂയിസ് ഹെൻറിക് ഡി ഫിഗ്യൂറെഡോ, വാൾഡെമർ സെലെസ് എന്നിവരാണ് ലൂഅ സൃഷ്ടിച്ചത്.

കമ്പ്യൂട്ടർ ഹാർഡ്‌വെയറിനും സോഫ്റ്റ്വെയറിനുമായി 1977 മുതൽ 1992 വരെ ബ്രസീലിന് ശക്തമായ ട്രേഡ് ബാരിയേഴ്സ് (മാർക്കറ്റ് റിസർവ് എന്ന് വിളിക്കപ്പെടുന്ന) നയമുണ്ടായിരുന്നു. ആ അന്തരീക്ഷത്തിൽ, ടെക്ഗ്രാഫിന്റെ ക്ലയന്റുകൾക്ക് രാഷ്ട്രീയമായോ സാമ്പത്തികമായോ വിദേശത്ത് നിന്ന് ഇഷ്ടാനുസൃതമാക്കിയ സോഫ്റ്റ്വെയർ വാങ്ങാൻ കഴിയില്ല. ഈ കാരണങ്ങളാൽ ടെക്ഗ്രാഫിന് ആദ്യം മുതൽ ആവശ്യമായ അടിസ്ഥാന ഉപകരണങ്ങൾ നടപ്പിലാക്കാൻ കാരണമായി.[3]

ഉദാഹരണങ്ങൾ

[തിരുത്തുക]

ലളിതമായവ

[തിരുത്തുക]

ലൂഅയിൽ ഹലോ വേൾഡ് പ്രോഗ്രാം ഇത്തരത്തിൽ തയ്യാറാക്കാം.[4]

print 'Hello World!'

കമന്റുകൾ ചേർക്കുന്നത് അഡ, ഈഫൽ, എസ്ക്യുഎൽ, ഹാസ്കെൽ, വിഎച്ച്ഡിഎൽ ഭാഷകളിലേതിനു സമാനമായാണ്.[4]: 6 

-- A comment in Lua starts with a double-hyphen and runs to the end of the line.
--[[ Multi-line strings & comments
     are adorned with double square brackets. ]]
--[=[ Comments like this can have other --[[comments]] nested. ]=]

ഫാക്റ്റോറിയൽ കാണാനുള്ള ഏകദം ഇത്തരത്തിൽ തയ്യാറാക്കാം.

function factorial(n)
	local x = 1
	for i = 2,n do
		x = x * i
	end
	return x
end

ലൂപ്പുകൾ

[തിരുത്തുക]

ലൂഅയിൽ നാലു ലൂപ്പുകളുണ്ട്. വൈൽ ലൂപ്പ്, ഫോർ ലൂപ്പ്, റിപ്പീറ്റ് ലൂപ്പ് (ഡു വൈലിന് സമാനം), ജെനറിക് ഫോർ ലൂപ്പ് എന്നിവയാണവ.

വൈൽ ലൂപ്പ് ഇത്തരത്തിലാണ് ഉപയോഗിക്കുന്നത്:

local condition = true
while condition do
    --Statements
end

ഫോർ ലൂപ്പ് ഇത്തരത്തിലാണുപയോഗിക്കുന്നത്:

for index = 1,5 do
    print(index)
end

റിപ്പീറ്റ് ലൂപിന്റെ ഉപയോഗം ഇങ്ങനെയാണ്:

local condition = false
repeat
    --Statements
until condition

ജെനറിക് ഫോർ ലൂപ് ഇതു പോലെ ഉപയോഗിക്കാം:

for key,value in pairs(_G) do
    print(key,value)
end

ഒബ്ജെക്റ്റുകൾ

[തിരുത്തുക]

ഒരു സദിശ വസ്തുവിനെ ഇപ്രകാരം നിർമ്മിക്കാം.

Vector = {}                   -- Create a table to hold the class methods
function Vector:new(x, y, z)  -- The constructor
  local object = { x = x, y = y, z = z }
  setmetatable(object, { __index = Vector })  -- Inheritance
  return object
end
function Vector:magnitude()   -- Another member function
  -- Reference the implicit object using self
  return math.sqrt(self.x^2 + self.y^2 + self.z^2)
end

vec = Vector:new(0, 1, 0)     -- Create a vector
print(vec:magnitude())        -- Call a member function using ":" (output: 1)
print(vec.x)                  -- Access a member variable using "." (output: 0)

അവലംബം

[തിരുത്തുക]
  1. 1.0 1.1 "About Lua". Lua.org. Retrieved 2013-06-19.
  2. Yuri Takhteyev (April 21, 2013). "From Brazil to Wikipedia". Foreign Affairs. Retrieved April 25, 2013.
  3. Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (2007). "The evolution of Lua" (PDF). Proc. of ACM HOPL III. pp. 2–1–2–26. doi:10.1145/1238844.1238846. ISBN 978-1-59593-766-7. S2CID 475143.[പ്രവർത്തിക്കാത്ത കണ്ണി]
  4. 4.0 4.1 Ierusalimschy, Roberto (2003). Programming in Lua, 1st ed. PUC-Rio, Brazil: lua.org. p. 3. ISBN 9788590379829.

പുറം കണ്ണികൾ

[തിരുത്തുക]