OOP, FP ஆகிய இரண்டும் Pythonஇற்காக பொதுமக்கள் பயன்படுத்துகின்ற மிகவும் பிரபலமான முன்னுதாரணங்கள் ஆகும். இவ்விரண்டும் பயன்பாட்டுக் காட்சிகளுடன் முற்றிலும் வேறுபட்ட கருத்தைப் பிரதிபலிக்கின்றன. ஒரு செயல்திட்டத்தில் எதைப் பயன்படுத்த வேண்டும் என்பதை நிரலாளர்கள் தீர்மானிக்க உதவும் இரண்டு முன்னுதாரணங்களுக்கு இடையேயான புரிதல் வேறுபட்டிருக்கலாம்.
பொருள் சார்ந்த நிரலாக்க (Object-Oriented Programming(OOP))
OOP என்பது இனங்களின் பகுதியாக இருக்கின்ற பொருட்களைக் குறிக்கிறது. கூடுதலாக, இது இணைத்தல்(encapsulation), மரபுரிமை , பல்லுருப்பெறல்(polymorphism) ஆகியவற்றில் அதிக கவனம் செலுத்துகிறது:
இணைத்தல்(encapsulation) : இது ஒரு பொருளின் செயலாக்க விவரங்களை மறைக்கிறது, அதன் சில பகுதிகளுக்கு மட்டுமே அணுகலைக் காட்டுகிறது, பொதுவான வழிமுறைகள் மூலம் கட்டுப்படுத்தப்பட்ட தொடர்புகளை எளிதாக்குகிறது, ஆனால் உள்ளக நிலைகள் தனிப்பட்டதாக வைக்கப்படுகின்றன.
மரபுரிமை: குறிமுறைவரிகளை மீண்டும் பயன்படுத்துவதை ஊக்குவிக்கின்ற பிற இனங்களிலிருந்து பண்புகளையும் வழிமுறைகளையும் பெற புதிய இனங்களை இது அனுமதிக்கிறது.
பல்லுருப்பெறல்(polymorphism): இது வெவ்வேறு இனங்களின் பொருட்களை ஒரு பொதுவான முதன்மை இனத்தின் பொருள்களாகக் கருத உதவுகிறது.
நடப்பு-உலக நிறுவனங்களை மாதிரி செய்வதற்கு OOP மிகவும் திறமையானது, இதனால் தரவும் நடத்தையும் இறுக்கமாக இணைக்கப்பட்டுள்ள சரக்கிருப்பு அமைவுகள் அல்லது பயனர் மேலாண்மை போன்ற பயன்பாடுகளுக்கு மிகவும் பொருத்தமானது. எடுத்துகாட்டாக, இனத்தில் மகிழ்வுந்தின் வண்ணம், மாதிரி , வழிமுறைகள் drive(), stop(). போன்ற பண்புகளை இணைக்க முடியும்.
செயலியின் நிரலாக்கம் (Functional Programming (FP))
மறுபுறம், FPஎனும் செயலி மதிப்பீட்டில் அதிக கவனம் செலுத்துகிறது நிலையை கையாளுதல் தொடர்பான செயலிகளில் அன்று. இது பின்வரும் பண்புகளை பின்பற்றுகிறது:
தெளிவான செயலிகள்: இந்த செயலிகள் ஒரே உள்ளீட்டை பயன்படுத்தினால், அவை எப்போதும் குறிப்பிட்ட ஒரு வெளியீட்டையேத் தரும் எந்த பக்க விளைவுகளையும் உருவாக்காது என்பதை தீர்மானிக்கின்றன;, எனவே பரிசோதனைகள் சிக்கலானவை அல்ல.
மாறாத தன்மை: தரவுஆனது உருவாக்கப்பட்ட பிறகு அதை மாற்ற முடியாது; அதாவது, பகிர்ந்துகொள்ளப்பட்ட நிலையின் பிழைகளைக் குறைக்கும் அதன் மாறும் நிலையைப் பற்றிய எந்தக் குறிப்பும் இதில் இல்லை.
உயர்-வரிசை செயலிகள்: ஒரு செயலி மற்ற செயலிகளை அளவுருக்களாக எடுத்துக் கொள்ளலாம் அல்லது அதிலிருந்து அவற்றைத் திரும்பப் பெறலாம். இது சில இறுக்கமான சுருக்க விவரங்களை உருவாக்குகிறது.
குழாய்வழிப்பாதைகள் அல்லது தரவுபரிமாற்றம் குழாய்வழிபாதைகளுக்கு அதிக இணையாக தேவைப்படும் போது FP பயனுள்ளதாக இருக்கும். எடுத்துகாட்டாக, செயலியானது கலவையானதாகும், அதனால்மூலத் தரவை மாற்றாமல் அல்லது குறிமுறைவரிகளை இன்னும் பராமரிக்கக்கூடியதாக வைத்திருக்காமல் பட்டியல்களைச் செயலாக்க அனுமதிக்கிறது.
OOP , FPஆகியவற்றிற்கிடையிலான வேறுபாடுகள்
தரவினை கையாளுதல்(Manipulation)
OOP: எல்லா தரவும் ஒரு பொருளாகும்; ஒவ்வொரு பொருளும் அதன் நிலையை பராமரிக்கிறது சில வழிமுறைகளால் இயக்கப்படுகிறது.
FP: தரவு ஒரு செயலியிலிருந்து மற்றொன்றுக்கு பாய்வதால், அது எந்த நிலையிலும் இணைக்கப்படவில்லை. இந்த சுருக்கமானது குறிமுறைவரிகளை மிகவும் புரிந்துகொள்ளக்கூடியதாகவும் பக்கவிளைவு இல்லாததாகவும் ஆக்குகிறது.
சிக்கலைத் தீர்க்கும் முன்னுதாரணம்
OOP: களப்பெயர் நிறுவனங்களைக் குறிக்கின்ற பொருட்களின் அடிப்படையில் ஒருவரின் குறிமுறைவரிகளை எவ்வாறு கட்டமைக்க வேண்டும் என்ற கேள்வியில் அக்கறை உள்ளது.
FP: செயலிகளைப் பயன்படுத்துவதன் மூலம் தரவுக்கு என்ன செய்ய வேண்டும் என்பதில் ஆர்வமாக உள்ளது.
குறிமுறைவரிகளின் பராமரிப்பு
OOP: கட்டுக்குள் வைக்கப்படாவிட்டால், சிக்கலான படிநிலைகளின் கனவாக விரைவாக மலரும். இருப்பினும், பரம்பரை குறிமுறைவரிகளின் அடிப்படையில் செயலியைச் சேர்ப்பதற்கான தெளிவாக வரையறுக்கப்பட்ட வழிமுறைகளை வழங்குகிறது.
FP: பக்க விளைவுகள் ஏற்படுவதற்கான வாய்ப்புகள் குறைவாக இருப்பதால், பரிசோதனை செய்வதற்கு எளிதாக இருக்கும் தட்டையான குறிமுறைவரிகளின் கட்டமைப்புகளை இது விரும்புகிறது. இருப்பினும், பல செயலிகளில் நிலைகளை நிர்வகிப்பது அழிவுகரமானது.
செயல்திறன் சிக்கல்கள்
நிகழ்வுகள் அடிக்கடி உருவாக்கப்பட வேண்டிய அல்லது புதுப்பிக்கப்பட வேண்டிய சூழ்நிலைகளில் OOP க்கு சிறிய நன்மை கிடைக்கலாம், ஏனெனில் நிலைகள் மாறக்கூடியவை.
அதிக ஒத்திசைவு தேவைப்படும்போது FP பிரகாசிக்கும், ஏனெனில் அது மாறாத தன்மையையும் நிலையற்ற தன்மையையும் வலியுறுத்துகிறது.
ஒவ்வொரு முன்னுதாரணத்தையும்(Paradigm) எப்போது பயன்படுத்த வேண்டும்
எப்போது OOP ஐப் பயன்படுத்தவேண்டும்:
இந்த பயன்பாடு ஒன்றோடொன்று தொடர்புடைய உட்பொருட்களுடன் சிக்கலான அமைவுகளை மாதிரியாக்குகிறது.
இந்த பயன்பாடானது நன்கு வரையறுக்கப்பட்ட அமைவு, இணைத்தல்(encapsulation) , மரபுரிமை ஆகியவற்றிலிருந்து பயனடைகின்றது.
OOP கருத்துகளை ஏற்கனவே அறிந்த குழுவின் ஒரு பகுதியாகும்.
எப்போது FP ஐப் பயன்படுத்த வேண்டும்:
இது பெரிய தரவுத்தொகுப்புகளைக் கொண்டுள்ளது, அதை இணையாக செயலாக்க வேண்டும்.
இத்தகைய உயர் சுருக்க நிலைகள், செயலிகள் மறுபயன்பாட்டால் இந்த பயன்பாடு வேறுபடுகிறது
பிழைத்திருத்தம், பரிசோதனைக்கு உதவும் குறைந்தபட்ச பக்க விளைவுகளை கொண்டது.
FP உடன் OOP
பைதான் இரண்டு முன்னுதாரணங்களையுமே ஆதரிக்கிறது, அதனால் பைதானின் நிரலாளர்கள் ஒரு முன்னுதாரணத்தின் பலத்தைமட்டும் பயன்படுத்த முடியும். எடுத்துக்காட்டாக, OOP இல் உள்ளதைப் போல இனங்களை வரையறுக்கலாம், ஆனால் தரவு செயலாக்க வரைபடம், வடிகட்டி போன்ற செயலியின் நுட்பங்களைப் பயன்படுத்திகொள்ளலாம்:
முடிவாக
Python இல் OOP, FP க்கு இடையேயான தேர்வானது நம்முடைய செயல்திட்டத்தின் தேவைகளைப் பொறுத்ததாகும். OOP ஆனது கட்டமைக்கப்பட்ட அமைவுகளுக்கு நன்றாக செயல்படுகிறது, அதே சமயம் FP ஆனது மாறாத தன்மை, தெளிவான செயலிகளுடன் தெளிவான குறிமுறைவரிகளை ஊக்குவிக்கிறது. இரண்டு முன்னுதாரணங்களையும் புரிந்துகொள்வது சிறந்த முடிவுகளை எடுக்க உதவுகிறது. பெரும்பாலும், சிறந்த அணுகுமுறை இரண்டின் பலங்களையும் கலந்து இணைந்த கலப்பினமாகும்(hybrid) .