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

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

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

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

```lua
print 'Hello World!'
```

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

```lua
-- 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. ]=]
```

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

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


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

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

```lua
local condition = true
while condition do
    --Statements
end
```

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

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

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

```lua
local condition = false
repeat
    --Statements
until condition
```

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

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


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

```lua
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)
```


## അവലംബം

## പുറം കണ്ണികൾ

* 
* ലൂഅ-യുസേഴ്സ്.ഓർഗ് 
* ഇലൂഅ – എംബെഡഡ് ലൂഅ 
* ലൂഅ പദ്ധതികൾ 
* ലൂഅ ഗ്രാഫിക്സ് ഉപയോഗങ്ങൾ 
* ലൂഅ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പദ്ധതി 
* ലൂഅ ലൈബ്രറികളാൽ നവീകരിച്ച സ്ക്വിറൽ സ്ക്വിലു