സ്കാല (പ്രോഗ്രാമിങ് ഭാഷ)
സ്കാല (Scala) ഒരു പൊതു ഉപയോഗ പ്രോഗ്രാമിങ് ഭാഷയാണ്. ഇത് ഫങ്ഷണൽ പ്രോഗ്രാമിങ്ങിനും ശക്തമായ സ്റ്റാറ്റിക് ടൈപ്പ് സിസ്റ്റത്തിനും പിന്തുണ നൽകുന്നു. സ്കാല സോഴ്സ് കോഡ് ജാവ ബൈറ്റ്കോഡിലേക്ക് കംപൈൽ ചെയ്യാൻ ഉദ്ദേശിച്ചുള്ളതാണ്, അങ്ങനെ സംഭവിക്കുന്ന കൃത്യനിർവഹണ കോഡ് ജാവ അയഥാർത്ഥ (വെർച്ച്വൽ) സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്നു. സ്കാല ജാവയിൽ ഭാഷയുടെ പരസ്പരമുള്ള പ്രവർത്തനക്ഷമത നൽകുന്നു, അതിനാൽ രണ്ട് ഭാഷകളിലും എഴുതപ്പെട്ട ലൈബ്രറികൾ സ്കാലയിലോ ജാവ കോഡിലോ നേരിട്ട് പരാമർശിക്കപ്പെടാം. ജാവയെ പോലെ, സ്കാല ഓബ്ജക്റ്റ് ഓറിയൻറഡ് ആണ്, കൂടാതെ സി പ്രോഗ്രാമിങ് ഭാഷയുടെ ഓർമ്മപ്പെടുത്തലായി ഒരു വളഞ്ഞ ബ്രേസ് സിൻറാക്സ് ഉപയോഗിക്കുന്നു. ജാവയിൽ നിന്നും വ്യത്യസ്തമായി സ്കീം സ്റ്റാൻഡേർഡ് എം.എൽ., ഹാസ്കൽ തുടങ്ങിയ പ്രോഗ്രാമിങ് ഭാഷകളെ സ്കാലയിൽ പല ഘടകങ്ങളുമായി ബന്ധപ്പെടുത്തിയിരിക്കുന്നു. കറിയിങ്, അനുമാനതരങ്ങൾ, അപര്യാപ്തത, അലസമായ മൂല്യനിർണ്ണയം, മാതൃക പൊരുത്തപ്പെടൽ എന്നിവയുൾപ്പെടെ നിരവധി സവിശേഷതകളുണ്ട്. ജാവയിൽ ഇല്ലാത്ത സ്കാലയുടെ മറ്റ് ഫീച്ചറുകൾ ഈ പറയുന്നവയാണ് ഓപ്പറേറ്റർ ഓവർലോഡിംഗ്, ഇച്ഛാനുസൃതമായ പരിധികൾ, നാമപരിധികൾ, അസംസ്കൃത സ്ട്രിംഗ്സ് എന്നിവയാണ്. അതുപോലെ, സ്കാലയിൽ ഇല്ലാത്ത ജാവയുടെ ഒരു സവിശേഷത ഒഴിവാക്കലുകൾ പരിശോധിക്കുകയാണ്. സ്കാല അളവും വലിപ്പവും മാറ്റാവുന്ന ഭാഷ ആയതിനാൽ, അതിൻറെ ഉപയോക്താക്കളുടെ ആവശ്യങ്ങൾക്കനുസൃതമായി വളരാൻ പാകത്തിലാണ് രൂപകൽപന ചെയ്യുന്നതിരിക്കുന്നത്. ചരിത്രം2001 ൽ സ്കാലയുടെ രൂപകൽപ്പന മാർക്കോ ഒഡേർസ്സ്കി ഇക്കോൾ പോളിടെക്നിക് ഫെഡെറലെ ഡെ ലൗസനെയിൽ (ഇ.പി.എഫ്.എൽ.) (ലോസാനിൽ, സ്വിറ്റ്സർലണ്ടിൽ) ആരംഭിച്ചു. ഓഡേഴ്സ്കി മുൻപ് ജനറിക് ജാവയിലും ജാവാക്, സൺസ് ജാവാ കമ്പൈലറിലും പ്രവർത്തിച്ചു. 2003 ൻറെ അന്ത്യത്തിൽ, 2004-ൽ ജാവ പ്ലാറ്റ്ഫോമിൽ സ്കാല പുറത്തിറങ്ങി. 2006 മാർച്ചിൽ രണ്ടാം പതിപ്പ് (v2.0). ഫംഗ്ഷൻ പ്രോഗ്രാമിന് തുടക്കം കുറിച്ച സ്കാലയ്ക്ക് വലിയ പിന്തുണ ഉണ്ടായിരുന്നെങ്കിലും, ജാവാ 8 ഉപയോഗിച്ച് ലാംഡ എക്സ്പ്രഷനുകൾ ഉൾപ്പെടുത്തുന്നത് വരെ ജാവ ഒരു ഒബ്ജക്റ്റ് ഓറിയൻറഡ് ഭാഷയായി തുടർന്നു. 2011 ജനുവരി 17 ന് യൂറോപ്യൻ റിസേർച്ച് കൗൺസിലിൽ നിന്ന് സ്കാല ടീമിന് 2.3 മില്ല്യൺ യൂറോ കിട്ടി. 2011 മേയ് 12-ന് ഓഡേഴ്സ്സ്കിയും സഹകാരികളും ടൈപ്സേഫ് എന്ന കമ്പനി (പിന്നീട് ലൈറ്റ്ബെൻഡ് ഇൻക്. എന്ന പേരിൽ പുനർനാമകരണം ചെയ്തു) സ്കാലയ്ക്ക് വാണിജ്യ പിന്തുണയും പരിശീലനവും സേവനങ്ങളും പ്രദാനം ചെയ്തു. ടൈപ്സേഫിന് 2011 ൽ ഗ്രൈലോക്ക് പാർട്ട്നേഴ്സിൽ നിന്ന് 3 മില്യൺ ഡോളർ നിക്ഷേപവും ലഭിച്ചു. പ്ലാറ്റ്ഫോമുകളും ലൈസൻസുംസ്കാല ജാവ പ്ലാറ്റ്ഫോമിൽ പ്രവർത്തിക്കുന്നു (ജാവ വെർച്വൽ മെഷീൻ) നിലവിലുള്ള ജാവാ പ്രോഗ്രാമുകൾക്ക് അനുയോജ്യമാണ്. ആൻഡ്രോയ്ഡ് ആപ്ലിക്കേഷനുകൾ സാധാരണയായി ജാവയിൽ എഴുതുകയും ജാവ ബൈറ്റ്കോഡിൽ നിന്ന് ഡാൽവിക് ബൈറ്റ്കോഡായി (ഇൻസ്റ്റാളേഷൻറെ സമയത്ത് സ്വതഃസിദ്ധമായ യന്ത്ര ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യാവുന്നതാണ്), പാക്കേജു ചെയ്യുമ്പോൾ, സ്കാലയുടെ ജാവ അനുയോജ്യത ആൻഡ്രോയ്ഡ് വികസനത്തിന് ഏറെ അനുയോജ്യമാണ്, ഒരു ഫങ്ഷണൽ സമീപനം തിരഞ്ഞെടുക്കുമ്പോൾ കൂടുതൽ സ്വീകാര്യത ലഭിക്കുന്നു. കമ്പൈലറും ലൈബ്രറികളും ഉൾപ്പെടെ റഫറൻസ് സ്കാല സോഫ്റ്റ്വേർ വിതരണമാണ് ബിഎസ്ഡി ലൈസൻസിനു കീഴിൽ റിലീസ് ചെയ്യപ്പെടുന്നത്. മറ്റ് കമ്പൈലറുകൾ, ടാർഗെറ്റുകൾസ്കാല.ജെഎസ് എന്നത് ഒരു സ്കാല കംപൈലറാണ്, അത് ജാവാസ്ക്രിപ്റ്റിലേക്ക് സമാഹരിക്കുന്നു, ഇത് വെബ് ബ്രൌസറുകളിൽ പ്രവർത്തിക്കാൻ കഴിയുന്ന സ്കാല പ്രോഗ്രാമുകൾ എഴുതുന്നത് സാധ്യമാക്കുന്നു. സ്കാല നേറ്റീവ് ഒരു സ്കാല കംപൈലർ ആണ്, ഇത് എൽഎൽവിഎം കമ്പൈലർ ഇൻഫ്രാസ്ട്രക്ചറിനെ ലക്ഷ്യമിടുന്നു. ഇത് ലൈറ്റ്-വെയിറ്റ് മാനേജുമെന്റ് റൺടൈം ഉപയോഗിയ്ക്കാവുന്ന കോഡ് ഉണ്ടാക്കുന്നു. ഇത് ബോഹെം ഗാർബേജ് കളക്ടറെ പ്രയോജനപ്പെടുത്തുന്നു. ഡെനിസ് ഷബലിൻ ആണ് ഈ പദ്ധതി നയിക്കുന്നത്, 2017 മാർച്ച് 14 ന് അതിൻറെ 0.1 പുറത്തിറങ്ങുകയും ചെയ്തു. കോഡിന്റെ പ്രാരംഭ റൈറ്റ് കംപൈലേഷൻ ഒഴിവാക്കി ജെവിഎമ്മിനു വേണ്ടി ജസ്റ്റ്-ഇൻ-ടൈം കമ്പൈലേഷൻ എന്നതിനേക്കാൾ വേഗത്തിൽ ലക്ഷ്യം നേടാൻ സ്കാല നേറ്റീവ് ഡെവലപ്പ്മെൻറ് 2015-ൽ ആരംഭിച്ചു. .നെറ്റ് ഫ്രെയിംവർക്കിനെ ലക്ഷ്യം വയ്ക്കുന്ന ഒരു റഫറൻസ് സ്കാല കമ്പൈലർ, 2004 ജൂൺ മാസത്തിൽ പുറത്തിറങ്ങി, എന്നിരുന്നാലും 2012-ൽ അത് ഔദ്യോഗികമായി ഉപേക്ഷിക്കപ്പെട്ടു. ഉദാഹരണങ്ങൾ"ഹലോ വേൾഡ്" ഉദാഹരണംസ്കാലയിൽ എഴുതിയിരിക്കുന്ന ഹലോ വേൾഡ് പ്രോഗ്രാം object HelloWorld extends App {
println("Hello, World!")
}
ജാവക്കുള്ള സ്റ്റാൻഡ്-എലോൺ (ആരുടെയും സഹായം കൂടാതെ തനിയെ പ്രവർത്തിക്കാൻ കഴിവുള്ള യൂണിറ്റ്) ഹലോ വേൾഡ് ആപ്ലിക്കേഷനിൽ നിന്ന് വ്യത്യസ്തമായി, ക്ലാസ് ഡിക്ലറേഷൻ ഇല്ല, ഒന്നും സ്റ്റാറ്റിക് ആയി പ്രഖ്യാപിച്ചിട്ടില്ല. പകരം ഒബ്ജക്റ്റ് കീവേർഡിൽ ഉപയോഗിച്ചിരിക്കുന്ന സിംഗിൾടൺ വസ്തുവാണ് ഉപയോഗിക്കുന്നത്. പ്രോഗ്രാം HelloWorld.scala -ൽ സൂക്ഷിക്കുമ്പോൾ, ആ കമാൻഡ് ഉപയോഗിച്ച് ഉപയോക്താവ് അത് മെഷീൻ കോഡിലേക്ക് കമ്പ്യൂട്ടർ പ്രോഗ്രാം മാറ്റുന്നു. $ scalac HelloWorld.scala
ഒപ്പം ഇത് പ്രവർത്തിപ്പിക്കുന്നു $ scala HelloWorld
സ്കാലയുടെ കംപൈൽ ചെയ്യൽ, നിർവഹിക്കുന്ന മാതൃക എന്നിവ ജാവയുടെതിന് സമാനമാണ്, ഇത് അപ്പാച്ചെ ആൻറ് പോലുള്ള ജാവ ബിൽഡ് ടൂളുകളുമായി പൊരുത്തപ്പെടുന്നു. "ഹലോ വേൾഡ്" സ്കാല പ്രോഗ്രാമിൻറെ ഒരു ഹ്രസ്വ പതിപ്പ് ചുവടെ ചേർത്തിരിക്കുന്നു: println("Hello, World!")
സ്കാലയിൽ അന്യോന്യം സമ്പർക്കം പുലർത്തുന്ന ഷെൽ, സ്ക്രിപ്റ്റിങ് പിന്തുണ എന്നിവ ഉൾപ്പെടുന്നു. HelloWorld2.scala എന്ന പേരിൽ ഒരു ഫയൽ സൂക്ഷിച്ച്, ഇത് മുൻകൂർ കംപൈൽ ചെയ്യാത്ത ഒരു സ്ക്രിപ്റ്റ് ആയി റൺ ചെയ്യാൻ കഴിയും: $ scala HelloWorld2.scala ഓപ്ഷൻ -e ഉപയോഗിച്ച് കമാൻഡുകൾ നേരിട്ട് സ്കാല ഇൻറർപ്രെട്ടറിൽ പ്രവേശിക്കാം: $ scala -e 'println("Hello, World!")' REPL ൽ എക്സ്പ്രഷനുകളെ പരസ്പരം ചേർക്കാം: $ scala
Welcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.
scala> List(1, 2, 3).map(x => x * x)
res0: List[Int] = List(1, 4, 9)
scala> അടിസ്ഥാന ഉദാഹരണംതാഴെക്കാണുന്ന ഉദാഹരണം ജാവ, സ്കാല പ്രോഗ്രാമിംഗിലുള്ള നിർദ്ദേശങ്ങളുടെ പൊതുവായ ഘടന (syntax) എന്നിവ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ കാണിക്കുന്നു:
ഈ കോഡിലെ ചില പ്രോഗ്രാമിംഗിലുള്ള നിർദ്ദേശങ്ങളുടെ പൊതുവായ ഘടന വ്യത്യാസങ്ങൾ ഇവയാണ്:
ഡൊമെയിൻ സവിശേഷ ഭാഷ കൾക്കുള്ള പിന്തുണ അനുവദിക്കുന്നതിനായാണ് ഈ വാക്യഘടനാപരമായ മാറ്റങ്ങൾ രൂപകല്പന ചെയതത്. മറ്റ് ചില അടിസ്ഥാന വാക്യഘടനകൾ:
ക്ലാസുകളോട് കൂടിയ ഉദാഹരണംതാഴെക്കാണുന്ന ഉദാഹരണം ജാവ, സ്കലാ വിഭാഗങ്ങളിലെ നിർവചനത്തെക്കുറിച്ച് താരതമ്യപഠനം നടത്തുന്നു.
മുകളിലുള്ള കോഡ് ജാവ, സ്കാല ക്ലാസുകൾ കൈകാര്യം ചെയ്യുന്ന ആശയപരമായ വ്യത്യാസങ്ങൾ കാണിക്കുന്നു:
പ്രത്യേകതകൾ (ജാവയെക്കുറിച്ചുള്ള പരാമർശം)സ്കാലയ്ക്ക് സമാനമായ കമ്പൈലിങ് മാതൃക ജാവയും സി ഷാർപ് (C#) ഉം ആണ്, അതായത് പ്രത്യേക കമ്പൈലിങ്, ഡൈനാമിക് ക്ലാസ് ലോഡിങ് എന്നിവ. അതിനാൽ സ്കാല കോഡിന് ജാവ ലൈബ്രറികൾ വിളിക്കാൻ കഴിയും. സ്കാലയുടെ പ്രവർത്തന സവിശേഷതകൾ ജാവയുടെതിന് സമാനമാണ്. സ്കാല കമ്പൈലർ, ജാവ കമ്പൈലർ നിർമ്മിച്ചതിന് സമാനമായ ബൈറ്റ് കോഡ് നിർമ്മിക്കുന്നു. വാസ്തവത്തിൽ, സ്കാല കോഡ്, ജാവ കോഡിലേക്ക് വായിക്കാൻ സാധിക്കുന്ന വിധത്തിൽ വേർതിരിച്ചെടുക്കാൻ (decompile) കഴിയും. ചില കൺസ്ട്രക്ടർ പ്രവർത്തനങ്ങൾ ഒഴികെ. ജാവ അയഥാർത്ഥ യന്ത്രത്തിന് (വെർച്ച്വൽ മെഷീൻ (ജെവിഎം)), സ്കാല കോഡ്, ജാവാ കോഡ് എന്നിവ തിരിച്ചറിയാൻ പറ്റാത്തവയാണ്. ഒരു അധിക റൺടൈം ലൈബ്രറി വ്യത്യാസം മാത്രമാണ് ഉള്ളത്, ജാവയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ സ്കാല ലളിതമായ നിരവധി പ്രത്യേകതകൾ ചേർക്കുന്നു, അതിൻറെ എക്സ്പ്രഷൻ, തരം എന്നിവയിൽ അടിസ്ഥാനപരമായ വ്യത്യാസങ്ങൾ അടങ്ങിയിരിക്കുന്നു, ജാവയിലെ പല കോണുകളായും ഭാഷ സിദ്ധാന്തം വൃത്തിയാക്കുന്നു, അവ നീക്കം ചെയ്യുന്നു. സ്കാല കാഴ്ചപ്പാടിൽ, ഇത് പ്രാധാന്യമർഹിക്കുന്നതാണ്, കാരണം സ്കാലയിലെ നിരവധി കൂട്ടിചേർത്ത സവിശേഷതകൾ സി ഷാർപിലും (C#) ലഭ്യമാണ്. അവലംബം
|