AI எழுதாத குறியீடு
நான் தொழில்நுட்ப நேர்காணல் கேள்வியாக form validation-ஐப் பயன்படுத்துகிறேன். இது பார்ப்பதற்கு எளிமையாகத் தெரியும். ஆனால் மக்கள் அதைத் தீர்க்கும் விதம், அவர்கள் எப்படிச் சிந்திக்கிறார்கள் என்பதைக் காட்டுகிறது.
நான் இந்தச் சிக்கலை Claude, ChatGPT மற்றும் Gemini ஆகியவற்றில் சோதித்துப் பார்த்தேன். அவை அனைத்தும் ஒரே தீர்வை நோக்கிச் சென்றன.
பெரும்பாலான மக்கள் இதைத் தீர்க்க மூன்று வழிகளில் ஒன்றைப் பயன்படுத்துகிறார்கள்:
- வெவ்வேறு வகைகளைக் கையாள flags கொண்ட ஒரு தனிச் செயல்பாட்டைப் (single function) பயன்படுத்துதல்.
- தரவின் அமைப்பை (data shape) ஆராய recursion-ஐப் பயன்படுத்துதல்.
- சரிபார்ப்பைச் (validation) செய்ய ஒரு schema-வைப் பயன்படுத்துதல்.
AI மாதிரிகள் அனைத்தும் schema அணுகுமுறையையே தேர்ந்தெடுத்தன. அது தொழில்நுட்ப ரீதியாகச் சரியானது. விடுபட்ட சாவிகளை (missing keys) அது கையாளும். அது சிறப்பாகச் செயல்படும் (scales well). உங்கள் தரவு இயங்கும் நேரத்தில் (runtime) மாறினால், schema என்பதே சரியான தேர்வாகும்.
ஆனால் பெரும்பாலான மென்பொருள்களுக்கு இதைவிடச் சிறந்த வழி உள்ளது.
அனைத்திற்கும் ஒரே மாதிரியான வடிவத்தைத் (single pattern) தேடுவதற்குப் பதிலாக, composition-ஐப் பயன்படுத்துங்கள். ஒவ்வொரு வணிகக் கருத்திற்கும் (business concept) அதன் சொந்தச் செயல்பாட்டை (function) வழங்குங்கள்.
- ஒரு அடிப்படை முகவரி சரிபார்ப்பியை (basic address validator) உருவாக்குங்கள்.
- அடிப்படைச் சரிபார்ப்பைப் பயன்படுத்தும் ஒரு ஷிப்பிங் சரிபார்ப்பியை (shipping validator) உருவாக்குங்கள்.
- அடிப்படைச் சரிபார்ப்பைப் பயன்படுத்தும் ஒரு பில்லிங் சரிபார்ப்பியை (billing validator) உருவாக்குங்கள்.
இந்த அணுகுமுறை recursion-ஐப் பயன்படுத்துவதில்லை. இது schema-வைப் பயன்படுத்துவதில்லை. இது தெளிவான, தனித்தனிச் செயல்பாடுகளைப் பயன்படுத்துகிறது.
இதன் நன்மை எளிமையானது. குறியீடு வணிகத்தைப் பிரதிபலிக்கிறது. ஒரு பில்லிங் முகவரி (billing address) என்பது ஒரு தனித்துவமான கருத்து. அதற்குத் தனியான தர்க்கம் (logic) தேவைப்படுகிறது. நீங்கள் ஒரு புதிய வகையைச் சேர்க்கும்போது, ஏற்கனவே உள்ள செயல்பாட்டை மாற்றத் தேவையில்லை. நீங்கள் ஒரு புதிய செயல்பாட்டைச் சேர்த்தால் போதும். இது உங்கள் மாற்றங்களை அந்தந்த இடத்திலேயே (local) வைத்திருக்கும்.
AI அரிதாகவே இந்த வழியைத் தேர்ந்தெடுக்கும். அது தர்க்கத்தை மையப்படுத்துகின்ற (centralizes logic) முறையையே தேர்ந்தெடுக்கும். நகல்களைத் தவிர்க்கவும் (eliminate duplication), பொதுப்படையானதாக மாற்றவும் (generalize) நமது கல்வி நமக்குக் கற்பிக்கிறது. AI அந்த கலாச்சாரத்திலிருந்தே கற்றுக்கொள்கிறது.
AI தோல்வியடையவில்லை. நாம் அதற்குப் பயிற்றுவித்த அதே பொறியியல் உள்ளுணர்வையே (engineering instincts) அது வெறும் பின்பற்றுகிறது.
மிகச்சிறந்த தீர்வு என்பது மிகக் குறைந்த வரிகளைக் கொண்ட குறியீடு அல்ல. அது உங்கள் வணிகத் துறையை (business domain) மிகவும் நேர்மையாகப் பிரதிபலிப்பதே ஆகும்.
அடுத்த முறை நீங்கள் ஒரு தீர்வை உருவாக்கும்போது, உங்களிடமே ஒரு கேள்வியைக் கேட்டுக்கொள்ளுங்கள்:
இந்த மாறுபாடு (variability) எனது குறியீட்டிலா அல்லது எனது தரவிலா?
அந்தப் பதில் உங்கள் முழு வடிவமைப்பையும் மாற்றும்.
ஆதாரம்: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb