"പോളിമോർഫിസം (കമ്പ്യൂട്ടർ ശാസ്ത്രം)" എന്ന താളിന്റെ പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം

"Polymorphism (computer science)" എന്ന താൾ പരിഭാഷപ്പെടുത്തിയത്.
 
No edit summary
വരി 1:
{{Prettyurl|Polymorphism (Computer Science)}}
 
[[പ്രോഗ്രാമിങ് ഭാഷ|പ്രോഗ്രാമിങ് ഭാഷകളിലും]] [[ടൈപ്പ് തിയറി|ടൈപ്പ് തിയറിയിലും]] പല [[ടൈപ്പ്|ടൈപ്പുകൾക്ക്]] ഒരേ [[ഇന്റർഫേസ്]] നൽകാനുള്ള കഴിവിനെയാണ് '''പോളിമോർഫിസം''' എന്നു പറയുന്നത്.<ref>{{Cite web|url=http://www.stroustrup.com/glossary.html#Gpolymorphism|title=Bjarne Stroustrup's C++ Glossary|last=Bjarne Stroustrup|date=February 19, 2007|quote=polymorphism – providing a single interface to entities of different types.}}</ref> ഒരു ടൈപ്പിന്റെ ഓപ്പറേഷൻസ് മറ്റൊരു ടൈപ്പിലും ഉപയോഗിയ്ക്കാൻ പറ്റുമെങ്കിൽ അതിനെ '''പോളിമോർഫിക് ടൈപ്പ്''' എന്നു വിളിയ്ക്കുന്നു.<ref name="Luca">{{Cite journal|url=http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf|title=On understanding types, data abstraction, and polymorphism|last=Cardelli|first=Luca|last2=Wegner|first2=Peter|authorlink2=Peter Wegner|date=December 1985|journal=[[ACM Computing Surveys]]|publisher=[[Association for Computing Machinery|ACM]]|issue=4|doi=10.1145/6041.6042|location=New York, NY, USA|volume=17|pages=471–523|issn=0360-0300|ref=harv}}: "Polymorphic types are types whose operations are applicable to values of more than one type."</ref> പല തരത്തിലുള്ള പോളിമോർഫിസങ്ങൾ ഉണ്ട്:
 
* ''ആഡ് ഹോക്ക് പോളിമോർഫിസം'': ഒരേ ഫങ്ക്ഷന് അതിന്റെഅതിലേയ്ക്ക് ആർഗുമെന്റുകളുടെപാസ് ചെയ്യാവുന്ന ഡാറ്റയുടെ ടൈപ്പുകളുടെ കോമ്പിനേഷനുകൾ വ്യത്യാസപ്പെടുത്തി കിട്ടുന്ന വ്യത്യസ്ത ഇമ്പ്ലെമെന്റഷനുകൾ ഉണ്ടെങ്കിൽ അത് ആഡ് ഹോക്ക് പോളിമോർഫിസം ആണ്. വ്യത്യസ്ത കമ്പ്യൂട്ടർ ഭാഷകൾ ഫങ്ക്ഷൻ ഓവർലോഡിങ് എന്ന സംവിധാനം വഴി ഇതിനു കളമൊരുക്കുന്നു..
* ''പാരാമെട്രിക് പോളിമോർഫിസം'': ഒരു പ്രത്യേക ടൈപ്പിനെ മാത്രം ഉന്നം വെയ്ക്കാതെ ഏതു ടൈപ്പിലുള്ള ഡാറ്റാ ടൈപ്പും ഉപയോഗിയ്ക്കാവുന്ന രീതിയിൽ കോഡ് എഴുതുമ്പോൾ അതിനെ പാരാമെട്രിക് പോളിമോർഫിസം എന്ന് വിശേഷിപ്പിയ്ക്കുന്നു. [[ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ|ഒബ്ജക്റ്റ് ഓറിയന്റഡ്]] പ്രോഗ്രാമിങ് സമൂഹത്തിൽ ഇത് ജനറിക് പ്രോഗ്രാമിങ് എന്നും [[ഫങ്ക്ഷണൽ പ്രോഗ്രാമിങ്]] സമൂഹത്തിൽ ഇത് വെറുതെ പോളിമോർഫിസം എന്നും അറിയപ്പെടുന്നു.
* ''സബ്ടൈപ്പിംഗ്'' ഒരു ടൈപ്പ്ടൈപ്പിന്റെ നെയിംപേര് ഒരേ ക്ലാസ്സിൽ നിന്നും ഡിറൈവ് ചെയ്യപ്പെട്ട പല സബ്-ക്ലാസ്സുകളെ പ്രതിനിധീകരിയ്ക്കുമ്പോൾ.<ref name="gbooch">Booch, et al 2007 ''Object-Oriented Analysis and Design with Applications.'' Addison-Wesley.</ref>
 
 
Line 30 ⟶ 32:
Writeln(Add('Hello, ', 'World!')); (* Prints "Hello, World!" *)
end.
</source>
</source>അതുപോലെ ഡയനാമിക്കലി ടൈപ്ഡ് (ഡാറ്റയുടെ ടൈപ്പുകൾ പ്രോഗ്രാം ഓടുന്ന സമയത്തുമാത്രം ഊഹിച്ചെടുക്കുന്ന / കണക്കു കൂട്ടി എടുക്കുന്ന രീതി) പ്രോഗ്രാമിങ് ഭാഷകളിൽ ഇത് ഇനിയും സങ്കീർണമാണ്. ഇവിടെ കംപൈലർ ഒരു ഫങ്ക്ഷനിലേയ്ക്ക് ഇന്പുട് ആയി വരുന്ന എല്ലാ ഡേറ്റയുടെയും ടൈപ്പുകൾ കാണുന്നില്ല. എന്നിട്ടും ഓവർലോഡിങ്'ന്റെ പ്രഭാവം പ്രോഗ്രാം ഓടുന്ന സമയത്തു കാണാം. ഈ കാരണങ്ങൾ കൊണ്ടാണ് ഇത്തരം പോളിമോർഫിസം പ്രോഗ്രാമിങ് ഭാഷയുടെ അടിസ്ഥാന സ്വഭാവം അല്ലാതിരിയ്ക്കുന്നത്.
 
അതുപോലെ ചില ഭാഷകളിൽ പ്രോഗ്രാമർ പ്രത്യേകിച്ച് ഒന്നും സൂചിപ്പിച്ചില്ലെങ്കിലും കംപൈലർ ഒരു ഫങ്ക്ഷനിലേയ്ക്ക് ഇടുന്ന ഡാറ്റയുടെ ടൈപ്പ് സ്വന്തമായി ഊഹിച്ചു മാറ്റാറുണ്ട്. ഇതിനെ ഇംപ്ലിസിറ്റ് ടൈപ്പ് കോൺവെർഷൻ എന്നാണ് വിളിയ്ക്കുന്നത്. ഇതും ഒരു തരം ആഡ് ഹോക്ക് പോളിമോർഫിസം ആണ്..<ref name="Tucker2004">{{Cite book|url=https://books.google.com/books?id=9IFMCsQJyscC&pg=SA91-PA5|title=Computer Science Handbook, Second Edition|last=Allen B. Tucker|date=28 June 2004|publisher=Taylor & Francis|isbn=978-1-58488-360-9|pages=91–}}</ref>
Line 49 ⟶ 52:
map f Nil = Nil
map f (Cons x xs) = Cons (f x) (map f xs)
</source>
</source>ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷകളിലും ഇത് വ്യാപകമായി കാണുന്നു. സി++'ൽ ഇത് ടെമ്പ്ലേറ്റ് (template) എന്നറിയപ്പെടുന്നു. സി#'ലും ജാവ'യിലും ജനറിക്സ് (generics) എന്നും:<source lang="CSharp">
class List<T> {
class Node<T> {
Line 63 ⟶ 67:
}
</source>
ഈ ആശയം വ്യാപകമായി ഉപയോഗിച്ച് ഡിസൈൻ ചെയ്യപ്പെട്ടിട്ടുള്ള ഒരു ലൈബ്രറിയാണ് സി++'ലെ [[സ്റ്റാൻഡേർഡ് ടെമ്പ്ലേറ്റ് ലൈബ്രറി (സി++) | സ്റ്റാൻഡേർഡ് ടെമ്പ്ലേറ്റ് ലൈബ്രറി]].
 
=== സബ്ടൈപ്പിംഗ് ===
Line 99 ⟶ 104:
മുകളിലെ വിവരണങ്ങളിൽ ചില പോളിമോർഫിസം വിദ്യകൾ കംപൈൽ സമയത്തും ചിലവ റൺ ടൈമിലും ആണ് പ്രവർത്തിയ്ക്കുന്നത് എന്ന് കണ്ടല്ലോ. കംപൈൽ സമയത്തു പ്രവർത്തിയ്ക്കുന്ന പോളിമോർഫിസത്തെ സ്റ്റാറ്റിക് പോളിമോർഫിസം എന്നും റൺടൈമിൽ പ്രവർത്തിയ്ക്കുന്ന പോളിമോർഫിസത്തെ ഡൈനാമിക് പോളിമോർഫിസം എന്നും വിളിയ്ക്കുന്നു. കംപൈൽ സമയത്തു തന്നെ എല്ലാം തീർപ്പാക്കുന്നതിനാൽ സ്റ്റാറ്റിക് പോളിമോർഫിസം സാധാരണ വേഗത്തിൽ പ്രവർത്തിയ്ക്കുന്നു. അത് കൂടാതെ കോഡ് തന്നെ വായിച്ചു നോക്കി തെറ്റുകൾ കണ്ടെത്തുന്ന പ്രോഗ്രാമുകൾ (static code analysis) ഉപയോഗിച്ച് (കംപൈലർ സഹായം വേറെ) ഇതിലെ തെറ്റുകൾ തിരുത്താൻ താരതമ്യേന എളുപ്പമാണ്. അത് കൂടാതെ കംപൈലറുകൾക്കു ഉണ്ടാക്കുന്ന മെഷീൻ കോഡിൽ ആവശ്യത്തിന് വേഗക്കൂടുതൽ വിദ്യകളും (code optimization) കൊണ്ടുവരാൻ സഹായിയ്ക്കും. എന്നാൽ ഡൈനാമിക് പോളിമോർഫിസം ഉപയോഗിച്ച് കൂടുതൽ സങ്കീർണമായ ആവശ്യങ്ങൾ നേടിയെടുക്കാം.
 
== ഇവ കൂടി കാണുക ==
== References ==
 
{{reflist|30em}}
* [[സ്റ്റാൻഡേർഡ് ടെമ്പ്ലേറ്റ് ലൈബ്രറി (സി++)]]
 
== അവലംബം ==
{{reflist|30em}}
 
 
 
[[വർഗ്ഗം:പ്രോഗ്രാമിങ് ഭാഷകൾ]]
[[വർഗ്ഗം:കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ്ങ്]]
[[വർഗ്ഗം:സോഫ്റ്റ്‌വെയർ സാങ്കേതികവിദ്യ]]