ഹാക്സ്

ഹാക്ക് (പ്രോഗ്രാമിംഗ് ഭാഷ) എന്ന ലേഖനവുമായുള്ള ആശയക്കുഴപ്പം ഒഴിവാക്കുക.

ഹാക്സ് എന്നത് ഒരു ഓപ്പൺ സോഴ്‌സ് ആണ്ഹൈ-ലെവൽ ക്രോസ്-പ്ലാറ്റ്‌ഫോം പ്രോഗ്രാമിംഗ് ഭാഷയും കമ്പൈലറും, ഇത് ഒരു കോഡ്-ബേസിൽ നിന്നുകൊണ്ട് തന്നെ വ്യത്യസ്തമായ കമ്പ്യൂട്ടിംഗ് പ്ലാറ്റ്‌ഫോമുകൾക്കായി ആപ്ലിക്കേഷനുകളും സോഴ്‌സ് കോഡും നിർമ്മിക്കാൻ കഴിയും. എംഐടി ലൈസൻസിന് കീഴിൽ പുറത്തിറക്കിയ സ്വതന്ത്രവും ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്‌വെയറുമാണ് ഇത്. ഓകാമലിൽ എഴുതിയ കംപൈലർ, ഗ്നൂ ജനറൽ പബ്ലിക് ലൈസൻസ് (GPL) പതിപ്പ് 2-ന് കീഴിലാണ് പുറത്തിറക്കിയിരിക്കുന്നത്.

ന്യുമെറിക് ഡാറ്റാ ടൈപ്പ്സ്, സ്ട്രിംഗുകൾ, അറേകൾ, മാപ്പ്സ്, ബൈനറി, റിഫ്ലക്ഷൻ, മാത്സ്(Maths), എച്ച്ടിടിപി(HTTP), ഫയൽ സിസ്റ്റം, പൊതുവായ ഫയൽ ഫോർമാറ്റുകൾ എന്നിങ്ങനെ എല്ലാ പ്ലാറ്റ്‌ഫോമുകളിലും പിന്തുണയ്‌ക്കുന്ന ഒരു കൂട്ടം സവിശേഷതകളും ഒരു സാധാരണ ലൈബ്രറിയുംഹാക്സിൽ ഉൾപ്പെടുന്നു. ഓരോ കമ്പൈലർ ടാർഗെറ്റിനുമുള്ള പ്ലാറ്റ്‌ഫോം-നിർദ്ദിഷ്ട എപിഐകളും ഹാക്സിൽ ഉൾപ്പെടുന്നു.ഖാ(Kha), ഓപ്പൺഎഫ്എൽ(OpenFL), Heaps.io എന്നിവയെല്ലാം ഒരു കോഡ്‌ബേസിൽ നിന്ന് മൾട്ടി-പ്ലാറ്റ്‌ഫോം ഉള്ളടക്കം സൃഷ്‌ടിക്കാൻ സഹായിക്കുന്ന ജനപ്രിയ ഹാക്‌സ് ചട്ടക്കൂടുകളാണ്. 

ഒരു ഭാഷയിൽ ക്ലയന്റ്-സൈഡ്, സെർവർ-സൈഡ് പ്രോഗ്രാമിംഗിനെ പിന്തുണയ്ക്കുകയും അവ തമ്മിലുള്ള കമ്മ്യൂണിക്കേഷൻ ലോജിക് ലളിതമാക്കുക  എന്ന ആശയത്തോടെയാണ് ഹാക്‌സ് ഉത്ഭവിച്ചത്. ഹാക്സ് ഭാഷയിൽ എഴുതിയിരിക്കുന്ന കോഡ് ജാവാസ്ക്രിപ്റ്റ്, സി++, ജാവ, ജെവിഎം(JVM), പിഎച്ച്പി, സി ഷാർപ്, പൈത്തൺ, ലൂആ, നോഡ്.ജെഎസ് എന്നിവയിലേക്ക് കംപൈൽ ചെയ്യാൻ സാധിക്കും.ഹാക്‌സിന് നേരിട്ട് എസ്ഡബ്ല്യൂഎഫ്(SWF), ഹാഷ് ലിങ്ക്(HashLink), നെക്കോവിഎം(NekoVM) എന്നിവയിൽ ബൈറ്റ്‌കോഡ് ഉപയോഗിച്ച് കംപൈൽ ചെയ്യാനും ഇന്റർപ്രെട്ട് മോഡിൽ പ്രവർത്തിക്കാനും കഴിയും.

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

നിരവധി ജനപ്രിയ ഐഡിഇകൾക്കും സോഴ്‌സ് കോഡ് എഡിറ്റർമാർക്കും ഹാക്സ് വികസനത്തിനുള്ള പിന്തുണ ലഭ്യമാണ്.വിഎസ് കോഡ്, ഇന്റലിജെഐഡിയ, ഹാക്സ്ഡെവലപ്(HaxeDevelop) എന്നിവയ്ക്ക് ഹാക്സ് വികസനത്തിന് ഏറ്റവും കൂടുതൽ പിന്തുണയുണ്ടെങ്കിലും പ്രത്യേക വികസന പരിസ്ഥിതിയോ ടൂൾ സെറ്റുകളോ ഹാക്സ് ഫൗണ്ടേഷൻ ഔദ്യോഗികമായി ശുപാർശ ചെയ്യുന്നില്ല. സിന്റാക്സ് ഹൈലൈറ്റ് ചെയ്യൽ, കോഡ് പൂർത്തീകരിക്കുക, റീഫാക്റ്ററിംഗ്, ഡീബഗ്ഗിംഗ് മുതലായവയുടെ പ്രധാന പ്രവർത്തനങ്ങൾ വിവിധ ഡിഗ്രികളിൽ ലഭ്യമാണ്.
## ചരിത്രം
2005 ഒക്‌ടോബറിലാണ് ഹാക്‌സിന്റെ ഡെവലപ്മെന്റ് ആരംഭിച്ചത്. ആദ്യത്തെ ആൽഫ പതിപ്പ് 2005 നവംബർ 14-ന് പുറത്തിറങ്ങി.അഡോബി ഫ്ലാഷ്, ജാവാസ്ക്രിപ്റ്റ്, നെക്കോവിഎം(NekoVM) തുടങ്ങിയ പ്രോഗ്രാമുകൾക്കുള്ള പിന്തുണയോടെ 2006 ഏപ്രിലിൽ ഹാക്സ് 1.0 പുറത്തിറങ്ങി. 2008-ൽ പിഎച്ച്പിയ്‌ക്കുള്ള പിന്തുണ ചേർത്തു, 2009-ൽ സി++നുള്ള പിന്തുണ കൂടി ചേർത്തു. സി#, ജാവ പോലുള്ള കൂടുതൽ പ്ലാറ്റ്‌ഫോമുകൾ 2012-ൽ ഒരു കംപൈലർ ഓവർഹോൾ ഉൾപ്പെടുത്തി.

നിക്കോളാസ് കന്നാസെയും മറ്റ് കോൺട്രിബ്യൂട്ടേഴ്സും ചേർന്നാണ് ഹാക്സ് വികസിപ്പിച്ചെടുത്തത്, ലളിതമായതും, ചെറിയ അക്ഷരങ്ങളോടൊപ്പം "അകത്ത് ഒരു X ഉള്ളതും" ആയതുകൊണ്ടാണ് യഥാർത്ഥത്തിൽ ഹാക്സ്(haXe)എന്ന് പേരിട്ടത്, ഏതൊരു പുതിയ സാങ്കേതിക വിദ്യയും വിജയകരമാക്കാൻ ഇത് പൊലെ ഒന്ന് ആവശ്യമാണെന്ന് ഇതിന്റെ രചയിതാവ് തമാശയായി പറഞ്ഞു.

ഓപ്പൺ സോഴ്സ് ആക്ഷൻസ്ക്രിപ്റ്റ് 2 കംപൈലർ എംടിഎഎസ്സി(MTASC) യുടെ പിൻഗാമിയാണ് ഹാക്സ്,നിക്കോളാസ് കന്നാസെ നിർമ്മിച്ചതും ഗ്നു ജനറൽ പബ്ലിക് ലൈസൻസ് പതിപ്പ് 2 അല്ലെങ്കിൽ അതിനുശേഷമുള്ള പതിപ്പിന് കീഴിലാണ്.
## കമ്പൈലർ
ഹാക്സ് ഭാഷയ്ക്ക് ബൈറ്റ്കോഡിലേക്ക് കംപൈൽ ചെയ്യാൻ കഴിയും, അത് ലക്ഷ്യമിടുന്ന വെർച്വൽ മെഷീനുകൾക്ക് നേരിട്ട് നടപ്പിലാക്കാൻ കഴിയും. ഇതിന് സി++, ജാവാസ്ക്രിപ്റ്റ്, പിഎച്ച്പി, സി#, ജാവാ, പൈത്തൺ, ലുഅ എന്നിവയിൽ സോഴ്സ് കോഡ് കംപൈൽ ചെയ്യാൻ കഴിയും. ഹാക്‌സെയ്‌ക്ക് ഇവൽ എന്നറിയപ്പെടുന്ന ഇന്റർപ്രെട്ടറുണ്ട്.മാക്രോകൾ പ്രവർത്തിപ്പിക്കുന്നതിനും ഇതേ ഇന്റർപ്രെട്ടർ കംപൈൽ-ടൈം ഉപയോഗിക്കുന്നു, ഇത് എഎസ്ടി(AST)യെ പരിഷ്‌ക്കരിക്കാൻ അനുവദിക്കുന്നു.

ഒന്നിലധികം സോഴ്‌സ് കോഡ് ഭാഷകളിലേക്ക് കംപൈൽ ചെയ്യുന്നതിനുള്ള ഈ തന്ത്രം ഒരിക്കൽ എഴുതുക, എവിടെയും പ്രവർത്തിപ്പിക്കുക മാതൃകയിൽ നിന്ന് പ്രചോദനം ഉൾക്കൊണ്ടതാണ്. ഈ ജോലിക്ക് വേണ്ടി ഏറ്റവും മികച്ച പ്ലാറ്റ്ഫോം തിരഞ്ഞെടുക്കാനും ഇത് പ്രോഗ്രാമറെ അനുവദിക്കുന്നു. സാധാരണ ഹാക്സ് പ്രോഗ്രാമുകൾ എല്ലാ പ്ലാറ്റ്‌ഫോമുകളിലും ഒരേപോലെ പ്രവർത്തിക്കുന്നു, എന്നാൽ ഡെവലപ്പർമാർക്ക് പ്ലാറ്റ്‌ഫോം-സ്പെസിഫിക് കോഡ് വ്യക്തമാക്കാനും മറ്റ് പ്ലാറ്റ്‌ഫോമുകളിൽ കംപൈൽ ചെയ്യുന്നത് തടയാൻ വേണ്ടി കണ്ടീഷണൽ കംപൈലേഷൻ ഉപയോഗിക്കാനും കഴിയും.

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

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

## അവലംബം