எதிர்ப்பு வடிவங்களுக்கான அறிமுகம்

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

நல்ல நிரலாக்க நடைமுறையின் ஒரு பகுதி துல்லியமாக எதிர்ப்பு வடிவங்களைத் தவிர்ப்பதாகும். இது ஒரு புரிந்துகொள்ள முடியாத தத்துவார்த்த குப்பை என்று நினைக்க வேண்டாம் - இவை கிட்டத்தட்ட ஒவ்வொரு டெவலப்பரும் எதிர்கொள்ளும் குறிப்பிட்ட சிக்கல்கள். யார் அறிவார், அவர் ஆயுதம்!

ஆரம்பநிலையாளர்களிடையே பொதுவான சில எதிர்ப்பு வடிவங்களைப் பார்ப்போம்:

  • மந்திர எண்கள் மற்றும் சரங்கள்
  • கடவுள் வர்க்கம்
  • முன்கூட்டிய தேர்வுமுறை
  • மிதிவண்டியின் கண்டுபிடிப்பு
  • யூனிசைக்கிளின் கண்டுபிடிப்பு

மந்திர எண்கள் மற்றும் சரங்கள்

ஒரு மேஜிக் எண் என்பது ஏதாவது ஒரு குறியீட்டில் பயன்படுத்தப்படும் மாறிலியாகும் (பெரும்பாலும் தரவு அடையாளம் காணல்), அதனுடன் தொடர்புடைய கருத்து இல்லாமல் அந்த எண்ணுக்கு எந்த அர்த்தமும் இல்லை. எண்கள் எந்த சொற்பொருளையும் கொண்டிருக்கவில்லை.

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

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

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

கடவுள் வர்க்கம்

தெய்வீக பொருள் என்பது OOP டெவலப்பர்களிடையே மிகவும் பொதுவான ஒரு எதிர்ப்பு வடிவமாகும். அத்தகைய பொருள் பல செயல்பாடுகளை எடுக்கும் மற்றும் / அல்லது கிட்டத்தட்ட எல்லா தரவையும் சேமிக்கிறது. இதன் விளைவாக, எங்களிடம் கையடக்கமற்ற குறியீடு உள்ளது, மேலும், புரிந்துகொள்வது கடினம்.

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

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

முன்கூட்டிய தேர்வுமுறை

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

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

எப்படி தவிர்ப்பது? முதலில், நன்கு அறியப்பட்ட மற்றும் நிரூபிக்கப்பட்ட அல்காரிதம்கள் மற்றும் கருவிகளைப் பயன்படுத்தி சுத்தமான, படிக்கக்கூடிய, வேலை செய்யும் குறியீட்டை எழுதுங்கள். தேவைப்பட்டால், சிக்கல்களைக் கண்டறிய சுயவிவரக் கருவிகளைப் பயன்படுத்தவும். அளவீடுகளை நம்புங்கள், யூகங்கள் மற்றும் அனுமானங்கள் அல்ல.

எடுத்துக்காட்டுகள் மற்றும் அம்சங்கள்

விவரக்குறிப்புக்கு முன் தற்காலிக சேமிப்பு. கணித ரீதியாக சரியான அல்காரிதம்களுக்குப் பதிலாக சிக்கலான மற்றும் நிரூபிக்கப்படாத ஹியூரிஸ்டிக்ஸைப் பயன்படுத்துதல். சுமையின் கீழ் தவறாகச் செயல்படக்கூடிய புதிய, சோதிக்கப்படாத கட்டமைப்புகளின் தேர்வு.

என்ன கஷ்டம்

உகப்பாக்கம் எப்போது முன்கூட்டியே இருக்கும் என்பதைத் தீர்மானிப்பது எளிதல்ல. வளர்ச்சிக்கான இடத்தை முன்கூட்டியே விட்டுவிடுவது முக்கியம். நீங்கள் எளிதாக மேம்படுத்த மற்றும் வளர அனுமதிக்கும் தீர்வுகள் மற்றும் தளங்களை நீங்கள் தேர்வு செய்ய வேண்டும். சில சமயங்களில் முன்கூட்டிய தேர்வுமுறையானது மோசமான குறியீட்டிற்கான ஒரு சாக்காகப் பயன்படுத்தப்படுகிறது. எடுத்துக்காட்டாக, அவர்கள் O(n2) அல்காரிதத்தை எடுத்துக்கொள்கிறார்கள், ஏனெனில் அல்காரிதம் O(n) மிகவும் கடினமாக இருக்கும்.

மிதிவண்டியின் கண்டுபிடிப்பு

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

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

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

பெரும்பாலும், இந்த எதிர்ப்பு முறைக்கான காரணம் நேரமின்மை. மற்றும் நேரம் பணம்.

சதுர சக்கர சைக்கிள் கண்டுபிடிப்பு

இந்த எதிர்ப்பு முறையானது, சக்கரத்தை மீண்டும் கண்டுபிடிப்பதற்கு மிகவும் நெருக்கமாக தொடர்புடையது - ஒரு சிறந்த தீர்வு இருக்கும் போது உங்கள் சொந்த மோசமான தீர்வை உருவாக்குகிறது.

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

சில பணிகளுக்கு பல்வேறு தீர்வுகள் இருப்பதை புரோகிராமர் அறிந்திருக்க வேண்டும் , அவற்றின் நன்மைகள் மற்றும் தீமைகள் மூலம் வழிநடத்தப்பட வேண்டும்.

ஒரு புரோகிராமராக நீங்கள் எதிர்கொள்ளும் அனைத்து சிக்கல்களையும் இரண்டு பகுதிகளாகப் பிரிக்கலாம்:

  • புத்திசாலிகள் இந்த சிக்கலை 30 ஆண்டுகளுக்கு முன்பு தீர்த்தனர்
  • புத்திசாலிகள் இந்த சிக்கலை 50 ஆண்டுகளுக்கு முன்பு தீர்த்தனர்

நீங்கள் பிறப்பதற்கு முன்பே பெரும்பாலான நிரலாக்க சிக்கல்கள் வெற்றிகரமாக தீர்க்கப்பட்டுள்ளன . எதையும் கண்டுபிடிக்கத் தேவையில்லை - மற்றவர்களின் அனுபவத்தைப் படிக்கவும் (இதற்காகத்தான் புத்தகங்கள் எழுதப்பட்டுள்ளன).

2022 இல், பின்வரும் பிறந்தநாளைக் கொண்டாடலாம்:

  • கணிப்பொறி செயல்பாடு மொழி
    • சி மொழிக்கு 50 வயதாகிறது (1972)
    • ஜாவா மொழிக்கு 27 வயது (1995)
    • பைத்தானுக்கு 31 வயதாகிறது (1991)
  • இணைப்பு
    • இணையம் 39 வயதை எட்டியது (1983)
    • மொபைல் போன் 49 வயதை எட்டியது (1973)
    • முதல் எஸ்எம்எஸ் 30 ஆண்டுகளுக்கு முன்பு அனுப்பப்பட்டது (1992)
  • வடிவங்கள்
    • MVC முறை 44 ஆக மாறியது (1978)
    • SQL 48 ஆண்டுகளுக்கு முன்பு கண்டுபிடிக்கப்பட்டது (1974)
    • ஜாவா பீன்ஸ் 26 ஆண்டுகளுக்கு முன்பு கண்டுபிடிக்கப்பட்டது (1996)
  • நூலகங்கள்
    • ஹைபர்னேட் 21 ஆண்டுகளுக்கு முன்பு கண்டுபிடிக்கப்பட்டது (2001)
    • வசந்தம் 20 ஆண்டுகளுக்கு முன்பு கண்டுபிடிக்கப்பட்டது (2002)
    • டாம்கேட் 23 ஆண்டுகளுக்கு முன்பு வெளியிடப்பட்டது (1999)
  • OS
    • யூனிக்ஸ் 51 ஆண்டுகளுக்கு முன்பு வெளியிடப்பட்டது (1971)
    • விண்டோஸ் 37 ஆண்டுகளுக்கு முன்பு (1985) ஒளியைக் கண்டது
    • Mac OS 21 ஆண்டுகளுக்கு முன்பு வெளியிடப்பட்டது (2001)

இந்த விஷயங்கள் அனைத்தும் கண்டுபிடிக்கப்பட்டவை அல்ல, அவை அந்த நேரத்தில் மிகவும் பொதுவான மற்றும் பொருத்தமான பிரச்சினைகளுக்கு தீர்வாக உருவாக்கப்பட்டன.