2015, ജനുവരി 12, തിങ്കളാഴ്‌ച

സ്റ്റാക്കും ക്യൂവും


കമ്പ്യൂട്ടർ സയൻസ് പഠിച്ചവരൊക്കെ "സ്റ്റാക്ക്", "ക്യൂ" എന്നീ കാര്യങ്ങളെ പറ്റി പഠിച്ചിരിക്കും... എൻജിനീയറിംഗ് പഠിക്കുന്ന കാലത്ത് ഏറ്റവും വേഗം ഇഷ്ടപ്പെട്ട രണ്ട് കണ്‍സപ്റ്റ്സ് ആയിരുന്നു, ഈ രണ്ടു സഹോദരങ്ങൾ. കാരണം മറ്റൊന്നുമല്ല, ഇവരെ മനസ്സിലാക്കുവാൻ വളരെ എളുപ്പവും ഇവരുടെ കസിനസ് ആയ മറ്റനവധി കാര്യങ്ങളെ  മനസ്സിലാക്കാൻ വളരെ ബുദ്ധിമുട്ടുമായിരുന്നു.

കമ്പ്യൂട്ടർ ജോലികളിൽ ഒരുവിധം എല്ലാ കാര്യത്തിനും ഒന്നല്ലെങ്കിൽ വേറൊരു രീതിയിൽ സ്റ്റാക്കും ക്യൂവും ഉപയോഗിക്കേണ്ടി വരും. സ്റ്റാക്കും ക്യൂവും  ഇല്ലാത്ത കമ്പ്യൂട്ടർ സയൻസ് ഉപ്പില്ലാത്ത കഞ്ഞി പോലെ ആണെന്ന് പറയാം.

സ്റ്റാക്കും ക്യൂവും എന്താണെന്ന് മനസ്സിലായില്ലെങ്കിൽ വളരെ ലളിതമായി പറയാം...

സ്റ്റാക്ക് എന്ന് പറഞ്ഞാൽ, ആദ്യം ഇടുന്ന സാധനം അവസാനം പുറത്തു വരും... ക്യൂ എന്ന് പറഞ്ഞാൽ ആദ്യം ഇടുന്ന സാധനം ആദ്യം തന്നെ പുറത്തു വരും... ഇത് വായിച്ച് ആരും ദുഷ് ചിന്തകളിലേക്ക് കടക്കണ്ട. വളരെ ഡീസന്റ് ആയ കാര്യങ്ങളേ സ്റ്റാക്കും ക്യൂവും വച്ച് ചെയ്യാറുള്ളൂ. വിശദീകരിക്കാം....

വിശദീകരിക്കുന്നതിന്  മുമ്പ് കമ്പ്യൂട്ടറിനെ പറ്റി പറയാതെ പറ്റില്ല....

കമ്പ്യൂട്ടർ
----------------

"പുറമേ നിന്ന് നോക്കിയാൽ വളരെ ചെറിയ കട. ഉള്ളിലേക്ക് ചെന്നാൽ വിശാലമായ ഷോറൂം" എന്ന പരസ്യം കേൾക്കാത്തവരുണ്ടാകില്ല. അതിനു വിപരീതമാണ് കമ്പ്യൂട്ടർ. പുറമേ നിന്ന് നോക്കുമ്പോൾ വളരെ ബുദ്ധിയും കഴിവും ഉള്ള ഒന്നാണ് കമ്പ്യൂട്ടർ എന്ന് തോന്നുമെങ്കിലും ഉള്ളിലേക്ക് ചെന്നാൽ അല്ലെങ്കിൽ കമ്പ്യൂട്ടറിന്റെ ഉള്ളിലെ കാര്യങ്ങൾ നോക്കിയാൽ വെറും ഒരു മന്ദബുദ്ധിയാണ് എന്ന് മനസ്സിലാകും".

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

മേൽപറഞ്ഞതൊക്കെ പുറമേ നിന്ന് നോക്കുമ്പോൾ, കാണാവുന്ന കമ്പ്യൂട്ടറിന്റെ കഴിവുകൾ  അല്ലെങ്കിൽ വിശാല പ്രകൃതി..

ഇനി കമ്പ്യൂട്ടറിന്റെ ഉള്ളിലോട്ടു ചെന്നാലോ? വെറും മന്ദബുദ്ധി...

കംപ്യൂട്ടറിനുള്ളിലെ അവിഭാജ്യഭാഗം ഏതാണ്?

അതാണ്‌ "സി  പി ...".

"സി പി..", എന്ന് കേൾക്കുമ്പോഴേക്കും അത് "സി പി എം" ആണെന്നോ "സി പി ഐ" ആണെന്നോ കരുതണ്ട.... അവരൊക്കെ കമ്പ്യൂട്ടറിന് പണ്ട് മുതൽക്കേ എതിരായ കാരണം, "സി പി..." ക്ക് ശേഷം "എം" എന്നോ "ഐ" എന്നോ ഇട്ടില്ല. കൂലങ്കഷമായി ചിന്തിച്ച് ഇനി അതിനെ "സി പി രാമസ്വാമി അയ്യർ" എന്നൊന്നും കരുതണ്ട... പിന്നെ എന്താണ് "സി പി.." ക്ക് ശേഷം വരുക? ഏയ് ആട്ടോ സിനിമയിൽ ലാലേട്ടൻ ആദ്യം പഠിച്ച ബാറ്റ്‌ അക്ഷരങ്ങളിൽ (വവ്വൽസ്) അഞ്ചാമത്തവൻ... "യു"....

അങ്ങനെ, കമ്പ്യൂട്ടറിന്റെ അവിഭാജ്യ ഭാഗത്തിന്റെ പേര് "സി പി യു". "സി പി യു" വെറും പാവം...   നിങ്ങളൊക്കെ വാട്ട്സാപ്പിൽ ചാറ്റ് ചെയ്യുമ്പോഴും ഫേസ്ബുക്കിൽ ലൈക്‌ അടിക്കുമ്പോഴൊക്കെ പാവം "സി പി യു" നിങ്ങൾക്ക് വേണ്ടി തലകുത്തി മറഞ്ഞ് പണിയെടുക്കുന്നു. കംപ്യൂട്ടറിൽ അനവധി അപ്പ്ളിക്കെഷനുകൾ ഒരുമിച്ച് ചെയ്യാൻ നോക്കുമ്പോൾ... വളരെ പതുക്കെ ആകുന്ന കമ്പ്യൂട്ടറിനെ "നാശം, ഇതനങ്ങുന്നില്ലല്ലൊ" എന്നോ സായിപ്പിന്റെ ഭാഷയിൽ "ഹോളി ക്രാപ്പ്" എന്നോ  ചീത്ത വിളിക്കുമ്പോൾ, ആലോചിക്കുക.. "സി പി യു ആകുന്ന തുമ്പിയെ കൊണ്ട് കല്ലെടുപ്പിക്കാൻ നോക്കുകയാണ് നിങ്ങൾ"..

സി പി യു എന്ന് പറഞ്ഞാൽ "സെൻട്രൽ പ്രോസസ്സിംഗ് യൂണിറ്റ്" എന്നാണ്. അതായത് നമ്മുടെ ഒക്കെ തലയുമായി അതിനെ ഉപമിക്കാം. മനുഷ്യന്മാർക്ക് ഇക്കാലത്ത് തലയില്ലെങ്കിലും ജീവിക്കാം എങ്കിലും സി പി യു ഇല്ലാതെ കമ്പ്യൂട്ടറിന് ജീവിതമില്ല.

സി പി യു ഇത്രയൊക്കെ ജോലി  ചെയ്യുന്നു എന്ന് കരുതി അതിനെ കൂടുതൽ ബഹുമാനിക്കണം എന്നില്ല. "ഡാ സി പി യു, കുറെ കാര്യങ്ങൾ വേഗം ചെയ്തു താ" എന്ന് പറഞ്ഞാൽ മാത്രം പോര അതൊക്കെ ഒരു കൊച്ചുകുഞ്ഞിന് പറഞ്ഞു കൊടുക്കുന്നതിനേക്കാൾ വിശദമായി പറഞ്ഞു കൊടുക്കണം. അല്ലെങ്കിൽ എല്ലാം തെറ്റിക്കും... അത്രക്കും മന്ദബുദ്ധിയാണ് സി പി യു.

അത് കൊണ്ടാണ് പറഞ്ഞത്, കമ്പ്യൂട്ടറിനെ പുറമേ നിന്ന് നോക്കിയാൽ  ഒരു മഹാ സംഭവം ആയി തോന്നുമെങ്കിലും ഉള്ളിലേക്ക് ചെന്നാൽ വെറും മന്ദബുദ്ധി...

അപ്പോൾ ഈ ചെയ്യാനുള്ള  കാര്യങ്ങൾ "കൃത്യമായി വച്ചിട്ടുണ്ട്" എന്ന് എങ്ങിനെ സി പി യുവിനോട് പറയും. അവിടെയാണ് സ്റ്റാക്കിന്റെയും  ക്യൂവിന്റെയും പ്രസക്തി....

ക്യൂ ആൻഡ്‌  സ്റ്റാക്ക്
---------------------------------
ക്യൂ എന്നതിന്റെ ഡഫനിഷൻ (ഫ്രം ഗൂഗിൾ) താഴെ പറയുന്നു

BRITISH
a line or sequence of people or vehicles awaiting their turn to be attended to or to proceed.

COMPUTING
a list of data items, commands, etc., stored so as to be retrievable in a definite order, usually the order of insertion.

ഡഫനിഷനിൽ നിന്ന് തന്നെ കണ്ടില്ലേ...  ക്യൂ എന്ന് പറഞ്ഞാൽ "കൃത്യമായി ഓർഡർ ആയി കാത്തു നില്ക്കുന്നത്". ക്യൂ ഡഫനിഷൻ പ്രകാരം ഒരു ക്യൂവിനെ മുകളിൽ നിന്ന് നോക്കുകയാണെങ്കിൽ ഒരു സ്ട്രൈറ്റ്‌ ലൈൻ പോലെ അല്ലെങ്കിൽ ഒരു കനം കുറഞ്ഞ ഒരു വള്ളി പോലെ കാണണം. BRITAINലെ ക്യൂകൾ സ്ട്രൈറ്റ്‌ ലൈൻ പോലെ ആയത്  കൊണ്ടായിരിക്കണം ക്യൂവിന് ഒരു BRITISH മീനിങ്ങ്. ആ ഡഫനിഷൻ വച്ച് എന്തായാലും ക്യൂ കണ്ടു പിടിച്ചത് ഇന്ത്യയിൽ അല്ല എന്നത് ഉറപ്പ്.  ഇന്ത്യയിലെ ക്യൂവിനെ മുകളിൽ നിന്ന് നോക്കുകയാണെങ്കിൽ, പരന്ന് പന്തലിച്ച് കിടക്കുന്ന ഒരു പേരാൽ പോലെയേ കാണൂ. എന്തിനു വേണ്ടിയാണോ കാത്തു നിൽക്കുന്നത്, ആ പോയന്റിൽ നിന്ന് ഉള്ള ഒരു ത്രികോണം ആയിട്ടേ കാണാൻ പറ്റൂ..

മറിച്ച് സ്റ്റാക്ക് കണ്ടുപിടിച്ചത് ഇന്ത്യയിൽ ആണെന്ന് തോന്നുന്നു. ഫ്രം ഗൂഗിൾ, സ്റ്റാക്കിന്റെ ഡഫനിഷൻ താഴെ കൊടുക്കുന്നു.

1. a pile of objects, typically one that is neatly arranged one on top of other.
2. a chimney, especially one on a factory, or a vertical exhaust pipe on a vehicle.

സ്റ്റാക്ക് എന്ന് പറയുന്നത് ക്യൂവിന്റെ വിപരീതം. ക്യൂവിൽ ആദ്യമുള്ളതിനെ ആദ്യം സേവിക്കും. സ്റ്റാക്കിൽ ആദ്യം കയറുന്നവൻ ഏറ്റവും അവസാനം സേവിക്കപ്പെടും.  (സർക്കാർ ഓഫീസിൽ പോയിട്ടുള്ളവർക്ക് വളരെ നന്നായി ഉണ്ടാകാറുള്ള അനുഭവം). സ്റ്റാക്കിനു BRITISH മീനിങ്ങ് കാണാനുമില്ല.  (ഗൂഗിൾ ചെയ്തപ്പോൾ മാത്രം....).

സി പി യുവും സ്റ്റാക്കും ക്യൂവും തമ്മിലുള്ള ബന്ധം എന്താണ്. മാനം മര്യാദയായി ചെയ്യേണ്ട കാര്യങ്ങൾ ഒരു ക്യൂവിലാക്കി സി പി യുവിനോട് പറയും, "ഡാ, സി പി യു.. ആ ക്യൂവിൽ കിടക്കുന്ന കാര്യങ്ങൾ പോയി ചെയ്യ്". മന്ദബുദ്ധി സി പി യു, ഒന്നും ആലോചിക്കാതെ അതിൽ കിടക്കുന്ന അതേ ഓർഡർ അനുസരിച്ച് കാര്യങ്ങൾ ചെയ്യും...

അപ്പോൾ സ്റ്റാക്കെവിടെ ഉപയോഗിക്കും. അധികം പ്രാധാന്യം കൊടുക്കെണ്ടാത്ത കാര്യങ്ങൾ അവസാനം മാത്രമേ ചെയ്യൂ.  അങ്ങനത്തെ കാര്യങ്ങൾ ചെയ്യാൻ അവയെ ഒരു ക്യൂവിൽ ഇടില്ല. സ്റ്റാക്കിലെ ഇടൂ. എന്നിട്ട് സി പി യുവിനോട് പറയും, "ഡാ, സി പി യു.. ആ സ്റ്റാക്കിൽ  കിടക്കുന്ന കാര്യങ്ങൾ പോയി ചെയ്യ്".  ആദ്യം സ്റ്റാക്കിൽ കയറിയ കാര്യം ഏറ്റവും അവസാനമേ ചെയ്യൂ... ഏറ്റവും  അവസാനം കയറിയ കാര്യം ആദ്യം ചെയ്യും.

-------

ഒരു കൊല്ലത്തെ ഭക്ഷണ നിയന്ത്രണത്തിന് ശേഷം ഒരു കാര്യം മനസ്സിലായി...

നമ്മുടെ ശരീരത്തിൽ ക്യൂവിന്റെയും സ്റ്റാക്കിന്റെയും "പ്രത്യേകതകളുള്ള ഒരു ഭാഗം" ഉണ്ട്... അതിന്റെ "ഉള്ളിലേക്ക് പോകുന്ന സാധനങ്ങൾ" ക്യൂവിലെന്ന പോലെ മിക്കവാറും പോയ ഓർഡർ അനുസരിച്ച് പുറത്തു വരും... പക്ഷെ ശരീരത്തിൽ "മൊത്തമായി കയറുന്ന" ചിലവ, ആ പ്രത്യേകതകളുള്ള ഭാഗത്ത്‌ നിന്ന് ഒരു സ്റ്റാക്കിലെന്ന പോലെ ഏറ്റവും അവസാനമേ പോകൂ...

"ഉള്ളിലേക്ക് പോകുന്നത്" -- ഭക്ഷണം...
"മൊത്തമായി കയറുന്നത്" --  വെയിറ്റ്/ഫാറ്റ്/കുമ്പ
"പ്രത്യേകതകളുള്ള  ഭാഗം" -- വയറ്

---------

ഓഫീസിൽ ഒരു പ്രത്യേക കാര്യം ഇമ്പ്ലിമെന്റ് ചെയ്യാൻ 11 പേരടങ്ങുന്ന ഒരു മീറ്റിംഗ്. 5 പേര് ക്യൂവിന് വേണ്ടി വാദിക്കുന്നു. 5 പേര് സ്റ്റാക്കിനു വേണ്ടി വാദിക്കുന്നു. ഈ മീറ്റിങ്ങിൽ  ഒരു തീരുമാനത്തിൽ എത്തില്ല എന്നും ഇനി ഡിസ്കഷൻ ചെയ്തിട്ട് കാര്യമില്ല എന്നും  ഉറപ്പായി. കുറെ നേരമായി ചർച്ച. വിശന്ന് വിശന്ന് വയറ്  വേദന എടുത്തു തുടങ്ങി.... ഇരുന്നിരുന്നു വയറും കുമ്പയും പുറവും വേദനിച്ചു തുടങ്ങി. കലശലായ വിശപ്പ്‌ കാരണം തലച്ചോറിൽ, കുമ്പയും വയറും ക്യൂവും സ്റ്റാക്കും കൂട്ടിക്കുഴഞ്ഞ് ഈ അവിയൽ ഉണ്ടായി...