Intentional programming
கணினி நிரலாக்கத்தில், நோக்கம் நிரலாக்கம் என்பது சார்லஸ் சிமோனியால் உருவாக்கப்பட்ட ஒரு நிரலாக்க முன்னுதாரணமாகும், இது மென்பொருள் மூலக் குறியீட்டில் புரோகிராமர்கள் (அல்லது பயனர்கள்) தங்கள் வேலையை கற்பனை செய்யும் போது மனதில் வைத்திருக்கும் துல்லியமான நோக்கத்தை குறியாக்கம் செய்கிறது. புரோகிராமர் சிந்திக்கும் பொருத்தமான அளவிலான சுருக்கத்தைப் பயன்படுத்துவதன் மூலம், கணினி நிரல்களை உருவாக்குவதும் பராமரிப்பதும் எளிதாகிறது. நோக்கங்கள் மற்றும் அவை எவ்வாறு இயக்கப்படுகின்றன என்பதற்கான கவலைகளைப் பிரிப்பதன் மூலம், மென்பொருள் மிகவும் மட்டுப்படுத்தப்பட்டு, மீண்டும் பயன்படுத்தக்கூடிய மென்பொருள் குறியீட்டை அனுமதிக்கிறது. மைக்ரோசாப்ட் ஆராய்ச்சியில் ஒரு குழுவை வழிநடத்திய முன்னாள் மைக்ரோசாப்ட் தலைமை கட்டிடக் கலைஞர் சார்லஸ் சிமோனியால் இன்டென்ஷனல் புரோகிராமிங் உருவாக்கப்பட்டது, இது முன்னுதாரணத்தை உருவாக்கி ஐபி (இன்டென்ஷனல் புரோகிராமிங்கிற்காக) எனப்படும் ஒருங்கிணைந்த மேம்பாட்டு சூழலை (ஐடிஇ) உருவாக்கியது, இது முன்னுதாரணத்தை நிரூபித்தது. 2000 களின் முற்பகுதியில் மைக்ரோசாப்ட் C #மற்றும். NET ஐ ஜாவா தத்தெடுப்புக்கு எதிராக வெளியிடியதால், மைக்ரோசாப்ட் இன்டென்ஷனல் புரோகிராமிங் முன்னுதாரணத்தை உற்பத்தி செய்ய வேண்டாம் என்று முடிவு செய்தது. மைக்ரோசாப்டின் ஒப்புதலுடன், சார்லஸ் சிமோனி தனது யோசனையை மைக்ரோசாப்டிலிருந்து எடுத்து அதை வணிகமயமாக்க முடிவு செய்தார். இதைத் தொடர அவர் இன்டென்ஷனல் சாப்ட்வேர் என்ற நிறுவனத்தை நிறுவினார். மைக்ரோசாப்டில் இருந்தபோது சிமோனி வாங்கிய இன்டென்ஷனல் புரோகிராமிங் காப்புரிமைகளை மைக்ரோசாப்ட் உரிமம் பெற்றது, ஆனால் இன்டென்ஷனல் சாப்ட்வேர்க்கு மூலக் குறியீடு இல்லை. மைக்ரோசாப்ட் ஆராய்ச்சியில் உருவாக்கப்பட்ட உள்நோக்க நிரலாக்கத்தின் ஒரு கண்ணோட்டம் ஜெனரேட்டிவ் புரோகிராமிங்ஃ முறைகள், கருவிகள் மற்றும் பயன்பாடுகள் என்ற புத்தகத்தின் அத்தியாயம் 11 இல் கொடுக்கப்பட்டுள்ளது. சிமோனியால் கற்பனை செய்யப்பட்டபடி, இன்டென்ஷனல் புரோகிராமிங் முன்னுதாரணத்தின் மூலம் ஒரு புதிய பயன்பாட்டை உருவாக்குவது பின்வருமாறு தொடர்கிறது. ஒரு புரோகிராமர் ஒரு குறிப்பிட்ட சிக்கல் களத்திற்கு (உற்பத்தித்திறன் பயன்பாடுகள் அல்லது ஆயுள் காப்பீடு போன்றவை) வணிக அறிவின் திட்டத்தையும் குறியீட்டையும் ஆதரிக்கும் WYSIWYG போன்ற சூழலை உருவாக்குகிறார். பயனர்கள் தங்கள் நோக்கங்களைப் பிடிக்க இந்த சூழலைப் பயன்படுத்துகிறார்கள், அவை உயர் மட்ட சுருக்கத்தில் பதிவு செய்யப்படுகின்றன. சூழல் இந்த நோக்கங்களில் செயல்பட முடியும் மற்றும் ஒரு விரிதாளைப் போலவே செயலாக்கப்பட்டு செயல்படுத்தக்கூடிய சொற்பொருள் ரீதியாக பணக்கார ஆவணங்களை உருவாக்க பயனருக்கு உதவ முடியும். பதிவுசெய்யப்பட்ட அறிவு ஒரு மதிப்பீட்டாளரால் செயல்படுத்தப்படுகிறது அல்லது இறுதி நிரலை உருவாக்க தொகுக்கப்படுகிறது. அடுத்தடுத்த மாற்றங்கள் WYSIWYG மட்டத்தில் மட்டுமே செய்யப்படுகின்றன. சொல் செயலிகள், விரிதாள்கள் அல்லது விளக்கக்காட்சி மென்பொருளுக்கு மாறாக, ஒரு உள்நோக்கச் சூழல் வெளிப்படுத்தப்பட வேண்டிய நோக்கங்களின் கட்டமைப்பு மற்றும் சொற்பொருள்களுக்கு அதிக ஆதரவைக் கொண்டுள்ளது, மேலும் பயனர் சாதிக்க முயற்சிக்கிறதை மிகவும் செழுமையாகப் பிடிக்கும் ஊடாடும் ஆவணங்களை உருவாக்க முடியும். ஒரு சிறப்பு வழக்கு என்னவென்றால், உள்ளடக்கம் நிரல் குறியீடாக இருக்கும்போது, சூழல் ஒரு புத்திசாலித்தனமான ஐடிஇ ஆகிறது. மூலக் குறியீடு சேமிப்பு மற்றும் விளக்கக்காட்சியைப் பிரிப்பது நோக்கம் நிரலாக்கத்தின் நன்மைகளுக்கான திறவுகோல் என்னவென்றால், நோக்கங்களைப் பிடிக்கும் களக் குறியீடு மூலக் குறியீடு உரைக் கோப்புகளில் சேமிக்கப்படுவதில்லை, ஆனால் மர அடிப்படையிலான சேமிப்பில் (பைனரி அல்லது எக்ஸ்எம்எல் ஆக இருக்கலாம்) சேமிக்கப்படுகிறது. சேமிப்பு வடிவமைப்புடன் சூழலை இறுக்கமாக ஒருங்கிணைப்பது தரவுத்தள இயல்பாக்கலின் சில சிறந்த அம்சங்களை மூலக் குறியீட்டிற்கு கொண்டு வருகிறது. ஒவ்வொரு வரையறைக்கும் ஒரு தனித்துவமான அடையாளத்தைக் கொடுப்பதன் மூலமும், மாறிகள் மற்றும் ஆபரேட்டர்களின் பெயரை சரியாக ஒரே இடத்தில் சேமிப்பதன் மூலமும் மீட்பு நீக்கப்படுகிறது. இது குறிப்புகளிலிருந்து அறிவிப்புகளை உள்ளார்ந்த முறையில் வேறுபடுத்துவதை எளிதாக்குகிறது, மேலும் சூழல் அவற்றை வித்தியாசமாகக் காட்ட முடியும். ஒரு நிரலில் உள்ள ஒயிட்ஸ்பேஸ் மூலக் குறியீட்டின் ஒரு பகுதியாக சேமிக்கப்படுவதில்லை, மேலும் ஒரு திட்டத்தில் பணிபுரியும் ஒவ்வொரு புரோகிராமரும் மூலத்தின் இன்டென்டேஷன் டிஸ்ப்ளேவை தேர்வு செய்யலாம். மேலும் தீவிரமான காட்சிப்படுத்தல்களில் கூட்டுக் பெட்டிகளாக அறிக்கை பட்டியல்களைக் காண்பிப்பது, நிபந்தனை வெளிப்பாடுகளை தர்க்க வாயில்களாகத் திருத்துவது அல்லது சீன மொழியில் பெயர்களை மீண்டும் வழங்குவது ஆகியவை அடங்கும். இந்த அமைப்பு சி + + மற்றும் ஜாவா போன்ற பிரபலமான மொழிகளுக்கு ஒரு இயல்பாக்கப்பட்ட மொழியைப் பயன்படுத்துகிறது, அதே நேரத்தில் சுற்றுச்சூழல் பயனர்கள் ஈபிள் மற்றும் பிற மொழிகளின் யோசனைகளுடன் கலக்கவும் பொருத்தவும் அனுமதிக்கிறது. பெரும்பாலும் டொமைன்-குறிப்பிட்ட மொழிகள் வழியாக மொழி சார்ந்த நிரலாக்கத்தின் அதே சூழலில் குறிப்பிடப்படுகிறது, மேலும் அம்சம் சார்ந்த நிரலாக்கங்கள், ஐ. பி. உற்பத்தி நிரலாக்கத்தில் சில முன்னேற்றங்களை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது. இந்த நுட்பங்கள் டெவலப்பர்கள் எந்த புதிய மொழிகளுக்கும் ஒரு முழு தொகுப்பாளர் மற்றும் எடிட்டரை எழுதுவதில் முதலீடு செய்யாமல் டொமைன்-குறிப்பிட்ட கட்டமைப்புகளைப் பிடிக்க மொழி சூழலை விரிவுபடுத்த அனுமதிக்கின்றன. நிரலாக்க எடுத்துக்காட்டு 1 முதல் 10 வரையிலான எண்களை எழுதும் ஒரு ஜாவா நிரல், ஒரு சுருள் அடைப்புக்குறிப்பு தொடரியல் பயன்படுத்தி, இப்படி இருக்கலாம்ஃ for (int i = 1; i <= 10; i + +) {System.out.println ("எண் என்பது" + i);} மேலே உள்ள குறியீடு பெரும்பாலான நிரலாக்க மொழிகளின் பொதுவான கட்டமைப்பைக் கொண்டுள்ளது, வரம்புக்குட்பட்ட வளையம், இந்த விஷயத்தில் for கட்டமைப்பால் குறிக்கப்படுகிறது. குறியீடு, தொகுக்கப்பட்டு, இணைக்கப்பட்டு, இயங்கும் போது, 10 முறை சுழலும், ஒவ்வொரு முறையும் அதை அச்சிடிய பிறகு i இன் மதிப்பை அதிகரிக்கும். ஆனால் இந்த குறியீடு புரோகிராமரின் நோக்கங்களைப் பிடிக்கவில்லை, அதாவது "1 முதல் 10 வரை எண்களை அச்சிடுவது". இந்த எளிய வழக்கில், குறியீட்டை பராமரிக்க ஒரு புரோகிராமர் கேட்டார், அது என்ன செய்ய விரும்புகிறது என்பதைக் கண்டுபிடிக்க முடியும், ஆனால் அது எப்போதும் அவ்வளவு எளிதானது அல்ல. பல வரிகள் அல்லது பக்கங்களில் பரவியிருக்கும் சுழல்களைப் புரிந்துகொள்வது மிகவும் கடினமாக இருக்கும், குறிப்பாக அசல் புரோகிராமர் தெளிவற்ற லேபிள்களைப் பயன்படுத்தினால். பாரம்பரியமாக குறியீட்டின் நோக்கத்தைக் குறிக்க ஒரே வழி மூலக் குறியீடு கருத்துகளைச் சேர்ப்பதாகும், ஆனால் பெரும்பாலும் கருத்துகள் சேர்க்கப்படுவதில்லை, அல்லது தெளிவற்றவை, அல்லது அவர்கள் முதலில் விவரித்த மூலக் குறியீட்டுடன் ஒத்திசைக்கப்படுவதில்லை. வேண்டுமென்றே நிரலாக்க அமைப்புகளில் மேற்கண்ட வளையத்தை ஒரு கட்டத்தில், "1 முதல் 10 வரை எண்களை அச்சிடுவது" போன்ற வெளிப்படையான ஒன்றாக குறிப்பிடலாம். கணினி பின்னர் மூலக் குறியீட்டை உருவாக்குவதற்கான நோக்கங்களைப் பயன்படுத்தும், இது மேலே உள்ள குறியீட்டைப் போலவே இருக்கலாம். முக்கிய வேறுபாடு என்னவென்றால், வேண்டுமென்றே நிரலாக்க அமைப்புகள் சொற்பொருள் மட்டத்தை பராமரிக்கின்றன, இது மூலக் குறியீட்டில் இல்லை, மேலும் இது பெரிய நிரல்களில் வாசிப்பை வியத்தகு முறையில் எளிதாக்கும். பெரும்பாலான மொழிகள் சில வகையான சுருக்கங்களைக் கைப்பற்றுவதற்கான வழிமுறைகளைக் கொண்டிருந்தாலும், ஐபி, மொழிகளின் லிஸ்ப் குடும்பத்தைப் போலவே, முற்றிலும் புதிய வழிமுறைகளைச் சேர்க்க அனுமதிக்கிறது. எனவே, ஒரு டெவலப்பர் சி போன்ற மொழியுடன் தொடங்கினால், கம்பைலர் டெவலப்பர்கள் அவற்றைச் சேர்க்க காத்திருக்காமல் சி + + இல் உள்ள அம்சங்களுடன் மொழியை விரிவுபடுத்த முடியும். ஒப்புமையின் மூலம், வெறும் வகுப்புகள் மற்றும் நடைமுறைகளை விட புரோகிராமர்களால் பல சக்திவாய்ந்த வெளிப்பாடு வழிமுறைகளைப் பயன்படுத்த முடியும். அடையாள ஐபி அடையாளத்தின் கருத்தாக்கத்தில் கவனம் செலுத்துகிறது. பெரும்பாலான நிரலாக்க மொழிகள் மூலக் குறியீட்டை எளிய உரையாக பிரதிநிதித்துவப்படுத்துவதால், பொருள்கள் பெயர்களால் வரையறுக்கப்படுகின்றன, மேலும் அவற்றின் தனித்துவத்தை தொகுப்பாளரால் ஊகிக்க வேண்டும். எடுத்துக்காட்டாக, வெவ்வேறு மாறிகள், நடைமுறைகள் அல்லது வகைகளுக்கு பெயரிட ஒரே குறியீட்டு பெயர் பயன்படுத்தப்படலாம். பல பக்கங்களில் பரவியிருக்கும் குறியீட்டில்-அல்லது, உலகளவில் புலப்படும் பெயர்களுக்கு, பல கோப்புகள்-எந்த சின்னம் எந்த உண்மையான பொருளைக் குறிக்கிறது என்பதைக் கூறுவது மிகவும் கடினமாக இருக்கும். ஒரு பெயர் மாற்றப்பட்டால், அது பயன்படுத்தப்படும் குறியீட்டை கவனமாக ஆராய வேண்டும். இதற்கு மாறாக, ஒரு ஐபி அமைப்பில், அனைத்து வரையறைகளும் குறியீட்டு பெயர்களை ஒதுக்குவது மட்டுமல்லாமல், பொருட்களுக்கு தனித்துவமான தனிப்பட்ட அடையாளங்காட்டிகளையும் ஒதுக்குகின்றன. இதன் பொருள் என்னவென்றால், ஐபி மேம்பாட்டு சூழலில், ஒரு மாறி அல்லது செயல்முறை பற்றிய ஒவ்வொரு குறிப்பும் ஒரு பெயர் மட்டுமல்ல-இது அசல் நிறுவனத்திற்கான இணைப்பாகும். இதன் முக்கிய நன்மை என்னவென்றால், ஒரு நிறுவனம் மறுபெயரிடப்பட்டால், நிரலில் உள்ள அனைத்து குறிப்புகளும் செல்லுபடியாகும் (குறிப்பு ஒருமைப்பாடு என்று அழைக்கப்படுகிறது). இதன் பொருள் என்னவென்றால், வெவ்வேறு பெயர்வெளிகளில் தனித்துவமான வரையறைகளுக்கு ஒரே பெயர் பயன்படுத்தப்பட்டால் (". to _ stream ()" போன்றவை), அதே பெயருடன் ஆனால் வெவ்வேறு அடையாளத்துடன் குறிப்புகள் மறுபெயரிடப்படாது, சில நேரங்களில் தற்போதைய ஆசிரியர்களில் தேடல்/மாற்றுவதில் நிகழ்கிறது. இந்த அம்சம் திட்டத்தின் பல மொழி பதிப்புகளை வைத்திருப்பதை எளிதாக்குகிறது; இது அனைத்து வரையறைகளுக்கும் ஆங்கில மொழி பெயர்களின் தொகுப்பையும், ஜப்பானிய மொழி பெயர்களின் தொகுப்பையும் கொண்டிருக்கலாம், அவை விருப்பப்படி மாற்றப்படலாம். நிரலில் உள்ள ஒவ்வொரு வரையறுக்கப்பட்ட பொருளுக்கும் ஒரு தனித்துவமான அடையாளத்தைக் கொண்டிருப்பது தானியங்கி மறுசீரமைப்பு பணிகளைச் செய்வதையும், பதிப்பு அமைப்புகளில் குறியீடு சரிபார்ப்புகளை எளிதாக்குவதையும் எளிதாக்குகிறது. எடுத்துக்காட்டாக, பல தற்போதைய குறியீடு ஒத்துழைப்பு அமைப்புகளில் (எ. கா. ஜிட்), இரண்டு புரோகிராமர்கள் அந்த முரண்பாட்டை மாற்றும்போது (அதாவது. ஒரு புரோகிராமர் ஒரு செயல்பாட்டை மறுபெயரிட்டால், மற்றொருவர் அந்த செயல்பாட்டில் உள்ள வரிகளில் ஒன்றை மாற்றினால்), பதிப்பு அமைப்பு ஒரு புரோகிராமர் ஒரு புதிய செயல்பாட்டை உருவாக்கியதாகவும், மற்றொருவர் பழைய செயல்பாட்டை மாற்றியதாகவும் நினைக்கும். ஒரு ஐபி பதிப்பு அமைப்பில், ஒரு புரோகிராமர் வெறுமனே ஒரு பெயரை மாற்றினார், மற்றொருவர் குறியீட்டை மாற்றினார் என்பது தெரியும். விரிவான ஐபி அமைப்புகளின் நிலைகள் பல நிலை விவரங்களையும் வழங்குகின்றன, இது புரோகிராமரை "பெரிதாக்க" அல்லது வெளியேற்ற அனுமதிக்கிறது. மேலே உள்ள எடுத்துக்காட்டில், புரோகிராமர் இது போன்ற ஒன்றைச் சொல்லக்கூடிய ஒரு அளவைப் பெற பெரிதாக்கலாம்ஃ <<1 முதல் 10 வரை எண்களை அச்சிடுங்கள்>> எனவே ஐபி அமைப்புகள் பெரிய அளவில் சுயமாக ஆவணப்படுத்தப்படுகின்றன, இது புரோகிராமர் ஒரு நல்ல உயர் மட்ட படத்தை வைத்திருக்க அனுமதிக்கிறது. ஒத்த படைப்புகள் உயர் மட்ட சுருக்கத்துடன் குறியீட்டை உருவாக்க ஒத்த யோசனைகளை சுரண்டும் திட்டங்கள் உள்ளன. அவற்றில் பின்வருவன அடங்கும்ஃ கருத்து நிரலாக்க மொழி சார்ந்த நிரலாக்கம் (எல்ஓபி) கள-குறிப்பிட்ட மொழி (டிஎஸ்எல்) நிரல் மாற்றம் சொற்பொருள் சார்ந்த நிரலாக்கம் (எஸ்ஓபி) கல்வியறிவு நிரலாக்க மாதிரி-உந்துதல் கட்டமைப்பு (எம்டிஏ) மென்பொருள் தொழிற்சாலை மெட்டாப்ரோகிராமிங் லிஸ்ப் (நிரலாக்க மொழி) மேலும் காண்க ஆர்ட்டெஃபாக்டூர் சொற்பொருள் தெளிவுத்திறன் மரம் கட்டமைப்பு அமைப்பு எடிட்டர் குறிப்புகள் வெளிப்புற இணைப்புகள் நோக்கம் மென்பொருள்-சார்லஸ் சிமோனியின் நிறுவனம் கணினி மொழிகளின் மரணம், நோக்கம் நிரலாக்கத்தின் பிறப்பு, சார்லஸ் சிமோனியின் தொழில்நுட்ப அறிக்கை (1995) நோக்கம் நிரலாக்கம்-மரபு யுகத்தில் கண்டுபிடிப்பு, சார்லஸ் சிமோனியின் பேச்சு (1996) சார்லஸ் சிமோனியுடன் ஒரு நேர்காணல் - மார்ட்டின் ஃபோலரின் பொது வகை கருவிகள் பற்றிய கட்டுரை உள்நோக்க நிரலாக்கத்திற்கு ஒரு எடுத்துக்காட்டு. செவ்வாய், ஜனவரி 9,2007, ஸ்காட் ரோசன்பெர்க், தொழில்நுட்ப விமர்சனம் எல்லோரும் மென்பொருளை எழுதும் நாளுக்காக காத்திருக்கிறது, தி நியூயார்க் டைம்ஸ், ஜனவரி 28,2007 நிரலாக்கம் ஒரு வகையான குறியாக்கமா?, சார்லஸ் சிமோனியால் (2005) பொருத்தமான சுருக்க நிலைகள், சார்லஸ் சிமோனியால் (2005) நிரல்களின் தகவல் உள்ளடக்கங்கள், சார்லஸ் சிமோனியால் (2005) அம்ச எக்ஸ் தீங்கு விளைவிப்பதாக கருதப்பட்டது, சார்லஸ் சிமோனியால் (2005) குறிப்புகள் மற்றும் நிரலாக்க மொழிகள், சார்லஸ் சிமோனியால் (2005) டெவலப்பரிடமிருந்து தனிப்பட்ட அவதானிப்புகள், மார்க் எடெல் (2005) மைக்ரோசாப்ட் ரிசர்ச்சின் கல்வி வீடியோ அவர்களின் நோக்கம் நிரலாக்க முறையை அறிமுகப்படுத்துகிறது (ஏ. எஸ்.