കോഫീസ്ക്രിപ്റ്റ്
ജാവാസ്ക്രിപ്റ്റിന്റെ ട്രാൻസ്കംപൈലിംഗ് പ്രോഗ്രാമിംഗ് ഭാഷയാണ് കോഫീസ്ക്രിപ്റ്റ്. ജാവാസ്ക്രിപ്റ്റിന്റെ പദപ്രയോഗമിതത്വവും, വായനക്ഷമതയും മെച്ചപ്പെടുത്തുന്നതിനുള്ള ശ്രമത്തിൽ റൂബി, പൈത്തൺ, ഹാസ്കൽ എന്നിവയാൽ പ്രചോദിപ്പിക്കപ്പെട്ട വാക്യഘടകങ്ങൾ ചേർക്കുന്നു.[4]പ്രത്യേക അധിക സവിശേഷതകളിൽ ലിസ്റ്റ് ഉൾപ്പെടുത്തൽ, പാറ്റേൺ പൊരുത്തപ്പെടൽ എന്നിവ ഉൾപ്പെടുന്നു. റൂബി ഓൺ റെയിൽസ് പതിപ്പ് 3.1 [5], പ്ലേ ഫ്രെയിം വർക്കുകളിൽ[6] കോഫീസ്ക്രിപ്റ്റ് പിന്തുണ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. 2011-ൽ ബ്രണ്ടൻ ഐക്ക്, ജാവാസ്ക്രിപ്റ്റിന്റെ ഭാവിയെക്കുറിച്ചുള്ള അദ്ദേഹത്തിന്റെ ചിന്തകളുടെ സ്വാധീനമായി കോഫീസ്ക്രിപ്റ്റ് പരാമർശിച്ചു. [7][8] ചരിത്രം2009 ഡിസംബർ 13 ന് ജെറമി ആഷെനാസ് തയ്യാറാക്കിയ കോഫീസ്ക്രിപ്റ്റിന്റെ ആദ്യത്തെ ജിറ്റ് നിയോഗം: " ഭാഷയുടെ മർമ്മാരംഭം" എന്നായിരുന്നു. [9]കമ്പൈലർ റൂബിയിൽ എഴുതിയിരുന്നു. ഡിസംബർ 24 ന് അദ്ദേഹം ആദ്യത്തെ ടാഗ് ചെയ്തതും രേഖപ്പെടുത്തിയതും ആയ 0.1.0 പുറത്തിറക്കി. 2010 ഫെബ്രുവരി 21 ന് ആയിരുന്നു അത്, കോഫീസ്ക്രിപ്റ്റിൽ ശുദ്ധമായ ഒരു പതിപ്പിനൊപ്പം സെൽഫ് ഹോസ്റ്റിംഗ് റൂബി കംപൈലർ പകരം വച്ചിരുന്നു. അപ്പോഴേയ്ക്കും ജിറ്റ് ഹബിൽ നിരവധി മറ്റ് കോൺട്രിബൂട്ടേഴ്സിനേയും ആ പ്രോജക്ട് ആകർഷിച്ചു. പ്രതിദിനം 300 പേജിലധികം ഹിറ്റ് ലഭിച്ചു. 2010 ഡിസംബർ 24 ന്, ആഷെനാസ് പ്രൊജക്റ്റ് ആദ്യമായി ഹാക്ക് ന്യൂസിൽ സൈറ്റിൽ 1.0.0 എന്ന സ്ഥിര പതിപ്പ് പ്രഖ്യാപിച്ചു.[10][11] 2017 സെപ്റ്റംബർ 18 ന് പതിപ്പ് 2.0.0 അവതരിപ്പിച്ചു. [12]"ആധുനിക ജാവാസ്ക്രിപ്റ്റ് കാലഘട്ടത്തെ ലക്ഷ്യം വച്ചുള്ളതാണ് കോഫീസ്ക്രിപ്റ്റ് ഹാൾമാർക്ക് എന്ന വൃത്തിയുള്ള വാക്യഘടന സംരക്ഷിക്കുന്നതിനിടയിൽ ജാവാസ്ക്രിപ്റ്റിനു യോജിച്ച തരത്തിൽ ന്യൂനതകൾ അവസാനിപ്പിക്കുക എന്നതായിരുന്നു. " വാക്യഘടനമിക്കവാറും എല്ലാം കോഫീസ്ക്രിപ്റ്റിൽ ഒരു എക്സപ്രഷനാണ്, ഉദാഹരണത്തിന്, അനാവശ്യമായ ബ്രാക്കറ്റുകളും ബ്രേസ്സും ഒഴിവാക്കാവുന്നതാണ്; ഉദാഹരണത്തിന്, കോഡുകളുടെ ബ്ലോക്കുകൾ ബ്രെയ്സിന് പകരം ഇൻഡെന്റേഷൻ ഉപയോഗിച്ച് സൂചിപ്പിക്കാം, ഫംഗ്ഷൻ കോളുകൾ അന്തർലീനമാണ്, ഒബ്ജക്റ്റ് ലിറ്ററലുകൾ പലപ്പോഴും യാന്ത്രികമായി കണ്ടെത്തപ്പെടുന്നു. ഉദാഹരണങ്ങൾഇടവേള പരീക്ഷണംബോഡി മാസ് ഇൻഡക്സ് കണക്കുകൂട്ടാൻ, ഒന്ന് ചെയ്യത് നോക്കാം (ഇവിടെ ജാവാസ്ക്രിപ്റ്റിൽ): var mass = 72;
var height = 1.78;
var BMI = mass / Math.pow(height, 2);
if (18.5 < BMI && BMI < 25) alert('You are healthy!');
കോഫീസ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഇന്റർവെൽ നേരിട്ട് ഇപ്രകാരം വിവരിച്ചിരിക്കുന്നു: mass = 72
height = 1.78
BMI = mass / height**2
alert 'You are healthy!' if 18.5 < BMI < 25
ലൂപ്പുകളും കോംപ്രിഹെഷനുകളുംയൂക്ലിഡിയൻ അൽഗോരിതം ഉള്ള രണ്ട് പൂർണ്ണസംഖ്യകളുടെ ഏറ്റവും വലിയ പൊതുഹാരകം കണക്കുകൂട്ടാൻ, ജാവാസ്ക്രിപ്റ്റ് ഉപയോഗിക്കുമ്പോൾ സാധാരണയായി ഒരു ലൂപ്പ് ആവശ്യമാണ്: gcd = (x, y) => {
do {
z = x % y
x = y
y = z
} while (y !== 0)
return x
}
കോഫീസ്ക്രിപ്റ്റിൽ അതിന് പകരം ഉപയോഗിക്കാനും പാറ്റേൺ-പൊരുത്തപ്പെടാനും കഴിയും: gcd = (x, y) ->
[x, y] = [y, x%y] until y is 0
x
ഒരു ലൂപ്പിനുള്ള ലിസ്റ്റ് മനസ്സിലാക്കാൻ കഴിയും; അതിനാൽ പത്തി നെക്കാൾ കുറവായ പോസിറ്റീവ് ഒറ്റ അക്കങ്ങളുടെ സ്ക്വയറുകൾ കണക്കാക്കാൻ കഴിയും (ശേഷിക്കുന്ന സംഖ്യ മോഡുലോ 2 ആണ്), ഒന്ന് ചെയ്യ്ത് നോക്കുവാൻ സാധിക്കുന്നതാണ്: alert n*n for n in [1..10] when n%2 is 1
പകരമായി, അവിടെയുണ്ട്: alert n*n for n in [1..10] by 2
ഒരു ലൈനറിനോടൊപ്പമുള്ള കീവേഡ് ഉപയോഗിച്ച് ലീനിയർ തിരയൽ നടപ്പിലാക്കാൻ കഴിയും: names = ["Ivan", "Joanna", "Nikolay", "Mihaela"]
linearSearch = (searchName) -> alert(name) for name in names when name is searchName
ഇതിനായി personCheck = ->
if not person? then alert("No person") else alert("Have person")
person = null
personCheck()
person = "Ivan"
personCheck()
വ്യക്തിയല്ലെങ്കിൽ എങ്കിൽ "ആരുമില്ല" എന്ന അലർട്ട് നൽകുന്നു, വേരിയബിൾ ശൂന്യം അല്ലെങ്കിൽ അനിർവ്വചനീയമായതാണോ അവിടെ എന്തെങ്കിലും ഉണ്ടെങ്കിൽ "വ്യക്തി ഉണ്ട്" എന്ന് നൽകുയും ചെയ്യുന്നു. ഫങ്ഷനുകളും ജെക്വറിയുംജെക്വറി(JQuery) ലൈബ്രറിയുപയോഗിക്കുന്ന പൊതുവായ ഒരു ജാവസ്ക്രിപ്റ്റിന്റെ ശകലശേഖരം(snippets) ആണ്: $(document).ready(function() {
// Initialization code goes here
})
അല്ലെങ്കിൽ പോലും: $(function() {
// Initialization code goes here
})
കോഫീസ്ക്രിപ്റ്റിൽ, $(document).ready ->
# Initialization code goes here
അല്ലെങ്കിൽ: $ ->
# Initialization code goes here
സ്ട്രിംഗ് ഇന്റർപോളേഷൻറൂബി രീതിയിലുള്ള ഇന്റർപോളേഷൻ കോഫീസ്ക്രിപ്റ്റിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഇരട്ട ഉദ്ധരണികൾ സ്ട്രിംഗ്സ് ഇന്റർപോളേറ്റഡ് മൂല്യങ്ങൾക്കായി ഉപയോഗിക്കുന്നത്, # {...} ഉപയോഗിച്ച്, സിംഗിൾ-കോട്ട് ചെയ്ത സ്ട്രിംഗുകൾ അക്ഷരീയമാണ്(literal). [13] author = "Wittgenstein"
quote = "A picture is a fact. -- #{ author }"
sentence = "#{ 22 / 7 } is a decent approximation of π"
കംപൈലിംഗ്കോഫീസ്ക്രിപ്റ്റ് കമ്പൈലർ കോഫീസ്ക്രിപ്റ്റിൽ എഴുതിയത് 0.5 മുതൽ നോഡ്.ജെഎസ് യൂട്ടിലിറ്റി ലഭ്യമാണ്. എന്നിരുന്നാലും, കോർ കമ്പൈലർ നോഡ്.ജെഎസി (Node.js)നെ ആശ്രയിക്കില്ല, കൂടാതെ ഏതൊരു ജാവസ്ക്രിപ്റ്റ് സാഹചര്യത്തിലും(environment) പ്രവർത്തിക്കാൻ കഴിയും.[14]നോഡ്.ജെഎസ് യൂട്ടിലിറ്റിക്കുള്ള ബദൽ കോഫി മാവെൻ പ്ലഗിൻ(Coffee Maven Plugin) ആണ്, അപ്പാച്ചെ മാവെൻ നിർമ്മിക്കുന്നതിനുള്ള ഒരു പ്ലഗിൻ. ജാവയിൽ എഴുതപ്പെട്ട റിനോ ജാവസ്ക്രിപ്റ്റ് എഞ്ചിൻ(Rhino JavaScript engine) ഈ പ്ലഗിൻ ഉപയോഗിക്കുന്നു. കോഫീസ്ക്രിപ്റ്റ്.ഓർഗി(CoffeeScript.org) ലെ ഔദ്യോഗിക സൈറ്റിലെ മെനു ബാറിൽ "കോഫീസ്ക്രിപ്റ്റ് പരീക്ഷിക്കുക" ബട്ടൺ ഉണ്ട്; ഇത് ക്ലിക്ക് ചെയ്യുന്ന ഉപയോക്താക്കൾക്ക് മോഡ് വിൻഡോ തുറക്കാൻ കഴിയും, ഇത് കോഫീസ്ക്രിപ്റ്റ് നൽകുക, ജാവസ്ക്രിപ്റ്റ് ഔട്ട്പുട്ട് കാണുക, ഇത് ബ്രൗസറിൽ നേരിട്ട് പ്രവർത്തിപ്പിക്കാൻ സാധിക്കുന്നു. Js2coffee [15] സൈറ്റ് ബൈ-ദിശയിലുള്ള വിവർത്തനം നൽകുന്നു. ഏറ്റവും പുതിയ കൂട്ടിച്ചേർക്കലുകൾ
അഡോപ്ഷൻ2012 സപ്തംബർ 13 ന് ഡ്രോപ്പ്ബോക്സ് തങ്ങളുടെ ബ്രൌസർ സൈഡ് കോഡ് ബേസ് ജാവാസ്ക്രിപ്റ്റിൽ നിന്നും കോഫീസ്ക്രിപ്റ്റിലേക്ക് പകർത്തിയെഴുതിയതായി പ്രഖ്യാപിച്ചു.[16] ഗിറ്റ്ഹബ്ബി(GitHub)ന്റെ ആന്തരിക ശൈലിയിലുള്ള ഗൈഡ് ഒരിക്കൽ ഇങ്ങനെ പറഞ്ഞു, "കോഫീസ്ക്രിപ്റ്റിൽ പുതിയ ജെഎസ് എഴുതുക" ഒപ്പം, ഇനിമേൽ അത് ചെയ്യുന്നില്ല, സ്റ്റയിൽ ഗൈഡ് റഫറൻസുകളിലെ എല്ലാ ഉപദേശങ്ങളും എങ്ങനെ നല്ല കോഫീസ്ക്രിപ്റ്റ് കോഡ് എഴുതാം,[17] കൂടാതെ അവരുടെ ആറ്റം(Atom) ടെക്സ്റ്റ് എഡിറ്ററും ഈ ഭാഷയിലാണ് എഴുതുന്നത്. [18] വിമർശനംഅസാധാരണമായ സ്കോപ്പിംഗ് നിയമങ്ങൾ കാരണം കോഫീസ്ക്രിപ്റ്റിനെതിരെ വിമർശനം ഉയർന്നിട്ടുണ്ട് [19][20].പ്രത്യേകിച്ചും, ഇത് വേരിയബിൾ ഷേഡോയിംഗ് അനുവദിക്കുന്നില്ല, അത് കോഡുകളെക്കുറിച്ച് ന്യായവാദം ചെയ്യുന്നത് ചില അടിസ്ഥാന പ്രോഗ്രാമിങ് പാറ്റേണുകളിൽ കൂടുതൽ ബുദ്ധിമുട്ടുള്ളതും പിശക്-സാധ്യതയുമാണ്, ഇത് സ്ഥാപിക്കപ്പെടുകയും എടുക്കുകയും ചെയ്യേണ്ടതാണ്. പ്രൊസീജറൽ പ്രോഗ്രാമിങ് തത്ത്വങ്ങൾ നിർവചിക്കപ്പെട്ടിരുന്നു. ഉദാഹരണത്തിന്, ബാഹ്യ സാധ്യമായ // ...
{
var foo = "bar";
console.log(`foo = ${foo}`)
}
// ...
}
ഒരു വേരിയബിളിന്റെ പരിധി ഒരു ബ്ലോക്കിലേക്ക് പരിമിതപ്പെടുത്തിയിട്ടുണ്ടോ എന്ന് അറിയിക്കാൻ ഒരു മാർഗ്ഗവുമില്ല അല്ലെങ്കിൽ ബ്ലോക്കിന് പുറത്ത് നോക്കാതെ തന്നെ. ഇതും കാണുക
ജാവാസ്ക്രിപ്റ്റിലേക്ക് സമാഹരിക്കുന്ന മറ്റ് ഭാഷകൾ(കാലക്രമത്തിൽ, TIOBE സൂചികയിൽ ലിസ്റ്റുചെയ്തിട്ടുള്ളവ ബോൾഡായി എടുത്തു കാണിച്ചിരിക്കുന്നു.)
അവലംബം
|
Portal di Ensiklopedia Dunia