Wednesday, August 7, 2013

Subroutine என்றால் என்ன?


முந்தைய பாகத்தில் loop என்றால் என்னவென்று பார்த்தோம். இனி subroutine என்றால் என்ன? அது எதற்காக பயன்படுகிறது என்பதை பார்ப்போம்.

Subroutine என்றால் என்ன?

நாம் எழுதும் புரோகிராமை நமது வசதிக்கேற்ப அல்லது பயன்பாட்டிற்கேற்ப சிறிய சிறிய அளவில் தனித்தயாக - துண்டுகளாக - எழுதுவதை subroutine என்கிறோம்.  

இதனால் நமது புரோகிராம் பல சின்ன புரோகிராம்களாக பிரிக்கப்படுகிறது. இதனால் இவற்றை பராமரிப்பதும் எளிதாகிவிடுகிறது.

ஒரு காரியத்திற்காக program ஒன்றை எழுதுகிறோம். அதே காரியம் இன்னொரு இடத்திலும் செய்யவேண்டிய தேவை எழுகிறது. இதற்காக மீண்டும் அதே program மை உட்கார்ந்து எழுதாமல் முன்னர் எழுதிய   அதே புரோகிராமை நாம் பயன்படுத்திகொள்ளலாம்.

Subroutine னால் கிடைக்கும் பயன்கள்: 

Code reusability - ஒரே code ஐ பல இடங்களில் பயன்படுத்திக்கொள்ள முடிகிறது.

Avoid redundancy - ஒரே code ஐ பல தடவை duplicate ஆக திரும்பத்திரும்ப எழுதுவது தவிர்க்கப்படுகிறது.

Reduce complexity - நமது புரோகிராமை பிரித்து subroutine களாக எழுதுவதால் புரிந்து கொள்வது (பராமரிப்பது) எளிதாகிறது.

நடைமுறை உதாரணம் ஒன்று சொன்னால் எளிதாக விளங்கும். தென்னை மரமேறி தேங்காய் பறிப்பதற்கு ஒருத்தர் ஒரு கருவி செய்து வைத்திருக்கிறார். அவருடைய கொல்லையில் அந்த கருவியை பயன்படுத்தி தேங்காய் பறித்து கொள்கிறார். இதை அந்த ஊர் மக்கள் கேள்விபட்டு தங்கள் கொல்லையிலும் தேங்காய் பறிக்க அவரைக் கூப்பிடுகிறார்கள். அவரும் ஒருவருடைய கொல்லைக்கு போய் உட்கார்ந்து தென்னை மரமேறுவதற்கென ஒரு கருவி செய்தாகனும் என முடிவுசெய்கிறார். கருவியை தயாரிக்க தொடங்கி பல முறை முயற்சிசெய்து சில முறை கீழேயும் விழுந்து அதிலிருந்து பாடம் கற்று ஒருவழியாக அந்த கருவியை தயாரித்து தேங்காய் பறிப்பதற்குள் போதும்போதும் என்றாகிவிட்டது.

இதை கேள்விபடும் உங்களுக்கு என்ன தோன்றுகிறது? அடப்பாவி வீட்டுல சூப்பரா ஒரு கருவியை வச்சிக்கிட்டு அதை பயன்படுத்தாம இப்படியே வீட்டுக்கு வீடு போய் கருவி செய்துகிட்டு இருக்கானே! இவனுக்கு என்ன கிறுக்கா புடிச்சிருக்கு என்று நினைப்பீர்களா இல்லையா?

இவருக்கு கருவி செய்ய தெரியும் என்றாலும் அதனால் ஏற்படும் விளைவுகள் என்னென்ன?

முதன்முதலில் ஒரு கருவியை செய்யும்போது ஏற்பட்ட காலவிரயம் ஒவ்வொருதடவையும் ஏற்படுகிறது.

ஒவ்வொரு முறை புதிது புதிதாக செய்வதால் ஒவ்வொரு கருவியிலும் ஏதாவதொரு technical fault ஏற்பட சாத்தியம் உள்ளது.

இப்படியே பல கருவிகள் அவன் வீட்டில் சேர ஆரம்பித்தால் நாளை எந்த கருவி நன்றாக வேலை செய்கிறது என்பது தெரியாமல் போய்விட வாய்ப்புண்டு.

ஒரு கருவியில் ஏற்பட்ட technical fault ஐ சரிசெய்தாலும் அதே fault ஐ அனைத்து கருவிகளிலிருந்தும் நீக்க முடியும் என்பதற்கு உத்தரவாதம் கிடையாது. 

இப்படி ஏகப்பட்ட பிரச்சினைகள் இதில் உள்ளன.

இவன் சரிப்பட்டு வரமாட்டான் என்று பக்கத்து ஊரிலிருந்து ஒருத்தனை அழைத்து வந்தார்கள். அவன் தன்னுடன் கருவியையும் எடுத்துவந்திருந்தான். அந்த கருவியை பயன்படுத்தி மரமேறி தேங்காய் பறித்தான். ஒவ்வொரு முறையும் ஏதாவதொரு technical fault ஏற்பட்டால் அதை களைவது எப்படி என யோசனை செய்து குறைகளை களைந்து அந்த கருவியை மிகச்சிறந்ததாக மாற்றிவிட்டான். இதனால் இவனுக்கு நேரம் மிச்சமாகியது. வருமானமும் அதிகமானது.

ஓய்வு நேரத்தில் அவன் வெவ்வேறு வேலைக்கு தேவைப்படும் இயந்திரங்களை கண்டுபிடிக்க ஆரம்பித்தான்.

இரண்டு நபருக்கும் உள்ள வேறுபாடு தெரிகிறதா?

தெரிந்தால்தான் உங்களுக்கு code reusability, avoid redundancy, reduce complexity யின் அர்த்தம் புரியும். Subroutine னுடைய தேவையும் புரியும்.

இதனை procedures / functions / sub-program / subroutine  என்றும் குறிப்பிடுவார்கள். அதைப் பற்றி அடுத்த பாகத்தில் பார்ப்போம்.

0 comments:

Post a Comment