diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index 9ebe6cb46..0d663b3df 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -14,10 +14,10 @@ Script കൽ എഴുതുന്നതും എക്സിക്യൂട ```smart header="എന്തു കൊണ്ടാണിത് JavaScript എന്നറിയപ്പെടുന്നത്?" Javascript ആദ്യമായി പുറത്തിറക്കിയപ്പോൾ, അതിനു വേറൊരു പേരുണ്ടായിരുന്നു: "LiveScript". പക്ഷെ അപ്പോൾ java ആ സമായത്ത് പോപുലറായിരുന്നു, അതു കൊണ്ടു ഒരു പിന്ഗാമിയെപ്പോലെ കണ്ടു അതിനു ജാവാസ്ക്രിപ്റ്റ് എന്ന പേര് കൊടുത്തു. -പക്ഷെ അത് ഒരുപാട് പുരോഗമിച്ചു,javascript ഒരു സ്വതന്ത്രമായ ലാംഗ്വേജ് ആയി മാറി. അതു സ്വന്തമായി ഒരു സ്ക്രിപ്റ്റ് ഉണ്ടാക്കി ,അതാണ് [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript),ഇപ്പോൾ അതിനു java യുമായിട്ടു യാതൊരു ബന്ധവും ഇല്ല. +പക്ഷെ അത് ഒരുപാട് പുരോഗമിച്ചു, javascript ഒരു സ്വതന്ത്രമായ ലാംഗ്വേജ് ആയി മാറി. അതു സ്വന്തമായി ഒരു സ്ക്രിപ്റ്റ് ഉണ്ടാക്കി ,അതാണ് [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript),ഇപ്പോൾ അതിനു java യുമായിട്ടു യാതൊരു ബന്ധവും ഇല്ല. ``` -ഇന്ന്, javascript ബ്രൗസർകളിൽ മാത്രമല്ല സെർവർകളിൽ വരെ ഉപയോഗിക്കാൻ പറ്റും, ചുരുക്കിപ്പറഞ്ഞാൽ[the JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine) ഉള്ള ഏതൊരു ഡിവൈസിലും അതു ഉപയോഗിക്കാൻ പറ്റും. +ഇന്ന്, javascript ബ്രൗസർകളിൽ മാത്രമല്ല സെർവർകളിൽ വരെ ഉപയോഗിക്കാൻ പറ്റും, ചുരുക്കിപ്പറഞ്ഞാൽ[JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine) ഉള്ള ഏതൊരു ഡിവൈസിലും അതു ഉപയോഗിക്കാൻ പറ്റും. ബ്രൗസറുകൾക് സ്വന്തമായി ഒരു ജാവസ്ക്രിപ്റ് എൻജിൻ ഉണ്ടായിരിക്കും "JavaScript virtual machine". @@ -43,13 +43,13 @@ Engines നല്ല ബുദ്ധിമുട്ടുള്ള ഒരു വ ## ബ്രൗസറിൽ ജവസ്ക്രിപ്റ്റന് എന്തു ചെയ്യാൻ സാധിക്കും? ഇപ്പോഴത്തെ ജാവാസ്ക്രിപ്റ്റ് ഒരു "സുരക്ഷിത" പ്രോഗ്രാമിംഗ് ഭാഷയാണ്. ഇത് ഡിവൈസിന്റെ മെമ്മോറിയിലേക്കോ സിപിയുവിലേക്കോ ഒന്നും ആക്സസ് നൽകുന്നില്ല, കാരണം ഇത് ആദ്യകാലങ്ങളിൽ ഇതൊന്നും ഇല്ലാതിരുന്ന ബ്രൗസർകൾക്കായി ഉണ്ടാക്കിയതാണ്. -ജാവാസ്ക്രിപ്റ്റിന്റെ കഴിവുകൾ അത് പ്രവർത്തിക്കുന്ന ഡിവൈസിനെ വളരെയധികം ആശ്രയിച്ചിരിക്കുന്നു. ഉദാഹരണത്തിന്, [Node.js] (https://wikipedia.org/wiki/Node.js) ജാവാസ്ക്രിപ്റ്റിന് നിയന്ത്രണമില്ലാത്ത ഫയലുകൾ വായിക്കാനും എഴുതാനും നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾ നടത്താനും അനുവദിക്കുന്ന പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു. +ജാവാസ്ക്രിപ്റ്റിന്റെ കഴിവുകൾ അത് പ്രവർത്തിക്കുന്ന ഡിവൈസിനെ വളരെയധികം ആശ്രയിച്ചിരിക്കുന്നു. ഉദാഹരണത്തിന്, [Node.js](https://wikipedia.org/wiki/Node.js) ജാവാസ്ക്രിപ്റ്റിന് നിയന്ത്രണമില്ലാത്ത ഫയലുകൾ വായിക്കാനും എഴുതാനും നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾ നടത്താനും അനുവദിക്കുന്ന പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു. ബ്രൗസറിൽ വെബ്‌പേജ് മാനേജ് ചെയ്യാനും യൂസർമായി ഇടപഴക്കാനും സെർവേറിലോട്ടു കണക്ട് ചെയ്യാനുമെല്ലാം ഉപയോഗിക്കാം. അതായത് ബ്രൗസറിൽ ജവസ്ക്രിപ്റ്റന് താഴെ പറയുന്ന കാര്യങ്ങളെല്ലാം ചെയ്യാൻ കഴിയും: -വെബ് പേജിലേക്ക് പുതിയ HTML ചേർക്കുക, നിലവിലുള്ള ഉള്ളടക്കം മാറ്റുക,സ്റ്റൈൽ മാറ്റുക. - ഉപയോക്താക്കളുടെ പ്രവർത്തനങ്ങളോട് പ്രതികരിക്കുക, മൗസ് ക്ലിക്കുകൾ, പോയിന്റർ ചലനങ്ങൾ, കീ പ്രസ്സുകൾ എന്നിവ അറിയുക. -- ദൂരെയുള്ള സെർവറുകളിലേക്ക് നെറ്റ്വർക്കിലൂടെ അഭ്യർത്ഥനകൾ അയയ്ക്കുക, ഫയലുകൾ download ചെയ്ത് upload ചെയ്യുക ([AJAX] (https://en.wikipedia.org/wiki/Ajax_ (programming)), [COMET] (https: // en. wikipedia.org/wiki/Comet_(programming)) technologies). +- ദൂരെയുള്ള സെർവറുകളിലേക്ക് നെറ്റ്വർക്കിലൂടെ അഭ്യർത്ഥനകൾ അയയ്ക്കുക, ഫയലുകൾ download ചെയ്ത് upload ചെയ്യുക ([AJAX](https://en.wikipedia.org/wiki/Ajax_ (programming)), [COMET](https://en.wikipedia.org/wiki/Comet_(programming))). - കുക്കികൾ എടുക്കുകയും വെക്കുകയും ചെയ്യുക,യൂസേറിനോട് ചോദ്യങ്ങൾ ചോദിക്കുക, സന്ദേശങ്ങൾ കാണിക്കുക. - ക്ലയന്റ് ഭാഗത്തുള്ള ഡാറ്റ ഓർക്കുക ("ലോക്കൽ സ്റ്റോറേജ്"). ## ബ്രൗസറിൽ ജാവസ്ക്രിപ്റ്റന് എന്തു ചെയ്യാൻ കഴിയില്ല? @@ -63,10 +63,10 @@ Engines നല്ല ബുദ്ധിമുട്ടുള്ള ഒരു വ ആധുനിക ബ്രൌസർ‌ ഫയലുകളുമായി പ്രവർ‌ത്തിക്കാൻ‌ ഇത് അനുവദിക്കുന്നു, പക്ഷേ ആക്‌സസ് പരിമിതമാണ് ,കൂടാതെ ഉപയോക്താവ് ഒരു ബ്രൗസർ വിൻ‌ഡോയിലേക്ക് ഒരു ഫയൽ‌ ഡ്രോപ്പ് ചെയ്യുകയോ അല്ലെങ്കിൽ‌ `` ടാഗ് വഴി തിരഞ്ഞെടുക്കുകയോ പോലുള്ള ചില പ്രവർ‌ത്തനങ്ങൾ‌ നടത്തുകയാണെങ്കിൽ‌ മാത്രം. - ക്യാമറ / മൈക്രോഫോൺ, മറ്റ് ഉപകരണങ്ങൾ എന്നിവയുമായി സംവദിക്കാനുള്ള മാർഗങ്ങളുണ്ട്, പക്ഷേ അവയ്‌ക്ക് ഉപയോക്താവിന്റെ വ്യക്തമായ അനുമതി ആവശ്യമാണ്. അതിനാൽ ഒരു ജാവാസ്ക്രിപ്റ്റ് പേജ് ഒരു വെബ് ക്യാമറയെ തന്ത്രപൂർവ്വം ഓപ്പൺ ചെയ്യാൻ ചുറ്റുപാടുകൾ നിരീക്ഷിക്കുകയും വിവരങ്ങൾ [NSA] (https://en.wikipedia.org/wiki/National_Security_Agency) ലോട്ടു അയയ്ക്കുകയോ ചെയ്യരുത്. + ക്യാമറ / മൈക്രോഫോൺ, മറ്റ് ഉപകരണങ്ങൾ എന്നിവയുമായി സംവദിക്കാനുള്ള മാർഗങ്ങളുണ്ട്, പക്ഷേ അവയ്‌ക്ക് ഉപയോക്താവിന്റെ വ്യക്തമായ അനുമതി ആവശ്യമാണ്. അതിനാൽ ഒരു ജാവാസ്ക്രിപ്റ്റ് പേജ് ഒരു വെബ് ക്യാമറയെ തന്ത്രപൂർവ്വം ഓപ്പൺ ചെയ്യാൻ ചുറ്റുപാടുകൾ നിരീക്ഷിക്കുകയും വിവരങ്ങൾ [NSA](https://en.wikipedia.org/wiki/National_Security_Agency) ലോട്ടു അയയ്ക്കുകയോ ചെയ്യരുത്. - വ്യത്യസ്ത ടാബുകൾ / വിൻഡോകൾ സാധാരണയായി പരസ്പരo ബന്ധം കാണില്ല. ചിലപ്പോൾ അവ അങ്ങനെ ചെയ്യാം, ഉദാഹരണത്തിന് ഒരു വിൻഡോ മറ്റൊരു വിൻഡോ തുറക്കാൻ ജാവാസ്ക്രിപ്റ്റ് ഉപയോഗിക്കുമ്പോൾ. ഈ സാഹചര്യത്തിൽ പോലും, വ്യത്യസ്ത സൈറ്റുകളിൽ നിന്ന് (മറ്റൊരു ഡൊമെയ്ൻ, പ്രോട്ടോക്കോൾ അല്ലെങ്കിൽ പോർട്ടിൽ നിന്ന്) വന്നാൽ ഒരു പേജിൽ നിന്നുള്ള ജാവാസ്ക്രിപ്റ്റ് മറ്റൊന്നിലേക്ക് പ്രവേശിക്കാനിടയില്ല. - ഇതിനെ "same origin policy" എന്ന് വിളിക്കുന്നു. അത് പരിഹരിക്കുന്നതിന്, * രണ്ട് പേജുകളും * ഡാറ്റാ കൈമാറ്റത്തിന് സമ്മതിക്കുകയും അത് കൈകാര്യം ചെയ്യുന്ന ഒരു പ്രത്യേക ജാവാസ്ക്രിപ്റ്റ് കോഡ് അടങ്ങിയിരിക്കുകയും വേണം. ഞങ്ങൾ അത് ട്യൂട്ടോറിയലിൽ ഉൾപ്പെടുത്തും. + ഇതിനെ "same origin policy" എന്ന് വിളിക്കുന്നു. അത് പരിഹരിക്കുന്നതിന്, *രണ്ട് പേജുകളും* ഡാറ്റാ കൈമാറ്റത്തിന് സമ്മതിക്കുകയും അത് കൈകാര്യം ചെയ്യുന്ന ഒരു പ്രത്യേക ജാവാസ്ക്രിപ്റ്റ് കോഡ് അടങ്ങിയിരിക്കുകയും വേണം. ഞങ്ങൾ അത് ട്യൂട്ടോറിയലിൽ ഉൾപ്പെടുത്തും. ഈ പരിധി വീണ്ടും ഉപയോക്താവിന്റെ സുരക്ഷയ്ക്കായിരിക്കും. ഒരു ഉപയോക്താവ് തുറന്ന `http: // anysite.com` ൽ നിന്നുള്ള ഒരു പേജിന്` http: // gmail.com` URL ഉള്ള മറ്റൊരു ബ്രൗസർ ടാബ് ആക്സസ് ചെയ്യാനും അവിടെ നിന്ന് വിവരങ്ങൾ മോഷ്ടിക്കാനും കഴിയില്ല. - നിലവിലെ പേജ് വന്ന സെർവറിലേക്ക് ജാവാസ്ക്രിപ്റ്റിന് നെറ്റിലൂടെ എളുപ്പത്തിൽ ആശയവിനിമയം നടത്താൻ കഴിയും. എന്നാൽ മറ്റ് സൈറ്റുകളിൽ നിന്നും ഡൊമെയ്‌നുകളിൽ നിന്നും ഡാറ്റ സ്വീകരിക്കാനുള്ള അതിന്റെ കഴിവ് തകരാറിലാകുന്നു. സാധ്യമാണെങ്കിലും, വിദൂര ഭാഗത്ത് നിന്ന് വ്യക്തമായ കരാർ (http header) ആവശ്യമാണ്. ഒരിക്കൽ കൂടി, അതൊരു സുരക്ഷാ പരിമിതിയാണ്. @@ -102,10 +102,10 @@ Engines നല്ല ബുദ്ധിമുട്ടുള്ള ഒരു വ അത്തരം ചില ഉദാഹരണങ്ങളാണ്: -- [കോഫിസ്ക്രിപ്റ്റ്] (http://coffeescript.org/) ജാവാസ്ക്രിപ്റ്റിനായുള്ള ഒരു "സിന്റാക്‌സ്" ആണ്. ഇത് ഹ്രസ്വമായ സിന്റാക്‌സ് അവതരിപ്പിക്കുന്നു, വ്യക്തവും കൃത്യവുമായ കോഡ് എഴുതാൻ ഞങ്ങളെ അനുവദിക്കുന്നതും. സാധാരണയായി, റൂബി ഡെ ഡെവെലോപെർസ് ഇത് ഇഷ്ടപ്പെടുന്നു. -- [ടൈപ്പ്സ്ക്രിപ്റ്റ്] (http://www.typescriptlang.org/) സങ്കീർണ്ണമായ സിസ്റ്റങ്ങളുടെ വികസനവും പിന്തുണയും ലളിതമാക്കുന്നതിന് "കർശനമായ ഡാറ്റ ടൈപ്പിംഗ്" ചേർക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചിരിക്കുന്നു. ഇത് വികസിപ്പിച്ചെടുത്തത് മൈക്രോസോഫ്റ്റ് ആണ്. -- [ഫ്ലോ] (http://flow.org/) ഡാറ്റ ടൈപ്പിംഗും ചേർക്കുന്നു, പക്ഷേ മറ്റൊരു രീതിയിൽ. ഫേസ്ബുക്ക് വികസിപ്പിച്ചെടുത്തത്. -- [ഡാർട്ട്] (https://www.dartlang.org/) ബ്രൗസർ ഇതര പരിതസ്ഥിതികളിൽ (മൊബൈൽ അപ്ലിക്കേഷനുകൾ പോലെ) പ്രവർത്തിക്കുന്ന സ്വന്തം എഞ്ചിൻ ഉള്ള ഒരു ഒറ്റപ്പെട്ട ഭാഷയാണ്, മാത്രമല്ല ഇത് ജാവാസ്ക്രിപ്റ്റിലേക്ക് കൈമാറാനും കഴിയും. Google വികസിപ്പിച്ചെടുത്തത്. +- [coffeescript](http://coffeescript.org/) ജാവാസ്ക്രിപ്റ്റിനായുള്ള ഒരു "സിന്റാക്‌സ്" ആണ്. ഇത് ഹ്രസ്വമായ സിന്റാക്‌സ് അവതരിപ്പിക്കുന്നു, വ്യക്തവും കൃത്യവുമായ കോഡ് എഴുതാൻ ഞങ്ങളെ അനുവദിക്കുന്നതും. സാധാരണയായി, റൂബി ഡെ ഡെവെലോപെർസ് ഇത് ഇഷ്ടപ്പെടുന്നു. +- [Typescript](http://www.typescriptlang.org/) സങ്കീർണ്ണമായ സിസ്റ്റങ്ങളുടെ വികസനവും പിന്തുണയും ലളിതമാക്കുന്നതിന് "കർശനമായ ഡാറ്റ ടൈപ്പിംഗ്" ചേർക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചിരിക്കുന്നു. ഇത് വികസിപ്പിച്ചെടുത്തത് മൈക്രോസോഫ്റ്റ് ആണ്. +- [Flow](http://flow.org/) ഡാറ്റ ടൈപ്പിംഗും ചേർക്കുന്നു, പക്ഷേ മറ്റൊരു രീതിയിൽ. ഫേസ്ബുക്ക് വികസിപ്പിച്ചെടുത്തത്. +- [Flow](https://www.dartlang.org/) ബ്രൗസർ ഇതര പരിതസ്ഥിതികളിൽ (മൊബൈൽ അപ്ലിക്കേഷനുകൾ പോലെ) പ്രവർത്തിക്കുന്ന സ്വന്തം എഞ്ചിൻ ഉള്ള ഒരു ഒറ്റപ്പെട്ട ഭാഷയാണ്, മാത്രമല്ല ഇത് ജാവാസ്ക്രിപ്റ്റിലേക്ക് കൈമാറാനും കഴിയും. Google വികസിപ്പിച്ചെടുത്തത്. കൂടുതൽ ഉണ്ട്. തീർച്ചയായും, നമ്മൾ ട്രാൻ‌സ്‌പൈൽ‌ ചെയ്‌ത ഭാഷകളിലൊന്ന്‌ ഉപയോഗിച്ചാലും, നമ്മൾ ചെയ്യുന്നതെന്താണെന്ന് ശരിക്കും മനസിലാക്കാൻ‌ നമ്മൾ JavaScript നെ അറിഞ്ഞിരിക്കണം. diff --git a/1-js/02-first-steps/02-structure/article.md b/1-js/02-first-steps/02-structure/article.md index e81fd343d..cee19e58d 100644 --- a/1-js/02-first-steps/02-structure/article.md +++ b/1-js/02-first-steps/02-structure/article.md @@ -1,6 +1,6 @@ -# Code structure +# Code ന്റെ രൂപം -The first thing we'll study is the building blocks of code. +നമ്മൾ ആദ്യം പഠിക്കാൻ പോകുന്നത് കോഡിങിന്റെ അടിസ്ഥാനപരമായ ചില കാര്യങ്ങളാണ്. ## Statements