മോഡുല-3
മോഡുല-3 എന്നത് മോഡുല-2+ എന്നറിയപ്പെടുന്ന മോഡുല-2(Modula-2) അപ്ഗ്രേഡ് ചെയ്ത പതിപ്പിനെ പിന്തുടരുന്ന ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയാണ്. ഗവേഷണ വൃത്തങ്ങളിൽ സ്വാധീനം ചെലുത്തിയപ്പോൾ (ജാവ, സി#, പൈത്തൺ എന്നീ ഭാഷകളുടെ രൂപകൽപ്പനകളെ സ്വാധീനിക്കുന്നു) പക്ഷേ ഇത് വ്യവസായങ്ങളിൽ വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നില്ല. ലൂക്കാ കാർഡല്ലി, ജെയിംസ് ഡൊണഹ്യൂ, ലൂസിലി ഗ്ലാസ്മാൻ, മിസ്റ്റർ ജോർദൻ (ഒലിവ്ട്ടി സോഫ്റ്റ്വേർ ടെക്നോളജി ലബോറട്ടറിയിൽ മുൻപ്), ഡിജിറ്റൽ എക്പ്സ് കോർപ്പറേഷൻ (ഡി.ഇ.സി) സിസ്റ്റംസ് റിസേർച്ച് സെൻറർ (എസ്ആർസി), ഒലിവ്ട്ടി റിസർച്ച് സെൻറർ (ഒ ആർ സി), ബിൽ കൽസോവ്, ഗ്രെഗ് നെൽസൻ എന്നിവർ ചേർന്ന് 1980 കളിൽ തുടക്കമിട്ടു. സിസ്റ്റംസ്-പ്രോഗ്രാമിങ് ഭാഷയുടെ കരുത്ത് നിലനിർത്തുമ്പോൾ, മൊഡുല-3 യുടെ പ്രധാന സവിശേഷതകൾ ലളിതവും സുരക്ഷിതത്വവുമാണ്. ടൈപ്പ് സുരക്ഷയുടെ പാസ്കൽ പാരമ്പര്യം നിലനിർത്താൻ മോഡുല-3 ലക്ഷ്യംവച്ച്, പ്രായോഗികമായ യഥാർത്ഥ പ്രോഗ്രാമിംഗിനുള്ള പുതിയ നിർമ്മാണങ്ങൾ അവതരിപ്പിക്കുന്നു. ജനറിക് പ്രോഗ്രാമിങ് (ടെംപ്ലേറ്റുകൾക്ക് സമാനമായ), പ്രത്യേകിച്ച് മൊഡുല-3 യുടെ പിന്തുണയിൽ മൾട്ടിത്രെഡിംഗ്(multithreading), ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യൽ, ഗാർബേജ് ശേഖരണം, ഒബ്ജക്റ്റ് ഓറിയെൻറഡ് പ്രോഗ്രാമിങ്, ഭാഗികമായി വെളിപ്പെടൽ, സുരക്ഷിതമല്ലാത്ത കോഡിൻറെ സ്പഷ്ടമായ അടയാളം എന്നിവയാണ്. മോഡുല 3 യുടെ ഡിസൈൻ ലക്ഷ്യം ആധുനികമായ, ആധികാരിക ഭാഷകളുടെ ഏറ്റവും പ്രധാനപ്പെട്ട സവിശേഷതകളെ വളരെ അടിസ്ഥാനപരമായ രൂപങ്ങളിൽ നടപ്പിലാക്കുന്ന ഭാഷയാണ്. അപകടകരമായതും സങ്കീർണവുമായ നിരവധി സവിശേഷതകളുള്ള, മൾട്ടിപ്പിൾ ഇൻഹെറിറ്റൻസ്, ഓപ്പറേറ്റർ ഓവർലോഡിംഗും പോലുള്ളവ ഒഴിവാക്കി. ചരിത്രപരമായ വികസനം1986 നവംബറിൽ മൊഡുല-3 പ്രോജക്ട് ആരംഭിച്ചു. മോഡുലയുടെ ഒരു പുതിയ പതിപ്പിന് വേണ്ടിയുളള ചില ആശയങ്ങളുമായാണ് നിക്കോളസ് വിർത്ത് മൗറീസ് വിൽക്കെസിന് എഴുതിയത്. വിൽക്സ് ഡി.ഇ.സിക്കു വേണ്ടി പ്രവർത്തിച്ചുവെങ്കിലും, ഇംഗ്ലണ്ടിൽ മടങ്ങിയെത്തിയപ്പോൾ ഒലിവറ്റിന്റെ റിസർച്ച് സ്ട്രാറ്റജി ബോർഡിൽ ചേർന്നു. വിർക് ഒബറോണിലേക്ക് ഇതിനകം മാറിയിരുന്നു, മോഡുല നാമത്തിൻറെ കീഴിൽ വിൽകസിന്റെ സംഘം വികസിപ്പിക്കൽ തുടരുന്നു.1988 ആഗസ്റ്റിൽ ഭാഷാ നിർവ്വചനം പൂർത്തിയായി. 1989 ജനുവരിയിൽ പുതുക്കിയ പതിപ്പായിരുന്നു ഉപയോഗിച്ചിരുന്നത്. ഡി.ഇ.സി(DEC) യുടെ കമ്പൈലറുകളെ ഒലിവേട്ടി ഉടൻതന്നെ പിന്തുടർന്നു, അതിനു ശേഷം മൂന്നാം കക്ഷി ഇപ്ലിമെന്റേഷൻസ് നടപ്പിലാക്കി. എസ്.ആർ.സിയുടെയും എക്രോൺ കംപ്യൂട്ടർ റിസേർച്ച് സെൻററിൻറെയും ഉപയോഗത്തിൽ Modula-2+ (ആർസി, പിന്നീട് ORC ഒലിവ്ട്ടി ഏക്കോൺ വാങ്ങിയപ്പോൾ) അക്കാലത്ത്, ഡി.സി. ഫയർഫ്ലൈ, മൾട്ടിപ്രോസസർ വാക്സ് (VAX) വർക്ക്സ്റ്റേഷൻ എന്ന ഓപ്പറേറ്റിങ് സിസ്റ്റം എഴുതിയ ഭാഷ, ഏക്രോൺ സിക്ക് വേണ്ടി എക്രോൺ കംപൈലർ എആർഎസിൽ എക്രോൺ ആർക്കിമെഡസ് എന്ന കമ്പ്യൂട്ടർ ശ്രേണിയിലെ ആർക്സ്(ARX) ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം പ്രോജക്ടിനായി ആർക്കി(ARC)ൽ മൊഡ്യുൾ എക്സിക്യൂഷൻ ലൈബ്രറി (കാമൽ) എഴുതി. പരിഷ്കരിച്ച മോഡുല-3 റിപ്പോർട്ട് പ്രസ്താവന പ്രകാരം മെസോ, സെഡാർ, ഒബ്ജക്റ്റ് പാസ്കൽ, ഒബറോൺ, യൂക്ലിഡ് മുതലായ മറ്റു ഭാഷകളും ഈ ഭാഷയെ സ്വാധീനിച്ചു.[3] 1990-കളിൽ, മോഡുല-3 പഠനഭാഷയായി ഗണ്യമായ തുക നേടിക്കൊടുത്തു. എന്നാൽ അത് വ്യാവസായിക ആവശ്യങ്ങൾക്ക് വ്യാപകമായി ഉപയോഗിച്ചില്ല. മോഡുല-3 യുടെ പിന്തുണയോടു കൂടി ഇതിലേക്ക് സംഭാവന നൽകുന്നത് ഡി.ഇ.സി. യുടെ അവസാനം കുറിക്കുകയാകാം(പ്രത്യേകിച്ച് ഡി.ഇ.സി കോംപാകിന് 1998-ൽ വിൽക്കുന്നതിനുമുമ്പ് ഇത് ഫലപ്രദമായി അറ്റകുറ്റപണി ചെയ്തില്ല). ഏത് സാഹചര്യത്തിലും, മോഡുല-3 യ്ക്ക് ലാളിത്യവും ശക്തിയും ഉണ്ടെങ്കിലും, ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ്ങിന്റെ നിയന്ത്രിത നിർവ്വഹണത്തോടുകൂടിയ ഒരു പ്രൊസീഡറൽ സംഗ്രഹിതഭാഷയ്ക്ക് ചെറിയ ആവശ്യം ഉണ്ടായിരുന്നതായി കാണുന്നു. ഒരു സമയം, സിംഎം3(CM3) എന്ന പേരിൽ ഒരു വാണിജ്യ കമ്പൈലർ കൈകാര്യം ചെയ്തു. ഡിസിക്ക് എസ്ആർസിയിൽ മുൻപുള്ള പ്രധാന നിർവ്വാഹക രിൽ ഒരാൾ പരിപാലിക്കുന്നത് വേണ്ടി ഡി.ഇ.സിയെ കോമ്പാക്കിന് വിൽക്കുന്നതിനുമുമ്പ് അയാൾ വാടകയ്ക്കെടുത്തിരുന്നു, റിയാക്ടർ എന്ന ഒരു സംയോജിത വികസന പരിതഃസ്ഥിതിയും എക്സ്റ്റെൻസിബിൾ ജാവ വെർച്വൽ മെഷിൻ (ബൈനറി, സ്രോതസ്സുകളുടെ ഫോർമാറ്റുകളിലും ലൈസൻസുള്ളതും റിയാക്റ്റർ ഉപയോഗിച്ച് നിർമ്മിക്കാൻ കഴിയുന്നതുമാണ്), ക്രിട്ടിക്കൽ മാസ്, ഇൻക്, എന്നാൽ 2000 ൽ ആ കമ്പനി പ്രവർത്തനം നിർത്തി, എൽഗോ സോഫ്റ്റ്വേർ സൊല്യൂഷൻസ് GmbH- യ്ക്ക് അതിന്റെ ഉൽപ്പന്നങ്ങളുടെ ഉറവിടങ്ങൾ നൽകി. യൂണിവേഴ്സിറ്റിയിൽ പ്രോഗ്രാമിങ് ഭാഷാ കോഴ്സുകളിൽ താരതമ്യേന പാഠ്യപദ്ധതി ഇപ്പോൾ പഠിപ്പിക്കുന്നുണ്ട്, അതിന്റെ പാഠപുസ്തകങ്ങൾ അച്ചടിക്കുന്നില്ല. അടിസ്ഥാനപരമായി മോഡുലർ 3 ന്റെ ഏക കോർപ്പറേറ്റ് പിന്തുണക്കാരൻ എൽഗോ സോഫ്റ്റ്വേർ സൊല്യൂഷൻസ് GmbH ആണ്, ഇത് ക്രിട്ടിക്കൽ മാസ്സിന്റെ ഉറവിടങ്ങളിൽ നിന്ന് പാരമ്പര്യമായി കൈമാറ്റം ചെയ്യപ്പെടുകയും, അവയിൽ നിന്നും സിംഎം3 (CM3) സംവിധാനത്തിന്റെ സ്രോതസ്സും ബൈനറി രൂപവും പുറത്തിറക്കിയിട്ടുണ്ട്. റിയാക്റ്റർ ഐഡിഇ(IDE)യ്ക്ക് നിരവധി വർഷങ്ങൾക്ക് ശേഷം ഓപ്പൺ സോഴ്സ് റിലീസ് ചെയ്തു, അതിന്റെ പുതിയ പേര് സിഎം3-ഐഡിഇ(CM3-IDE). 2002 മാർച്ചിൽ എൽഗോ മറ്റൊരു സജീവ മോഡുല-3 വിതരണത്തിന്റെ റിപ്പോസിറ്ററിയും ഏറ്റെടുത്തു, എകോളെ പോളിടെക്കനിക് ഡെ മോൺട്രിയൽ( École Polytechnique de Montréal) ആണ് പിഎം3(PM3) പരിപാലിച്ചുപോന്നത്, എന്നാൽ പിന്നീട് എച്ച്എം3(HM3)യിൽ തുടർന്നുവന്ന പ്രവർത്തനങ്ങൾ പിന്നീട് കാലഹരണപ്പെട്ടു. വാക്യഘടനഭാഷയുടെ വാക്യഘടനയുടെ ഒരു പൊതു ഉദാഹരണമാണ് ഹലോ വേൾഡ് പ്രോഗ്രാം. MODULE Main;
IMPORT IO;
BEGIN
IO.Put("Hello World\n")
END Main.
മോഡുല-3 യിലെ എല്ലാ പ്രോഗ്രാമുകളും ചുരുങ്ങിയത് ഒരു മൊഡ്യൂൾ ഫയലുകളാണെങ്കിലും, മിക്ക ഘടകങ്ങളും മൊഡ്യൂളിൽ നിന്ന് ഡാറ്റാ ആക്സസ് ചെയ്യുന്നതിന് ക്ലയന്റുകൾ ഉപയോഗിക്കുന്ന ഒരു ഇന്റർഫേസ് ഫയൽ ഉൾക്കൊള്ളുന്നു. മറ്റ് ഭാഷകളെ പോലെ മോഡുല-3 പ്രോഗ്രാമിൽ പ്രധാന മൊഡ്യൂൾ എക്സ്പോർട്ട് ചെയ്യണം, അതിന് Main.m3 എന്ന ഫയൽ, അല്ലെങ്കിൽ MODULE Foo EXPORTS Main
മൊഡ്യൂൾ ഫയൽ നാമങ്ങൾ യഥാർത്ഥ മൊഡ്യൂൾ നാമം പോലെ തന്നെ നിർദ്ദേശിക്കപ്പെട്ടിരിക്കുന്നു, പക്ഷേ, അവ വ്യത്യസ്തമാണെങ്കിൽ കമ്പൈലർ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകും. സിന്റാക്സിലെ മറ്റ് കൺവെൻഷനുകൾ, ഒരു ഇന്റർഫെയിസ് ഭാഷാ സവിശേഷതകൾമോഡുലറിറ്റിഒന്നാമതായി, എല്ലാ സമാഹാര യൂണിറ്റുകളും ഒന്നുകിൽ MODULE HelloWorld EXPORTS Main;
IMPORT IO;
BEGIN
IO.Put("Hello World\n")
END HelloWorld.
ഏതെങ്കിലും സമാഹാര യൂണിറ്റ് MODULE HelloWorld EXPORTS Main;
FROM IO IMPORT Put;
BEGIN
Put("Hello World\n")
END HelloWorld.
സാധാരണ, ഒരു ഇന്റർഫേസ് മാത്രമേ ഇറക്കുമതിചെയ്യുന്നുള്ളൂ, ഒപ്പം ഇന്റർഫേസിലെ ഇനങ്ങൾ ആക്സസ് ചെയ്യാൻ 'ഡോട്ട്' നോട്ടേഷൻ ഉപയോഗിക്കുന്നു (റെക്കോർഡിനുള്ളിൽ ഫീൽഡുകൾ ആക്സസ് ചെയ്യുന്നതിന് സമാനമാണ്). ഏതെങ്കിലും പിന്തുണാ പ്രക്രിയകൾക്കൊപ്പം ഒരു ഇന്റർഫെയിസ് ഓരോ ഡാറ്റാ ഘടനയും (റെക്കോഡ് അല്ലെങ്കിൽ ഒബ്ജക്റ്റ്) നിർവചിക്കുകയാണ് സാധാരണ ഉപയോഗം. ഇവിടെ പ്രധാന തരം 'T' എന്ന പേരിൽ ലഭിക്കും, മൊഡ്യൂളിനുളളിൽ ഇറക്കുമതി ചെയ്യുന്ന ഘടകംക്കും മറ്റ് എന്റിറ്റികൾക്കും ഇടയിൽ ഒരു നെയിം കോളീഷൻ ഉണ്ടാകുകയാണെങ്കിൽ, കരുതൽ വാക്കായി സുരക്ഷിതമല്ലാത്തതും സുരക്ഷിതമായതുംചില വിശേഷത സുരക്ഷിതമല്ലാത്തതായി കരുതപ്പെടുന്നു, അവിടെ കമ്പൈലർക്ക് തുടർന്നും ഫലമുണ്ടാവില്ല (ഉദാഹരണമായി, സി പ്രോഗ്രാമിങ് ഭാഷയിലേക്ക് ഇടപഴകുമ്പോൾ). സുരക്ഷിതമല്ലാത്ത ഒരു മൊഡ്യൂൾ ഇറക്കുമതി ചെയ്യുന്ന ഒരു ഇന്റർഫേസ് തന്നെ സുരക്ഷിതമല്ലാത്തതായിരിക്കും. സുരക്ഷിതമായ ഇന്റർഫേസ് സുരക്ഷിതമല്ലാത്ത ഒരു നിർവ്വഹണ ഘടകം വഴി എക്സ്പോർട്ടുചെയ്യാം. ബാഹ്യ ലൈബ്രറികളിലേക്ക് ഇന്റർഫേസ് ചെയ്തപ്പോൾ, സാധാരണയായി ഉപയോഗിക്കുന്നത് രണ്ട് ഇൻറർഫേസുകൾ (ഒന്ന് സുരക്ഷിതമല്ലാത്തത്, മറ്റൊന്ന് സുരക്ഷിതം). ജനറിക്സ്ഒരു സാധാരണ ഇന്റർഫെയിസും അതിനനുസരിച്ചുള്ള ജെനറിക്കൽ ഘടകവും, ഉദാഹരണത്തിനു്, ജനറിക് സ്റ്റാക്ക്(GenericStack )നിഷ്കർഷിയ്ക്കാനും, FILE: IntegerElem.i3 INTERFACE IntegerElem;
CONST Name = "Integer";
TYPE T = INTEGER;
PROCEDURE Format(x: T): TEXT;
PROCEDURE Scan(txt: TEXT; VAR x: T): BOOLEAN;
END IntegerElem.
FILE: GenericStack.ig GENERIC INTERFACE GenericStack(Element);
(* Here Element.T is the type to be stored in the generic stack. *)
TYPE
T = Public OBJECT;
Public = OBJECT
METHODS
init(): TStack;
format(): TEXT;
isEmpty(): BOOLEAN;
count(): INTEGER;
push(elm: Element.T);
pop(VAR elem: Element.T): BOOLEAN;
END;
END GenericStack.
FILE: GenericStack.mg GENERIC MODULE GenericStack(Element);
< ... generic implementation details... >
PROCEDURE Format(self: T): TEXT =
VAR
str: TEXT;
BEGIN
str := Element.Name & "Stack{";
FOR k := 0 TO self.n -1 DO
IF k > 0 THEN str := str & ", "; END;
str := str & Element.Format(self.arr[k]);
END;
str := str & "};";
RETURN str;
END Format;
< ... more generic implementation details... >
END GenericStack.
FILE: IntegerStack.i3 INTERFACE IntegerStack = GenericStack(IntegerElem) END IntegerStack.
FILE: IntegerStack.m3 MODULE IntegerStack = GenericStack(IntegerElem) END IntegerStack.
കണ്ടെത്താനുള്ള കഴിവ്മറ്റ് ഭാഷകളിലെ 'ഉൾപ്പെടുത്തൽ' സവിശേഷതകളിൽ നിന്ന് വ്യത്യസ്തമായി ഏത് ഐഡന്റിഫയർ ആണെന്നും അത് എവിടെയാണ് ഉത്ഭവിച്ചതെന്ന് കണ്ടെത്താനാവും. ഒരു കമ്പൈലേഷൻ യൂണിറ്റ് ഒരു INTERFACE A;
TYPE Color = {Black, Brown, Red, Orange, Yellow, Green, Blue, Violet, Gray, White};
END A;
MODULE B;
IMPORT A;
FROM A IMPORT Color;
VAR
aColor: A.Color; (* Uses the module name as a prefix *)
theColor: Color; (* Does not have the module name as a prefix *)
anotherColor: A.Color;
BEGIN
aColor := A.Color.Brown;
theColor := Color.Red;
anotherColor := Color.Orange; (* Can't simply use Orange *)
END B.
ഡൈനാമിക് പ്രോഗ്രാമിംഗ്റൺടൈമിൽ ഡാറ്റ അനുവദിക്കുന്നതിനെ മോഡുല-3 പിന്തുണയ്ക്കുന്നു. ഒബ്ജക്റ്റ് ഓറിയെന്റഡ്മോഡുല-3 യിൽ ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിംഗ് ടെക്നിക്കുകൾ ഉപയോഗിക്കാവുന്നതാണ്, എന്നാൽ അവയുടെ ഉപയോഗം ആവശ്യമില്ല. മോഡുല-3 (മൊഡ്യൂളുകൾ, ജനറിക്സുകൾ) യിൽ നൽകിയിരിക്കുന്ന മറ്റു പല സവിശേഷതകളും സാധാരണയായി ഒബ്ജക്റ്റ് ഓറിയന്റേഷന്റെ കഴിവു നേടാം. ഒബ്ജക്റ്റ് പിന്തുണ മനഃപൂർവ്വം അതിന്റെ ഏറ്റവും ലളിതമായ രീതിയിൽ സൂക്ഷിച്ചിരിക്കുന്നു. INTERFACE Person;
TYPE T <: Public;
Public = OBJECT
METHODS
getAge(): INTEGER;
init(name: TEXT; age: INTEGER): T;
END;
END Person.
ഇത് രണ്ട് തരങ്ങൾ, ഒരു പുതിയ VAR jim := NEW(Person.T).init("Jim", 25);
Modula-3 യുടെ MODULE Person;
REVEAL T = Public BRANDED
OBJECT
name: TEXT; (* These two variables *)
age: INTEGER; (* are private. *)
OVERRIDES
getAge := Age;
init := Init;
END;
PROCEDURE Age(self: T): INTEGER =
BEGIN
RETURN self.age;
END Age;
PROCEDURE Init(self: T; name: TEXT; age: INTEGER): T =
BEGIN
self.name := name;
self.age := age;
RETURN self;
END Init;
BEGIN
END Person.
ഒരു മൊഡ്യൂളിൽ നിന്ന് കർശനമായി യോഗ്യത നേടിയ, ബാഹ്യ ആവലംബങ്ങൾ ആവശ്യമുള്ള കുറച്ച് പ്രോഗ്രാമിംഗ് ഭാഷകളിലൊന്നാണ് മോഡുല-3, അതായത് മോഡുൾ നാമ യോഗ്യതയിൽ ഭാഷയുടെ ആവശ്യകതകൾ കാരണം മെത്തേഡ് ഓവർറൈഡിംഗ് മൂലം ഒരു ഇന്റർഫെയിസിലേക്ക് (ഏതെങ്കിലും ഇന്റർഫെയിസിൽ) പുതിയ പ്രഖ്യാപനങ്ങൾ ചേർക്കുന്നതിലൂടെ ഒരു വർക്ക് പ്രോഗ്രാമിനെ തകർക്കുവാൻ സാധ്യമല്ല. വൈരുദ്ധ്യങ്ങൾക്ക് പേരുനൽകുന്നതിനെ കുറിച്ച് യാതൊരു ആശങ്കയും കൂടാതെ, പ്രോഗ്രാമർമാർക്ക് വലിയ പ്രോഗ്രാമുകൾ ഒരേസമയം എഡിറ്റ് ചെയ്യുവാൻ ഇത് സഹായിക്കുന്നു. നിലവിലുള്ള പ്രോഗ്രാമുകളൊന്നും ഈ പ്രക്രിയയിൽ "ബ്രോക്കൺ" എന്നത്, ശക്തമായ അറിവുപയോഗിച്ച് കോർ ഭാഷാ ലൈബ്രറികൾ എഡിറ്റ് ചെയ്യുന്നത് സാധ്യമാക്കുന്നു. ഒഴിവാക്കലുകൾഒഴിവാക്കലുകൾ കൈകാര്യം ചെയ്യൽ മൾട്ടി-ത്രെഡുകൾഭാഷ മൾട്ടി-ത്രെഡ്ഡിംഗിനെയും, ത്രെഡുകൾക്കിടയിലുള്ള സമന്വയിപ്പിക്കലിനെയും പിന്തുണയ്ക്കുന്നു. ഇവിടെ ത്രെഡ് എന്ന റൺടൈം ലൈബ്രറി (m3core) ഒരു സ്റ്റാൻഡേർഡ് മോഡ്യൂൾ ആണ്, മൾട്ടി-ത്രെഡ് ആപ്ലിക്കേഷനുകളുടെ ഉപയോഗം പിന്തുണയ്ക്കുന്നു. വാസ്തവത്തിൽ, മോഡുല-3 റൺടൈം ഗാർബേജ് ശേഖരണം പോലുള്ള ആന്തരിക പ്രവർത്തനങ്ങൾക്ക് ഒരു പ്രത്യേക ത്രെഡ് ഉപയോഗപ്പെടുത്താം. സാധ്യമായ കറപ്ക്ഷന്റെയോ റേസിന്റെയോ അവസ്ഥയോ ഉള്ള അവസരങ്ങളിൽ നിന്ന് ഒന്നിലധികം ത്രെഡുകൾ സിൻക്രൊണൈസ് ചെയ്യുന്നതിനും ഡാറ്റ ഘടനകൾ സംരക്ഷിക്കുന്നതിനും അന്തർനിർമ്മിത ഡാറ്റാ ഘടന സംഗ്രഹംചുരുക്കത്തിൽ, ഭാഷാ സവിശേഷതകൾ താഴെ കൊടുക്കുന്നു:
ക്രമികമായ വികാസ സവിശേഷതകൾ രേഖപ്പെടുത്തപ്പെടുത്തി യിട്ടുള്ള അപൂർവ്വം ഭാഷകളിലൊന്നാണ് മോഡുല-3. മോഡുല 3-ൽ സിസ്റ്റം പ്രോഗ്രാമിംഗിൽ, ഭാഷാ രൂപകൽപ്പനയിലെ നാല് പ്രധാന സൂചകങ്ങൾ വളരെയധികം ചർച്ച ചെയ്യപ്പെട്ടിട്ടുണ്ട്. ഈ വിഷയങ്ങൾ: അംഗവിധാനം സംബന്ധിച്ചത് vs. നാമ സമത്വം, ഉപടൈപ്പിങ് നിയമങ്ങൾ, സാമാന്യഗതമായ മൊഡ്യൂളുകൾ, കൂടാതെ ഗുണനിലവാര ലൈബ്രറി സവിശേഷതകൾസി പ്രോഗ്രാമിങ് ഭാഷയ്ക്ക് തുടക്കം കുറിച്ച ഒരു പ്രവണത തുടരുന്നു. യഥാർത്ഥ പ്രോഗ്രാമുകൾ എഴുതാൻ ആവശ്യമായ നിരവധി സവിശേഷതകൾ ഭാഷാ നിർവ്വചനത്തിൽ നിന്നും വിട്ടുപോയി. അതിനുപകരം പല ഗുണനിലവാരമുള്ള ലൈബ്രറികളിലൂടെയും നൽകി. താഴെയുള്ള ഇന്റർഫെയിസുകളുടെ ഭൂരിഭാഗവും വിശദമായി പ്രതിപാദിച്ചിരിക്കുന്നു[4] ഗുണനിലവാരമുള്ള ലൈബ്രറികൾ താഴെ പറയുന്ന സവിശേഷതകൾ നൽകുന്നു. ഇവയെ ഗുണനിലവാരമുള്ള ഇന്റർഫേസുകൾ എന്ന് വിളിക്കുന്നു, അവ (അവ നൽകേണ്ടതുണ്ട്) ഭാഷയിൽ ആവശ്യമുള്ളവയാണ്.
ലഭ്യമായ ഇംമ്പ്ലിമെന്റേഷൻ നടപ്പിലാക്കിയ ചില ഇന്റർഫേസുകൾ, പക്ഷെ ആവശ്യമില്ല
സി(C)യിൽ ഉള്ളപോലെ, മോഡുല-3 യിൽ നടപ്പിലാക്കൽനിരവധി കമ്പൈലറുകൾ ലഭ്യമാണ്, അവയിൽ മിക്കതും ഓപ്പൺ സോഴ്സാണ്.
മോഡുല-3 യിൽ നിന്ന് നഷ്ടപ്പെടാത്ത സി-ഡാറ്റ ഘടനകളുടെ ഏക വശം യൂണിയൻ തരം ആയതിനാൽ, എല്ലാ നിലവിലുള്ള മോഡുല-3 ആക്റ്റിവേഷനുകളും സി-ടൈപ്പ് ഡിസററേഷൻ ഓഫ് അറേ, സ്ട്രറ്റുകൾ എന്നിവയുമായി നല്ല ബൈനറി കോംപാറ്റിബിളിറ്റി ലഭ്യമാക്കുന്നു. പുസ്തകങ്ങൾഈ പുസ്തകങ്ങളൊന്നും അച്ചടിയിൽ ഇല്ലെങ്കിലും, ഉപയോഗിച്ചിരി ക്കുന്ന പകർപ്പുകൾ ലഭിക്കുന്നു, ചിലത് ഡിജിറ്റൽവത്കൃതമോ ഭാഗികമായോ ഡിജിറ്റൽവൽക്കരിക്കപ്പെട്ടവയോ, അവയുടെ ചില അധ്യായങ്ങൾ വെബിൽ നിന്ന് റിസേർച്ച് റിപ്പോർട്ടുകളായി ലഭിക്കത്തക്കതോ പിൻകാലമോ ആയതോ ആയ പതിപ്പുകളാണ്.
മോഡുല-3 ഉപയോഗിക്കുന്ന പ്രോജക്ടുകൾ
മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകളിൽ ഉള്ള സ്വാധീനംമോഡുല-3 യ്ക്ക് മുഖ്യധാര സ്റ്റാൻഡേർഡ് ലഭിച്ചില്ലെങ്കിലും, ഡി.ഇ.സി.-എസ്ആർസി എം 3 വിതരണത്തിന്റെ പല ഭാഗങ്ങളും ചെയ്തു. ഏറ്റവും സ്വാധീനമുള്ള ഭാഗം നെറ്റ്വർക്ക് ഒബ്ജക്ട്സ് ലൈബ്രറിയാണ്, ഇത് യഥാർത്ഥ നെറ്റ്വർക്ക് പ്രോട്ടോക്കോൾ ഉൾപ്പെടെ, ജാവയുടെ ആദ്യ ത്തെ ആർഎംഐ (RMI) നടപ്പിലാക്കലിന്റെ അടിസ്ഥാനമായി. CORBA സ്റ്റാൻഡേർഡിൽ നിന്നും SUN IIOP അടിസ്ഥാനമാക്കിയുള്ള പ്രോട്ടോക്കോളിലേക്ക് മാറ്റുമ്പോൾ, അത് ഉപേക്ഷിച്ചു. വിദൂര വസ്തുക്കളുടെ ശേഖരണങ്ങൾ ശേഖരിക്കുന്നതിനുള്ള രേഖകൾ ഇപ്പോഴും മോഡുല 3 നെറ്റ്വർക്ക് വസ്തുക്കൾക്കായി പ്രവർത്തിച്ചിട്ടുണ്ട്. [14] പൈഥനിലെ ക്ലാസ് മെക്കാനിസവും സി++, മോഡുല-3 എന്നിവയിൽ ക്ലാസ് മെക്കാനിസവും പ്രചോദിപ്പിച്ചിട്ടുണ്ട്. [15] അവലംബം
പുറത്തേക്കുള്ള കണ്ണികൾ
|
Portal di Ensiklopedia Dunia