ഹാക്ക് (പ്രോഗ്രാമിംഗ് ഭാഷ)

പ്രോഗ്രാമിങ് ഭാഷ

ഹാക്സ് എന്ന ലേഖനവുമായുള്ള ആശയക്കുഴപ്പം ഒഴിവാക്കുക.

ഹാക്ക്
രൂപകൽപ്പന ചെയ്തത്:Julien Verlaguet, Alok Menghrajani, Drew Paroski, and others[1]
വികസിപ്പിച്ചത്:Meta Platforms
ഡാറ്റാടൈപ്പ് ചിട്ട:Static, dynamic, weak, gradual
സ്വാധീനിക്കപ്പെട്ടത്:PHP, OCaml, Java, C#, Scala, Haskell
ഓപറേറ്റിങ്ങ് സിസ്റ്റം:Cross-platform
അനുവാദപത്രം:MIT License[2]
വെബ് വിലാസം:hacklang.org

പിഎച്ച്പിയുടെ ഒരു ഭാഷാഭേദമായി ഫേസ്‌ബുക്ക് സൃഷ്ടിച്ച ഹിപ്ഹോപ്പ് വെർച്വൽ മെഷീൻ(HipHop Virtual Machine (HHVM)) പ്രോഗ്രാമിംഗ് ഭാഷയാണ് ഹാക്ക്. എംഐടി ലൈസൻസിന് കീഴിൽ ലൈസൻസുള്ള, ഓപ്പൺ സോഴ്‌സ് ലാങ്വേജ് ഇമ്പ്ലിമെന്റേഷനാണിത്[2][3][4]

ഡൈനാമിക് ടൈപ്പിംഗും സ്റ്റാറ്റിക് ടൈപ്പിംഗും ഉപയോഗിക്കാൻ പ്രോഗ്രാമർമാരെ ഹാക്ക് അനുവദിക്കുന്നു. ഇത്തരത്തിലുള്ള ടൈപ്പ് സിസ്റ്റത്തെ ഗ്രാജുവൽ ടൈപ്പിംഗ് എന്ന് വിളിക്കുന്നു, ഇത് ആക്ഷൻസ്ക്രിപ്റ്റ് പോലുള്ള മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകളിലും നടപ്പിലാക്കുന്നു.[5]ഫംഗ്‌ഷൻ ആർഗ്യുമെന്റുകൾ, ഫംഗ്‌ഷൻ റിട്ടേൺ മൂല്യങ്ങൾ, ക്ലാസ് പ്രോപ്പർട്ടികൾ എന്നിവയ്‌ക്കായി ടൈപ്പുകൾ വ്യക്തമാക്കാൻ ഹാക്കിന്റെ ടൈപ്പ് സിസ്റ്റം അനുവദിക്കുന്നു; എന്നിരുന്നാലും, ലോക്കൽ വേരിയബിളുകളുടെ ടൈപ്പുകൾ എല്ലായ്പ്പോഴും അനുമാനിക്കപ്പെടുന്നു(ടൈപ്പ് ഇന്റിജറാണോ ഫ്ലോട്ടാണോ എന്നത്), അതുകൊണ്ടുതന്നെ അവ പ്രത്യേകം കാണിക്കാൻ സാധ്യമല്ല(ഉദാ: സി ഭാഷയിൽ int x = 10 ഇതിന്റെ ടൈപ്പ് ഇന്റിജർ(int) എന്ന് കാണിച്ചിരിക്കുന്നു, എന്നാൽ ഹാക്കിൽ $x = 10 ഇതിന്റെ ടൈപ്പ് പ്രത്യേകം കാണിച്ചിട്ടില്ല പകരം അത് ഇന്റിജർ(പൂർണ്ണസംഖ്യ) ആണെന്ന് എന്ന് ഊഹിക്കുന്നു)[3][6]

ചരിത്രം

തിരുത്തുക

2014 മാർച്ച് 20-നാണ് ഹാക്ക് അവതരിപ്പിച്ചത്.[7] പുതിയ പ്രോഗ്രാമിംഗ് ഭാഷയുടെ പ്രഖ്യാപനത്തിന് മുമ്പ്, ഫേസ്ബുക്ക് ഇതിനകം തന്നെ ഈ കോഡ് നടപ്പിലാക്കുകയും അതിന്റെ വെബ്‌സൈറ്റിന്റെ വലിയൊരു ഭാഗത്ത് പരീക്ഷിക്കുകയും ചെയ്തിരുന്നു.

പ്രത്യേകതകൾ

തിരുത്തുക

വെബ് ഡെവലപ്‌മെന്റിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുകയും എച്ച്ടിഎംഎല്ലിൽ ഉൾച്ചേർക്കാനും കഴിയുന്ന വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ് സ്‌ക്രിപ്റ്റിംഗ് ഭാഷയായ പിഎച്ച്പിയുമായി തടസ്സങ്ങളില്ലാതെ പ്രവർത്തിക്കാനാണ് ഹാക്ക് രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നത്. പിഎച്ച്പി സ്ക്രിപ്റ്റുകളിൽ ഉപയോഗിക്കുന്ന ഭൂരിഭാഗം കാര്യങ്ങളും ഹാക്കിലും ഉപയോഗിക്കാൻ സാധിക്കും; എന്നിരുന്നാലും, അധികം ഉപയോഗിക്കാത്ത പിഎച്ച്പി സവിശേഷതകളും ഭാഷാ നിർമ്മാണങ്ങളും ഹാക്കിൽ ഉപയോഗിക്കുന്നില്ല.[8]

പുതിയ ടൈപ്പ് ഹിന്റ്സ് (ഉദാഹരണത്തിന്, പൂർണ്ണസംഖ്യ അല്ലെങ്കിൽ സ്ട്രിംഗ് പോലുള്ള സ്കെയിലർ ടൈപ്പുകൾക്ക്), അതുപോലെ ടൈപ്പ് ഹിന്റസ്(type hints) കൂടുതൽ സ്ഥലങ്ങളിൽ ഉപയോഗിക്കുന്നതിലൂടെയും, സ്റ്റാറ്റിക് ടൈപ്പിംഗ് അവതരിപ്പിക്കുന്നതിലൂടെയും പിഎച്ച്പി 5-ൽ ലഭ്യമായ ടൈപ്പ് ഹിന്റിംഗ് ഹാക്ക് ഉപയോഗപ്പടുത്തുന്നു (ഉദാഹരണത്തിന്, ക്ലാസ് പ്രോപ്പർട്ടികൾ അല്ലെങ്കിൽ ഫംഗ്ഷൻ റിട്ടേൺ വാല്യൂസ്). എന്നിരുന്നാലും, ലോക്കൽ വേരിയബിളുകളുടെ ടൈപ്പ്സ് വ്യക്തമാക്കാൻ കഴിയില്ല.[6]ഹാക്ക് ഒരു ഗ്രാജുവൽ ടൈപ്പിംഗ് സംവിധാനം ഉപയോഗിക്കുന്നതിനാൽ, ഡിഫോൾട്ട് മോഡിൽ, അനുമാനിക്കാൻ കഴിയാത്ത സ്ഥലങ്ങളിൽ പോലും ടൈപ്പ് അനോട്ടേഷൻസ് നിർബന്ധമല്ല; കോഡ് എഴുതുന്ന ആൾ എഴുതിയിരിക്കുന്നത് ശരിയാണെന്ന് ടൈപ്പ് സിസ്റ്റം അനുമാനിക്കുകയും കോഡ് അത് അനുവദിക്കുകയും ചെയ്യും.[9]എന്നിരുന്നാലും, അത്തരം വ്യാഖ്യാനങ്ങൾ ആവശ്യമുള്ള ഒരു "സ്ട്രിറ്റ്(strict)" മോഡ് ലഭ്യമാണ്, അങ്ങനെ പൂർണ്ണമായതും മികച്ചതുമായ കോഡ് നടപ്പിലാക്കുന്നു.[10]

സിന്റാക്സ് ആൻഡ് സെമാന്റിക്സ്

തിരുത്തുക

ഒരു ഹാക്ക് സ്ക്രിപ്റ്റിന്റെ അടിസ്ഥാന ഫയൽ ഘടന കുറച്ച് മാറ്റങ്ങളുള്ള ഒരു പിഎച്ച്പി സ്ക്രിപ്റ്റിന് സമാനമാണ്. ഒരു ഹാക്ക് ഫയലിൽ <?php ഓപ്പണിംഗ് മാർക്ക്അപ്പ് ടാഗ് ഉൾപ്പെടുന്നില്ല കൂടാതെ ടോപ്-ലെവൽ ഡിക്ലറേഷൻസ് ഉപയോഗിക്കുന്നത് വിലക്കുന്നു.[11]ഒരു എൻട്രി പോയിന്റ് ഫംഗ്‌ഷനിൽ കോഡ് നിർബന്ധമാണ്. ടോപ്പ് ലെവൽ ഫയലിലാണെങ്കിൽ ഇവ സ്വയമേവ എക്‌സിക്യൂട്ട് ചെയ്യപ്പെടും, എന്നാൽ include,require, അല്ലെങ്കിൽ ഓട്ടോലോഡർ വഴി ഫയൽ ഉൾപ്പെടുത്തിയാൽ ഇതിന്റെ ആവശ്യമില്ല. ഹാക്കിലെ മറ്റ് ഫംഗ്‌ഷനുകൾ പോലെ, ഒരു പ്രോജക്‌റ്റിനുള്ളിൽ ഫംഗ്‌ഷൻ പേരുകളും യുണിക്കായിരിക്കായിരിക്കണം - അതായത് ഒന്നിലധികം എൻട്രി പോയിന്റുകളുള്ള പ്രോജക്‌റ്റുകൾക്ക് ഇവ രണ്ടും main: ആയി വിളിക്കാൻ കഴിയില്ല

<<__EntryPoint>>
function main(): void {
  echo 'Hello, World!';
}

പിഎച്ച്പിക്ക് സമാനമായി മുകളിലുള്ള സ്‌ക്രിപ്റ്റ് എക്‌സിക്യൂട്ട് ചെയ്യുകയും ഇനിപ്പറയുന്ന ഔട്ട്‌പുട്ട് ബ്രൗസറിലേക്ക് അയയ്‌ക്കുകയും ചെയ്യും:

Hello, World!

പിഎച്ച്പിയിലെ പോലെ, ഹാക്കും എച്ച്ടിഎംഎൽ കോഡ് മിക്സ് ചെയ്യുന്നില്ല; ഒന്നുകിൽ എക്സ്എച്ച്പി(XHP) അല്ലെങ്കിൽ മറ്റൊരു ടെംപ്ലേറ്റ് എഞ്ചിൻ ഉപയോഗിക്കേണ്ടതുണ്ട്.[8]

  1. Bryan O'Sullivan (2014-03-28). "Where Credit Belongs for Hack". Archived from the original on 2021-03-01. Retrieved 2019-02-06.
  2. 2.0 2.1 "facebook/hhvm: hhvm / hphp / hack / LICENSE". github.com. Meta Platforms. 2018-04-11. Archived from the original on 2019-01-07. Retrieved 2019-02-06.
  3. 3.0 3.1 Josh Lockhart (2014-04-03). "Facebook's Hack, HHVM, and the future of PHP". O'Reilly Media. Archived from the original on 2019-01-07. Retrieved 2019-02-06.
  4. Cade Metz (2014-03-20). "Facebook Introduces 'Hack,' the Programming Language of the Future". Wired. Archived from the original on 2014-03-28. Retrieved 2019-02-06.
  5. Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (January 2012). "The Ins and Outs of Gradual Type Inference" (PDF). Association for Computing Machinery (ACM). Archived (PDF) from the original on 2017-08-12. Retrieved 2019-02-06.
  6. 6.0 6.1 "Hack Manual: Hack and HHVM – Type Annotations". docs.hhvm.com. Archived from the original on 2018-08-02. Retrieved 2019-02-06.
  7. Verlaguet, Julien; Menghrajani, GANDHI (2014-03-20). "Hack: a new programming language for HHVM". Facebook. Archived from the original on 2019-02-09. Retrieved 2019-02-06.
  8. 8.0 8.1 "Inconsistencies: Introduction". docs.hhvm.com. Archived from the original on 2019-04-04. Retrieved 2019-04-04.
  9. "Hack Manual: Partial Mode". docs.hhvm.com. Archived from the original on 2018-11-19. Retrieved 2019-02-06.
  10. "Hack Manual: Strict Mode". docs.hhvm.com. Archived from the original on 2018-11-19. Retrieved 2019-02-06.
  11. Emmott, Fred (2019-02-11). "HHVM 4.0.0". hhvm.com. Archived from the original on 2021-05-14. Retrieved 2019-05-02.