ജൂലിയ (പ്രോഗ്രാമിങ് ഭാഷ)

കാര്യക്ഷമമായ സംഖ്യാവിശകലനത്തിനും കമ്പ്യൂട്ടേഷണൽ സയൻസിന്റെ ആവശ്യങ്ങൾ നിറവേറ്റാനുമായി രൂപകൽപ്പന ചെയ്യപ്പെട്ട ഒരു ഉന്നതതല പൊതു-ഉപയോഗ ചലനാത്മക പ്രോഗ്രാമിങ് ഭാഷയാണ് **ജൂലിയ**. വേഗത്തിൽ വേറിട്ടുനിൽക്കുന്ന പ്രത്യേക കമ്പൈലറിന്റെ ആവശ്യകതയല്ലാതെ, ക്ലൈന്റ്, സെർവർ വെബ് ഉപയോഗം, ലോ-ലെവൽ സിസ്റ്റംസ് പ്രോഗ്രാമിങ് അല്ലെങ്കിൽ സ്പെസിഫിക്കേഷൻ ലാംഗ്വേജ് ആണിത്.

പൂർണ്ണമായും ഡൈനാമിക് പ്രോഗ്രാമിങ് ഭാഷയിലും വിവിധ കോർ പ്രോഗ്രാമിങ് പാരാഡിഗൈമുകളിലുമാണ് പാരാമീറ്റീവ് പോളിമോർഫിസവും തരങ്ങളും ഉള്ള ടൈപ്പ് സിസ്റ്റം ഉൾപ്പെടുന്നത് ജൂലിയയുടെ രൂപകൽപ്പനയിലെ വ്യത്യസ്തമായ വശങ്ങളാണ്. സമാന്തരവും ഡിസ്ട്രിബ്യൂട്ടഡ് കമ്പ്യൂട്ടിംഗും ഗ്ലൂ കോഡുകളില്ലാത്ത സി, ഫോർട്രാൻ ലൈബ്രറികളുമായി നേരിട്ട് വിളിക്കുന്നു.

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

## ചരിത്രം
ജൂലിയയുടെ പ്രവർത്തനം ആരംഭിച്ചത് 2009 ൽ ആണ്. ജെഫ് ബെസ്സാൻസൺ, സ്റ്റെഫാൻ കൽപിൻസ്കി, വിറൽ ബി. ഷാ, അലൻ എഡെൽമാൻ, എന്നിവർ ചേർന്ന് ഉന്നത നിലവാരവും വേഗവുമുള്ള ഒരു സ്വതന്ത്ര ഭാഷ ഉണ്ടാക്കാൻ ശ്രമിച്ചു. 2012 ഫെബ്രുവരി 14 ന്, ഭാഷാ ദൗത്യത്തെ വിശദീകരിക്കുന്ന ഒരു ബ്ലോഗ് പോസ്റ്റുമായാണ് വെബ്ബ്സൈറ്റ് ആരംഭിച്ചത്. കൽപിൻസ്കി പറഞ്ഞു: "ജൂലിയ" എന്നപേര് തിരഞ്ഞെടുത്തതിന് നല്ല കാരണമൊന്നുമില്ല. അത് ഒരു ആകർഷകമായ പേര് പോലെ തോന്നി.  ഒരു സുഹൃത്തിന്റെ ശുപാർശയിൽ ആണ് താൻ ഈ പേര് തിരഞ്ഞെടുത്തത് എന്ന് ബെസ്സാൻസൺ പ്രസ്താവിച്ചു.

2012 ലോഞ്ചിനു ശേഷം ജൂലിയ സമൂഹം വളർന്നു. 2018 ആഗസ്ത് വരെ 2,000,000 പരം ഡൗൺലോഡുകൾ നടന്നു. ജൂലിയകോൺ(JuliaCon) ജൂലിയാ ഉപയോക്താക്കൾക്കും ഡെവലപ്പർമാർക്കുമുള്ള അക്കാദമിക് സമ്മേളനം വർഷം മുതൽ പ്രതിവർഷം സംഘടിപ്പിക്കാറുണ്ട്. 

പതിപ്പ് 0.3 ആഗസ്റ്റ് 2014 ൽ പുറത്തിറങ്ങി, പതിപ്പ് 0.4 ഒക്ടോബർ 2015-ൽ പുറത്തിറങ്ങി, 2016 ഒക്റ്റോബറിൽ പതിപ്പ് 0.5 ഇറങ്ങി. 0.5, അതിനു മുൻപുള്ള പതിപ്പുകൾ എന്നിവ ഇനി പരിപാലിക്കപ്പെടില്ല. ജൂലിയ 0.6 ജൂൺ 2017 ൽ പുറത്തിറങ്ങി, കൂടാതെ 2018 ആഗസ്റ്റ് 8 വരെ സ്ഥിര പതിപ്പായിരുന്നു അത്.

ജൂലിയ 0.7 (പരീക്ഷണ പാക്കേജുകൾക്കുള്ള ഒരു പ്രയോഗം, എങ്ങനെ 1.0 എന്നതിനായി അപ്ഗ്രേഡ് ചെയ്യാം എന്ന അറിവ്) 2018 ആഗസ്റ്റ് 8 ന് ബന്ധപ്പെട്ട 1.0 പതിപ്പ് പുറത്തിറങ്ങി. ജൂലിയ 0.7 പരീക്ഷണം ഒരു "വലിയ ഏറ്റെടുക്കൽ" ആയിരുന്നു(ഉദാഹരണത്തിന് "പൂർണ്ണമായും പുതിയ ഒപ്റ്റിമൈസർ"), ഒപ്പം സിന്റാക്സിൽ (സിന്റാക്സ് ഇപ്പോൾ സ്ഥിരതയുള്ളതും, അതേപോലെ 1.x, 0.7) സെമാന്റിക്സിലും ചില മാറ്റങ്ങൾ വരുത്തി; ആവർത്തന ഇന്റർഫേസ് ലളിതവൽക്കരിച്ചു.

ബഗ്ഫിക്സ് റിലീസുകൾ ഏതാണ്ട് മാസംതോറും പ്രതീക്ഷിക്കപ്പെടുന്നു. ജൂലിയ 1.1.x- ഉം 1.0.x- ഉം (1.0.x- ന് നിലവിൽ ദീർഘകാല പിന്തുണ ഉണ്ട്, കുറഞ്ഞത് ഒരു വർഷത്തേങ്കിലും) ജൂലിയാ 1.0.1, 1.0.2, 1.0.3 എന്നിവ ഈ ഷെഡ്യൂൾ പിന്തുടർന്നു (0.7-റിലീസിന് പൈപ്പ് ലൈനിൽ ഇത്തരത്തിലുള്ള ബഗ്ഫിക്സ് റിലീസുകൾ ഇല്ല).

ജൂലിയായുടെ പതിപ്പ് 1.0 (Julia 1.0.0-rc1) 2018 ആഗസ്റ്റ് 7 നാണ് പുറത്തിറങ്ങിയത്. ഒരു ദിവസം കഴിഞ്ഞ് അവസാന പതിപ്പും പുറത്തിറങ്ങി. ജൂലിയക്കായി പ്രവർത്തിക്കുന്ന സംഘം പറഞ്ഞു ജൂലിയ 0.7 ൽ മുന്നറിയിപ്പ് ഇല്ലാതെ പ്രവർത്തിയ്ക്കുന്ന കോഡ് ജൂലിയ 1.0 ലും സമാനമായിരിക്കും.

2019 ജനുവരി 21 ന് ജൂലിയ 1.1 പുറത്തിറങ്ങി. ഒരു പുതിയ "ഒഴിവാക്കൽ സ്റ്റാക്ക്" ഭാഷാ സവിശേഷത ഇതിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. വാഗ്ദാനപ്രകാരം (സെമാന്റിക് വേർഷനിൽ ജൂലിയയും, പല ബാഹ്യ പാക്കേജുകളും ഇങ്ങനെ പിന്തുടരുന്നു) ജൂലിയ 1.0 ൽ നിന്നുള്ള എല്ലാ പഴയ വാക്യഘടനകളും ഇപ്പോഴും പ്രവർത്തിക്കേണ്ടതാണ്, ജൂലിയ 1.1 ൽ ജൂലിയ 1.0 പ്രവർത്തിക്കില്ലായിരിക്കാം. സാധാരണ ലൈബ്രറിയിൽ നോൺ-ബ്രേക്കിങ്ങ് അഡീഷൻസ് ഉണ്ട്, ജൂലിയയുടെ ന്യൂസ്(NEWS) ഫയലിൽ വിവരിച്ച ചില ചെറിയ മാറ്റങ്ങൾ ഉണ്ട്. ജൂലിയ 1.2 2019 മാർച്ച് 15 ന് റീലിസ് പ്രതീക്ഷിക്കപ്പെടുന്നു.

### ശ്രദ്ധേയമായ ഉപയോഗങ്ങൾ
ജൂലിയാ നിക്ഷേപ മാനേജർ ബ്ലാക്ക്റോക്ക് (BlackRock) മുതലായവയെ പോലെ ചില ഉന്നത വ്യക്തിഗത ക്ലയന്റുകളെ ആകർഷിച്ചു. ഇത് സമയ-പരമ്പര വിശകലനത്തിനായി ബ്രിട്ടീഷ് ഇൻഷുറർ അവിവയ്ക്ക് ഉപയോഗപ്പെടുത്തി, ഇത് റിസ്ക് കണക്കുകൂട്ടലുകൾക്ക് ഉപയോഗിക്കുന്നു. 2015 ൽ ഫെഡറൽ റിസർവ് ബാങ്ക് ഓഫ് ന്യൂയോർക്ക് അമേരിക്കൻ സമ്പദ് വ്യവസ്ഥയുടെ മോഡലുകൾ ഉണ്ടാക്കാൻ ജൂലിയ ഉപയോഗിച്ചു, മുമ്പത്തെ മാറ്റ് ലാബ്(MATLAB) നടപ്പാക്കലിനെ അപേക്ഷിച്ച് "10 മടങ്ങ് വേഗത്തിൽ" ഭാഷ അതിന്റെ മാതൃകാ കണക്കാക്കലായി ചൂണ്ടിക്കാണിക്കുന്നു. ജൂലിയയുടെ സഹ സ്ഥാപകർ ചേർന്ന് 2015-ൽ ജൂലിയാ കംപ്യൂട്ടിംഗ് ക്ലയന്റുകൾക്ക് പണം നൽകിയുള്ള പിന്തുണ, പരിശീലനം, കൺസൾട്ടൻസി സേവനങ്ങൾ എന്നിവ ലഭ്യമാക്കി. 2017 ജൂലിയ കോൺ  സമ്മേളനത്തിൽ "1.54 മില്ല്യൺ ത്രെഡുകൾ ഉപയോഗിച്ചുള്ള 1.54 പെറ്റഫോളോപ്സിന്റെ പീക്ക് പ്രകടനം" നടത്താൻ ജൂലിയ ഉപയോഗിച്ച സെലെസ്റ്റേ പദ്ധതിയെപ്പറ്റിജെഫ്രി റെജിയറും, കെനോ ഫിഷറും, മറ്റുള്ളവരും ചേർന്ന് പ്രഖ്യാപിച്ചു കോറി (ക്രേ എക്സ് സി 40) സൂപ്പർകമ്പ്യൂട്ടറിന്റെ 9300 നൈറ്റ്സ് ലാൻഡിംഗ് (കെഎൻഎൽ) നോഡുകളിൽ (ആ സമയത്ത് ലോകത്തിലെ അഞ്ചാമത്തെ വേഗതയേറിയ സൂപ്പർകമ്പ്യൂട്ടർ; 2017 നവംബറിൽ ആറാം സ്ഥാനത്തായിരുന്നു ഇത്)ആണ് ജൂലിയ ഉപയോഗപ്പെടുത്തിയത്. പെറ്റാപ്ലോപ്സ് കണക്കുകൂട്ടലുകൾ നേടിയത് ഉയർന്ന നിലവാരമുള്ള ഭാഷകളായ സി, സി++, ഫോർട്രാൻ എന്നിവയുമായി ജൂലിയ ചേർന്നു പ്രവർത്തിച്ചതുമൂലമാണ്.

ന്യൂമറിക്കൽ സോഫ്റ്റ്വേയറിനായുള്ള ജെയിംസ് എച്ച്. വിൽക്കിൻസൺ സമ്മാനം (ഓരോ നാലു വർഷത്തിലും)2019-ൽ ജൂലിയ സഹ-സ്രഷ്ടാക്കളിൽ മൂന്ന് പേർക്ക് ലഭിച്ചു."ജൂലിയയെ സൃഷ്ടിച്ചത്, കംപ്യൂട്ടേഷണൽ സയൻസ് പ്രശ്നങ്ങളുടെ വിശകലനവും പരിഹാരവും നൽകുന്നതിന് സഹായിക്കുന്ന ഉന്നത കഴിവുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള നൂതനമായ പരിസ്ഥിതിക്ക് വേണ്ടിയാണ്".

## ഭാഷാ സവിശേഷതകൾ
ഔദ്യോഗിക വെബ് സൈറ്റ് പറയുന്നതുപ്രകാരം, ഭാഷയുടെ പ്രധാന സവിശേഷതകൾ ഇവയാണ്:
* മൾട്ടിപ്പിൾ ഡിസ്പാച്ച്: ആർഗുമെൻറ് തരങ്ങളുടെ നിരവധി കൂട്ടിച്ചേർക്കലുകളിൽ ഫംഗ്ഷൻ പെരുമാറ്റം നിർവചിക്കാനുള്ള കഴിവ് നൽകുന്നത്
* ഡൈനാമിക് ടൈപ്പ് സിസ്റ്റം: ഡോക്യുമെന്റേഷൻ, ഒപ്റ്റിമൈസേഷൻ, ഡിസ്പാച്ച് എന്നിവയ്ക്കുള്ള തരങ്ങൾ
* മികച്ച പ്രകടനം, സി പോലുള്ള, സ്റ്റാറ്റിസ്റ്റിക്കൽ ടൈപ്പ് ചെയ്ത ഭാഷകളെ സമീപിക്കുന്നു
* ഒരു അന്തർനിർമ്മിത പാക്കേജ് മാനേജർ
* ലിസ്പ് പോലുള്ള മാക്രോകൾ മറ്റ് മെറ്റാപ്രോഗ്രാമിംഗ് സൗകര്യങ്ങൾ
* പൈത്തൺ ഫംഗ്ഷനുകളെ വിളിക്കുക: പൈകോൾ(PyCall) പാക്കേജ് ഉപയോഗിക്കുന്നു
* സി ഫങ്ഷനുകൾ നേരിട്ട് കോൾചെയ്യണം: റാപ്പറുകൾ അല്ലെങ്കിൽ പ്രത്യേക എപിഐ(API)കൾ ഇല്ല
* മറ്റ് പ്രക്രിയകൾ നിയന്ത്രിക്കുന്നതിന് ശക്തമായ ഷെൽ-പോലുള്ള കഴിവുകൾ
* സമാന്തരവും ഡിസ്ട്രിബൂട്ടഡ് കമ്പ്യൂട്ടിംഗും രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു
* കൊറൈറ്റൈൻസ്: ലൈറ്റ് വെയിറ്റ് ഗ്രീൻ ത്രെഡിംഗ്
* ഉപയോക്താവിന് നിർവചിക്കപ്പെട്ട രീതികൾ ബിൽറ്റ്-ഇൻകളായി വേഗതയേറിയതും ഒതുക്കമുള്ളതുമാക്കി തീർത്തു
* വ്യത്യസ്ത ആർഗുമെൻറ് തരങ്ങൾക്ക് കാര്യക്ഷമമായ സ്പെഷ്യൽ കോഡിന്റെ ഓട്ടോമാറ്റിക് ജനറേഷൻ
* സംഖ്യയും മറ്റു തരങ്ങളും വേണ്ടിയുള്ള ആകർഷണീമായ എക്സ്റ്റെൻസിബിൾ പരിവർത്തനങ്ങളും പ്രൊമോഷനുകളും
* യൂണിക്കോഡിനായുള്ള കാര്യക്ഷമമായ പിന്തുണ എന്നാൽ യു.ടി.എഫ്-8(UTF-8) ൽ മാത്രം പരിമിതപ്പെടുത്തിയിട്ടില്ല

പൊതുവായ വസ്തുക്കൾക്കുള്ള ഓബ്ജക്റ്റ് പ്രോഗ്രാമിങ് (OOP) ഭാഷകളിലുള്ള പോളിമോർഫിക് മെക്കാനിസം - പാരമ്പര്യ ശൃംഖല - സിംഗിൾ ഡിസ്പാച്ചിന്റെ ഒരു പൊതുവൽക്കരണമാണ് മൾട്ടി മെമ്മറി (ലിപ്സിലെ മൾട്ടി മെഥേഡുകൾ). ജൂലിയയിൽ, എല്ലാ കോൺക്രീറ്റ് തരങ്ങളും അമൂർത്ത തരത്തിലുള്ള ഉപതരങ്ങളാണ്, ഏതെങ്കിലും തരത്തിലുള്ള നേരിട്ടോ അല്ലെങ്കിൽ പരോക്ഷമായോ ഏതെങ്കിലും തരത്തിലുള്ള ഉപതരങ്ങൾ(subtypes), ശ്രേണിയുടെ ഉപരിതലത്തിൽ ആണ്. കോൺക്രീറ്റ് തരങ്ങൾ ഉപതരത്തിൽ പെടുത്താൻ കഴിയില്ല, എന്നാൽ കോമ്പോസിഷൻ ഉപയോഗിക്കുന്നത് ഇൻഹെറിറ്റൻസിന് മേലെയായിരിക്കും, അത് പരമ്പരാഗത ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് ഭാഷകളാണ് ഉപയോഗിക്കുന്നത് (ഇൻഹെറിറ്റൻസ് വേഴ്സസ് സബ്ടൈപ്പ് എന്നത് കാണുക). 

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

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

ഉപയോക്താവിനു് ലഭ്യമാക്കിയ സോഴ്സ് കോഡ് പ്രവർത്തിപ്പിയ്ക്കുന്നതിനാൽ, ജൂലിയാ റൺടൈമിനു മുമ്പേ ഇൻസ്റ്റോൾ ചെയ്യേണ്ടതുണ്ടു്. മറ്റൊരു മാർഗ്ഗം സാധ്യമാണു്, BuildExecutable.jl ഉപയോഗിച്ച് നിർമ്മിച്ച ജൂലിയ സ്രോതസ്സ് കോഡ് ആവശ്യമില്ലാതെതന്നെ സ്റ്റാൻഡ്എലോണായി എക്സിക്യൂട്ടബിൾ ചെയ്യാവുന്നതാണ്.

## അവലംബം