Strong and weak typing
கணினி நிரலாக்கத்தில், நிரலாக்க மொழிகள் பேச்சுவழக்கில் வகைப்படுத்தப்படும் பல வழிகளில் ஒன்று, மொழியின் வகை அமைப்பு அதை வலுவாக தட்டச்சு செய்கிறதா அல்லது பலவீனமாக தட்டச்சு செய்கிறதா (தளர்வாக தட்டச்சு செய்யப்படுகிறது). இருப்பினும், சொற்கள் எதைக் குறிக்கின்றன என்பதற்கான துல்லியமான தொழில்நுட்ப வரையறை எதுவும் இல்லை, மேலும் வெவ்வேறு ஆசிரியர்கள் சொற்களின் மறைமுகமான அர்த்தம் மற்றும் பிரதான நிரலாக்க மொழிகளின் வகை அமைப்புகளின் "வலிமை" யின் ஒப்பீட்டு தரவரிசை குறித்து கருத்து வேறுபாடு கொண்டுள்ளனர். இந்த காரணத்திற்காக, வகை அமைப்புகளைப் பற்றி சந்தேகத்திற்கு இடமின்றி எழுத விரும்பும் எழுத்தாளர்கள் பெரும்பாலும் "வகை பாதுகாப்பு" போன்ற குறிப்பிட்ட வெளிப்பாடுகளுக்கு ஆதரவாக "வலுவான தட்டச்சு" மற்றும் "பலவீனமான தட்டச்சு" என்ற சொற்களைத் தவிர்க்கிறார்கள். பொதுவாக, வலுவாக தட்டச்சு செய்யப்பட்ட மொழி தொகுப்பு நேரத்தில் கடுமையான தட்டச்சு விதிகளைக் கொண்டுள்ளது, இது தொகுப்பின் போது பிழைகள் மற்றும் விதிவிலக்குகள் ஏற்படுவதற்கான வாய்ப்புகள் அதிகம் என்பதைக் குறிக்கிறது. இந்த விதிகளில் பெரும்பாலானவை மாறி அசைன்மென்ட், செயல்பாட்டு ரிட்டர்ன் மதிப்புகள், செயல்முறை வாதங்கள் மற்றும் செயல்பாட்டு அழைப்பு ஆகியவற்றை பாதிக்கின்றன. மாறும் வகையில் தட்டச்சு செய்யப்பட்ட மொழிகளையும் (இயக்க நேரத்தில் வகை சரிபார்ப்பு நடைபெறும்) வலுவாக தட்டச்சு செய்யலாம். மாறும் வகையில் தட்டச்சு செய்யப்பட்ட மொழிகளில், மாறிகளை விட மதிப்புகள் வகைகளைக் கொண்டுள்ளன. பலவீனமாக தட்டச்சு செய்யப்பட்ட மொழி தளர்வான தட்டச்சு விதிகளைக் கொண்டுள்ளது மற்றும் கணிக்க முடியாத அல்லது தவறான முடிவுகளை உருவாக்கலாம் அல்லது இயக்க நேரத்தில் மறைமுகமான வகை மாற்றத்தைச் செய்யலாம். மாறும் வகையில் தட்டச்சு செய்யப்பட்ட (பொதுவாக "பலவீனமாக தட்டச்சு செய்யப்பட்ட") மொழிகளின் வக்கீல்கள் இத்தகைய கவலைகளை மிகைப்படுத்தி இருப்பதைக் கண்டறிந்து, நிலையான தட்டச்சு உண்மையில் அதிவேகமாக பெரிய சிக்கல்களையும் திறமையின்மைகளையும் அறிமுகப்படுத்துகிறது என்று நம்புகிறார்கள். ஒரு வித்தியாசமான ஆனால் தொடர்புடைய கருத்து மறைந்த தட்டச்சு ஆகும். 1974 ஆம் ஆண்டில், பி. லிஸ்கோவ் மற்றும் எஸ். சில்லெஸ் ஆகியோர் வலுவாக தட்டச்சு செய்யப்பட்ட மொழியை வரையறுத்தனர், அதில் "ஒரு பொருள் ஒரு அழைப்பு செயல்பாட்டிலிருந்து அழைக்கப்படும் செயல்பாட்டிற்கு அனுப்பப்படும் போதெல்லாம், அதன் வகை அழைக்கப்படும் செயல்பாட்டில் அறிவிக்கப்பட்ட வகையுடன் இணக்கமாக இருக்க வேண்டும்". 1977 ஆம் ஆண்டில், கே. ஜாக்சன் எழுதினார், "வலுவாக தட்டச்சு செய்யப்பட்ட மொழியில் ஒவ்வொரு தரவு பகுதியும் ஒரு தனித்துவமான வகையைக் கொண்டிருக்கும், மேலும் ஒவ்வொரு செயல்முறையும் இந்த வகைகளின் அடிப்படையில் அதன் தகவல்தொடர்பு தேவைகளைக் குறிப்பிடும்". "வலுவான" அல்லது "பலவீனமான" வரையறைகள் பல்வேறு மொழி வடிவமைப்பு முடிவுகள் "வலுவான" அல்லது "பலவீனமான" தட்டச்சு சான்றாக குறிப்பிடப்பட்டுள்ளன. இவற்றில் பல வகை பாதுகாப்பு, நினைவக பாதுகாப்பு, நிலையான வகை சரிபார்ப்பு அல்லது மாறும் வகை சரிபார்ப்பு ஆகியவற்றின் இருப்பு அல்லது இல்லாமை என மிகவும் துல்லியமாக புரிந்து கொள்ளப்படுகின்றன. "வலுவான தட்டச்சு" என்பது பொதுவாக நிரலாக்க மொழி வகைகளைப் பயன்படுத்துவதைக் குறிக்கிறது, இது குறியீட்டின் மாறிலிகளைப் பிடிக்கவும், அதன் சரியான தன்மையை உறுதிப்படுத்தவும், சில வகை நிரலாக்க பிழைகளை நிச்சயமாக விலக்கவும் செய்கிறது. எனவே இந்த இலக்குகளை அடைய பல "வலுவான தட்டச்சு" துறைகள் பயன்படுத்தப்படுகின்றன. மறைமுக வகை மாற்றங்கள் மற்றும் "வகை பஞ்சிங்" சில நிரலாக்க மொழிகள் ஒரு வகையின் மதிப்பை மற்றொரு வகையின் மதிப்பைப் போல பயன்படுத்துவதை எளிதாக்குகின்றன. இது சில நேரங்களில் "பலவீனமான தட்டச்சு" என்று விவரிக்கப்படுகிறது. எடுத்துக்காட்டாக, ஆஸ் மாருச், "நீங்கள் ஒரு நிலையான தட்டச்சு மொழியைக் கொண்டிருக்கும்போது வற்புறுத்தல் ஏற்படுகிறது, மேலும் மொழியின் தொடரியல் அம்சங்களைப் பயன்படுத்தி ஒரு வகையின் பயன்பாட்டை வேறு வகையைப் போல கட்டாயப்படுத்துகிறீர்கள் (சி இல் வெற்றிடத்தின் பொதுவான பயன்பாட்டைக் கவனியுங்கள்). வற்புறுத்தல் பொதுவாக பலவீனமான தட்டச்சு அறிகுறியாகும். மறுபுறம், மாற்றம் பொருத்தமான வகையின் ஒரு புதிய பொருளை உருவாக்குகிறது. மற்றொரு எடுத்துக்காட்டாக, ஜி. சி. சி இதை வகை-சூழ்ச்சி என்று விவரிக்கிறது, மேலும் இது கடுமையான மாற்றுப்பெயரை உடைக்கும் என்று எச்சரிக்கிறது. தட்டச்சு-தந்திரம் கம்பைலர் பொருத்தமற்ற தேர்வுகளைச் செய்ய காரணமாகும்போது எழக்கூடிய பல சிக்கல்களை தியாகோ மாசியேரா விவாதிக்கிறார். மறைமுகமான வகை மாற்றங்களை அனுமதிக்கும் மொழிகளுக்கு பல எடுத்துக்காட்டுகள் உள்ளன, ஆனால் ஒரு வகை-பாதுகாப்பான முறையில். எடுத்துக்காட்டாக, சி + + மற்றும் சி #இரண்டும் நன்கு வரையறுக்கப்பட்ட சொற்பொருள்களுடன் ஒரு மதிப்பை ஒரு வகையிலிருந்து இன்னொரு வகைக்கு மாற்ற ஆபரேட்டர்களை வரையறுக்க நிரல்களை அனுமதிக்கின்றன. ஒரு சி + + கம்பைலர் அத்தகைய மாற்றத்தை எதிர்கொள்ளும்போது, அது செயல்பாட்டை ஒரு செயல்பாட்டு அழைப்பு போல நடத்துகிறது. இதற்கு மாறாக, ஒரு மதிப்பை சி வகையாக மாற்றுவது ஒரு பாதுகாப்பற்ற செயல்பாடாகும், இது தொகுப்பாளருக்கு கண்ணுக்குத் தெரியாதது. சுட்டிகள் சில நிரலாக்க மொழிகள் சுட்டிகளை எண் மதிப்புகள் போல அம்பலப்படுத்துகின்றன, மேலும் பயனர்கள் அவற்றில் எண்கணிதத்தைச் செய்ய அனுமதிக்கின்றன. இந்த மொழிகள் சில நேரங்களில் "பலவீனமாக தட்டச்சு செய்யப்பட்டவை" என்று குறிப்பிடப்படுகின்றன, ஏனெனில் மொழியின் வகை அமைப்பைத் தவிர்க்க சுட்டிக்காட்டி எண்கணிதத்தைப் பயன்படுத்தலாம். குறிச்சொல்லப்படாத தொழிற்சங்கங்கள் சில நிரலாக்க மொழிகள் குறிச்சொல்லப்படாத தொழிற்சங்கங்களை ஆதரிக்கின்றன, இது ஒரு வகையின் மதிப்பை மற்றொரு வகையின் மதிப்பாகப் பார்க்க அனுமதிக்கிறது. லூகா கார்டெல்லியின் கட்டுரையில் வகைப்படுத்தப்பட்ட நிரலாக்கத்தில், ஒரு "வலுவான வகை அமைப்பு" என்பது சரிபார்க்கப்படாத இயக்க நேர வகை பிழையின் சாத்தியம் இல்லாத ஒன்று என்று விவரிக்கப்படுகிறது. மற்ற எழுத்துக்களில், சரிபார்க்கப்படாத ரன்-டைம் பிழைகள் இல்லாதது பாதுகாப்பு அல்லது வகை பாதுகாப்பு என்று குறிப்பிடப்படுகிறது; டோனி ஹோரின் ஆரம்பகால ஆவணங்கள் இதை சொத்து பாதுகாப்பு என்று அழைக்கிறது. நிரலாக்க மொழிகளில் மாறுபாடுகள் இந்த வரையறைகளில் சில முரண்பட்டவை, மற்றவை வெறுமனே கருத்தியல் ரீதியாக சுயாதீனமானவை, இன்னும் மற்றவை மற்ற, அதிக "தாராளவாத" (குறைவான வலுவான) வரையறைகளின் சிறப்பு நிகழ்வுகள் (கூடுதல் கட்டுப்பாடுகளுடன்). இந்த வரையறைகளுக்கு இடையே பரந்த வேறுபாடு இருப்பதால், பெரும்பாலான நிரலாக்க மொழிகளைப் பற்றிய கூற்றுக்களை அவை வலுவாகவோ அல்லது பலவீனமாகவோ தட்டச்சு செய்யப்பட்டுள்ளன என்று பாதுகாக்க முடியும். எடுத்துக்காட்டாகஃ ஜாவா, பாஸ்கல், அடா மற்றும் சி ஆகியவை மாறிகள் ஒரு அறிவிக்கப்பட்ட வகையைக் கொண்டிருக்க வேண்டும், மேலும் பிற எண்கணித வகைகளுக்கு எண்கணித மதிப்புகளின் வெளிப்படையான வார்ப்புகளைப் பயன்படுத்துவதை ஆதரிக்கின்றன. ஜாவா, சி #, அடா மற்றும் பாஸ்கல் சில நேரங்களில் சி-ஐ விட வலுவாக தட்டச்சு செய்யப்பட்டதாகக் கூறப்படுகிறது, இது ஒரு கூற்று, ஏனெனில் சி அதிக வகையான மறைமுக மாற்றங்களை ஆதரிக்கிறது, மேலும் சுட்டிக்காட்டி மதிப்புகளை வெளிப்படையாக வார்ப்பதற்கு அனுமதிக்கிறது, அதே நேரத்தில் ஜாவா மற்றும் பாஸ்கல் இல்லை. ஜாவாவில் நிலையான வகை அமைப்பைத் தவிர்ப்பதற்கான முறைகள் ஜாவா மெய்நிகர் இயந்திரத்தின் வகை அமைப்பால் கட்டுப்படுத்தப்படுவதால், பாஸ்கலை விட ஜாவா மிகவும் வலுவாக தட்டச்சு செய்யப்பட்டதாகக் கருதப்படலாம். சி #மற்றும் VB.NET ஆகியவை ஜாவாவைப் போலவே உள்ளன, இருப்பினும் அவை குறியீடு பிரிவுகளை "பாதுகாப்பற்ற சூழலில்" வெளிப்படையாக வைப்பதன் மூலம் மாறும் வகை சரிபார்ப்பை முடக்க அனுமதிக்கின்றன. பாஸ்கலின் வகை அமைப்பு "மிகவும் வலுவானது" என்று விவரிக்கப்பட்டுள்ளது, ஏனெனில் ஒரு வரிசை அல்லது சரத்தின் அளவு அதன் வகையின் ஒரு பகுதியாகும், இது சில நிரலாக்க பணிகளை மிகவும் கடினமாக்குகிறது. இருப்பினும், டெல்பி இந்த சிக்கலை சரிசெய்கிறார். சிறிய பேச்சு, ரூபி, பைதான் மற்றும் செல்ஃப் அனைத்தும் "வலுவாக தட்டச்சு செய்யப்பட்டவை", அதாவது தட்டச்சு பிழைகள் இயக்க நேரத்தில் தடுக்கப்படுகின்றன, மேலும் அவை சிறிய மறைமுக வகை மாற்றத்தைச் செய்கின்றன, ஆனால் இந்த மொழிகள் நிலையான வகைச் சரிபார்ப்பைப் பயன்படுத்துவதில்லைஃ தொகுப்பாளர் வகைக் கட்டுப்பாட்டு விதிகளைச் சரிபார்க்கவோ அல்லது செயல்படுத்தவோ இல்லை. வாத்து தட்டச்சு என்ற சொல் இப்போது இந்த குழுவில் உள்ள மொழிகளால் பயன்படுத்தப்படும் மாறும் தட்டச்சு முன்னுதாரணத்தை விவரிக்க பயன்படுத்தப்படுகிறது. மொழிகளின் லிஸ்ப் குடும்பம் அனைத்தும் இயக்க நேரத்தில் தட்டச்சு பிழைகள் தடுக்கப்படுகின்றன என்ற பொருளில் "வலுவாக தட்டச்சு செய்யப்படுகின்றன". காமன் லிஸ்ப் அல்லது க்ளோஜூர் போன்ற சில லிஸ்ப் பேச்சுவழக்குகள் பல்வேறு வகையான வகை அறிவிப்புகளை ஆதரிக்கின்றன, மேலும் சில தொகுப்பாளர்கள் (சி. எம். யு காமன் லிஸ்ப் (சி. எம். யு. சி. எல்) மற்றும் தொடர்புடையவை) இந்த அறிவிப்புகளை வகை அனுமானத்துடன் இணைந்து பல்வேறு தேர்வுகள் மற்றும் வரையறுக்கப்பட்ட வடிவங்களின் தொகுப்பு நேர வகை காசோலைகளை செயல்படுத்த பயன்படுத்துகின்றன. நிலையான எம்எல், எஃப் #, ஓ. சி. ஏ. எம். எல், ஹாஸ்கெல், கோ மற்றும் ரஸ்ட் ஆகியவை நிலையான வகை சரிபார்க்கப்படுகின்றன, ஆனால் தொகுப்பாளர் தானாகவே பெரும்பாலான மதிப்புகளுக்கு ஒரு துல்லியமான வகையை மதிப்பிடுகிறார். அசெம்பிளி மொழி மற்றும் ஃபோர்த் ஆகியவற்றை தட்டச்சு செய்யப்படாதவை என்று வகைப்படுத்தலாம். வகை சரிபார்ப்பு இல்லை; செயல்பாடுகளுக்கு வழங்கப்பட்ட தரவு பொருத்தமான வகையைச் சேர்ந்தது என்பதை உறுதிப்படுத்துவது புரோகிராமரைப் பொறுத்தது. தேவைப்படும் எந்த வகையான மாற்றமும் வெளிப்படையானது. நிரலாக்க மொழிகளின் ஒப்பீட்டையும் பார்க்கவும் தரவு வகை தட்டச்சு சிக்கல்களைப் பற்றிய முழுமையான விவாதத்தை உள்ளடக்கியது ஒப்பந்தத்தின் மூலம் வடிவமைப்பு (மறைமுக ஒப்பந்த வடிவமாக வலுவான தட்டச்சு) மறைந்த தட்டச்சு நினைவக பாதுகாப்பு வகை பாதுகாப்பு வகை அமைப்பு வலுவாக தட்டச்சு செய்யப்பட்ட அடையாளங்காட்டி குறிப்புகள் வகை அமைப்புகள்