පයිතන් යනු අර්ථකථනය කරන ලද භාෂාවක් බව තේරුම් ගැනීමට මට ලබා දී ඇත ...
කෙසේ වෙතත්, මගේ පයිතන් ප්රභව කේතය දෙස බලන විට .pyc
වින්ඩෝස් "සම්පාදිත පයිතන් ලිපිගොනු" ලෙස හඳුනාගන්නා ලිපිගොනු මට පෙනේ .
මේවා පැමිණෙන්නේ කොහෙන්ද?
java
සහ javac
.
පයිතන් යනු අර්ථකථනය කරන ලද භාෂාවක් බව තේරුම් ගැනීමට මට ලබා දී ඇත ...
කෙසේ වෙතත්, මගේ පයිතන් ප්රභව කේතය දෙස බලන විට .pyc
වින්ඩෝස් "සම්පාදිත පයිතන් ලිපිගොනු" ලෙස හඳුනාගන්නා ලිපිගොනු මට පෙනේ .
මේවා පැමිණෙන්නේ කොහෙන්ද?
java
සහ javac
.
Answers:
ඒවායේ බයිට් කේතය අඩංගු වන අතර එය පයිතන් පරිවර්තකය ප්රභවය සම්පාදනය කරයි. මෙම කේතය පසුව ක්රියාත්මක කරනු ලබන්නේ පයිතන්ගේ අථත්ය යන්ත්රය මගිනි.
පයිතන්ගේ ලියකියවිලි මෙවැනි අර්ථ දැක්වීම පැහැදිලි කරයි:
පයිතන් යනු සම්පාදනය කරන ලද භාෂාවකට වඩා අර්ථකථනය කරන ලද භාෂාවකි, නමුත් බයිට් කේත සම්පාදකයා සිටීම නිසා වෙනස බොඳ විය හැකිය. මෙයින් අදහස් කරන්නේ ක්රියාත්මක කළ හැකි දේ නිර්මාණය නොකර ප්රභව ගොනු කෙලින්ම ක්රියාත්මක කළ හැකි බවයි.
පයිතන් අර්ථකථනය කරන භාෂාවක් බව තේරුම් ගැනීමට මට ලබා දී ඇත ...
(ජනප්රිය) භාෂා මට්ටම් පිළිබඳ වරදවා වටහා ගැනීමක් මත මෙම ජනප්රිය සටහන වැරදියි, නැතහොත්, ගොඩනඟා ඇත: ඒ හා සමාන වැරැද්දක් වනුයේ “බයිබලය දැඩි ආවරණ පොතක්” යැයි පැවසීමයි. මට එම උපමාව පැහැදිලි කිරීමට ඉඩ දෙන්න ...
"බයිබලය" එය යන අර්ථය "පොතක්" වන පන්තියේ පොත් (හඳුනාගෙන සැබෑ, භෞතික වස්තූන්) ෙකොපමණද; “බයිබලයේ පිටපත්” ලෙස හඳුනාගෙන ඇති පොත්වල මූලික වශයෙන් පොදු යමක් තිබිය යුතුය (අන්තර්ගතය, විවිධ භාෂාවලින් වුවද, විවිධ පිළිගත හැකි පරිවර්තන, පාද සටහන් මට්ටම් සහ වෙනත් විවරණ සහිත) - කෙසේ වෙතත්, එම පොත් බව අංශ පිළිබඳව දහසකුත් එකක් වෙනස් කිරීමට සුවපත් ඉඩ නෑ බන්ධන, බන්ධන වර්ණ මුද්රණය කළ මුද්රණ උපමා ඕනෑම නම්, පුළුල්, ලිවිය-හැකි ගොනුවක් ආන්තිකයන් හෝ builtin පිටු සලකුණු කිරීම නොව, අංක සහ වර්ග භාවිතා අකුරු (ව) ආකාරයේ - මූලික සලකා , සහ එසේ ය.
එය බව ඉතා හැකි ය සාමාන්ය බයිබලය මුද්රණය සැබවින්ම බන්ධන වයස දොළහයි දී වනු ඇත - සියලු පසු, එය ද ස්ථාන කිහිපයක සිද්දියක් ලබා පරිච්ඡේදය-සහ-පදය සූචක සොයමින් හරහා thumbed සාමාන්යයෙන් පුරා කියවිය අදහස් හා හා පුරා කියලා පොතක්, තියෙන්නේ , යනාදිය යනාදිය, සහ හොඳ දෘ c ආවරණයක් මගින් ලබා දුන් පිටපතක් එවැනි භාවිතය යටතේ දිගු කල් පවතිනු ඇත. කෙසේ වෙතත්, මේවා ලෞකික (ප්රායෝගික) ගැටළු වන අතර, දී ඇති සත්ය පොත් වස්තුවක් බයිබලයේ පිටපතක් ද නැද්ද යන්න තීරණය කිරීමට භාවිතා කළ නොහැක: කඩදාසි මුද්රණ මුද්රණය පරිපූර්ණ ලෙස කළ හැකි ය!
ඒ හා සමානව, පයිතන් යනු භාෂා ක්රියාත්මක කිරීමේ පන්තියක් නිර්වචනය කිරීමේ අර්ථයෙන් “භාෂාවක්” වන අතර ඒවා සියල්ලම මූලික කරුණු වලට සමාන විය යුතුය (වාක්ය ඛණ්ඩය, බොහෝ සෙයින් අර්ථකථන, ඒවා පැහැදිලිවම වෙනස් වීමට ඉඩ දී ඇති කොටස් හැර) නමුත් සම්පූර්ණයෙන්ම අවසර ඇත සෑම "ක්රියාවට නැංවීමේ" විස්තරයකින්ම වෙනස් වීමට - ඔවුන් ලබා දී ඇති ප්රභව ලිපිගොනු සමඟ ඔවුන් කටයුතු කරන්නේ කෙසේද, ඒවා ප්රභවයන් සමහර පහළ මට්ටමේ ආකෘති වලට සම්පාදනය කරන්නේද යන්න (සහ, එසේ නම්, කුමන ස්වරූපය - සහ ඒවා සුරකින්නේද යන්න ඇතුළුව) සම්පාදනය කරන ලද ආකෘති, තැටියට හෝ වෙනත් තැනකට), එම ආකෘති ක්රියාත්මක කරන ආකාරය සහ යනාදිය.
සම්භාව්ය ක්රියාත්මක කිරීම වන සීපයිතන් බොහෝ විට කෙටියෙන් “පයිතන්” ලෙස හැඳින්වේ - නමුත් එය මයික්රොසොෆ්ට් හි අයන්පයිතන් (සීඑල්ආර් කේත සමඟ සම්පාදනය වන, එනම් “.නෙට්”), ජයිතන් සමඟ පැත්තෙන් නිෂ්පාදන-ගුණාත්මක ක්රියාත්මක කිරීම් කිහිපයකින් එකකි. . ඒවා සියල්ලම පයිතන් (== "පයිතන් භාෂාව ක්රියාත්මක කිරීම") මෙන්ම මතුපිටින් වෙනස් පොත් වස්තු සියල්ලම බයිබල් විය හැකිය (== "බයිබලයේ පිටපත්").
ඔබ විශේෂයෙන් CPython ගැන උනන්දුවක් දක්වන්නේ නම්: එය ප්රභව ලිපිගොනු පයිතන් විශේෂිත පහළ මට්ටමේ ආකෘතියකට ("බයිට්කෝඩ්" ලෙස හැඳින්වේ) සම්පාදනය කරයි, අවශ්ය විට එය ස්වයංක්රීයව කරයි (ප්රභව ගොනුවකට අනුරූපව බයිට් කේත ගොනුවක් නොමැති විට, හෝ බයිට්කෝඩ් ගොනුව ප්රභවයට වඩා පැරණි හෝ වෙනත් පයිතන් අනුවාදයකින් සම්පාදනය කර ඇත), සාමාන්යයෙන් බයිට්කෝඩ් ගොනු තැටියට සුරකිනු ඇත (අනාගතයේදී ඒවා නැවත සකස් කිරීම වළක්වා ගැනීමට). OTOH IronPython සාමාන්යයෙන් CLR කේතයන් (ඒවා තැටියට සුරැකීම හෝ නොකිරීම මත පදනම්ව) සහ Jython සිට JVM කේත වලට සම්පාදනය කරනු ඇත (ඒවා තැටියට සුරැකීම හෝ නොකිරීම - එය .class
සුරැකුවහොත් එය දිගුව භාවිතා කරයි ).
මෙම පහළ මට්ටමේ ආකෘති පසුව “පරිවර්තකයන්” ලෙසද හඳුන්වන සුදුසු “අථත්ය යන්ත්ර” මඟින් ක්රියාත්මක කරනු ලැබේ - සීපයිතන් වීඑම්, .නෙට් ධාවන කාලය, ජාවා වීඑම් (ජේවීඑම්), සුදුසු පරිදි.
ඉතින්, මේ අර්ථයෙන් ගත් කල (සාමාන්ය ක්රියාත්මක කිරීම් කරන්නේ කුමක්ද), පයිතන් යනු “අර්ථකථනය කරන ලද භාෂාවක්” නම්, සී # සහ ජාවා නම් පමණක් වේ: ඒ සියල්ලටම පළමුව බයිට් කේතය නිපදවීමේ සාමාන්ය ක්රියාත්මක කිරීමේ උපාය මාර්ගයක් ඇත, පසුව එය වීඑම් / පරිවර්තකය හරහා ක්රියාත්මක කරන්න .
සම්පාදනය කිරීමේ ක්රියාවලිය කෙතරම් “බර”, මන්දගාමී හා ඉහළ උත්සවයක් ද යන්න කෙරෙහි වැඩි අවධානයක් යොමු කෙරේ. CPython නිර්මාණය කර ඇත්තේ හැකි තරම් වේගයෙන්, සැහැල්ලු ලෙස, හැකි තරම් කුඩා උත්සවයක් සමඟිනි - සම්පාදකයා ඉතා සුළු දෝෂ පරික්ෂා කිරීම සහ ප්රශස්තිකරණය කරයි, එබැවින් එය වේගයෙන් හා කුඩා මතක ප්රමාණයකින් ධාවනය කළ හැකි අතර එමඟින් එය ඉඩ දෙයි අවශ්ය විටෙක ස්වයංක්රීයව හා විනිවිදභාවයෙන් යුතුව ධාවනය කරන්න, බොහෝ විට සම්පාදනයක් සිදුවන බව පරිශීලකයා දැන සිටිය යුතු නැත. ජාවා සහ සී # සාමාන්යයෙන් සම්පාදනයේදී වැඩි වැඩ ප්රමාණයක් භාරගනී (එබැවින් ස්වයංක්රීය සම්පාදනය සිදු නොකරන්න) දෝෂ වඩාත් හොඳින් පරීක්ෂා කර වඩාත් ප්රශස්තිකරණය සිදු කිරීම සඳහා. එය අළු කොරපොතු වල අඛණ්ඩ පැවැත්මක් මිස කළු හෝ සුදු තත්වයක් නොවේ,
අර්ථකථනය කරන භාෂාවක් වැනි දෙයක් නොමැත. පරිවර්තකයෙකු හෝ සම්පාදක භාවිතා යන්න හුදු පිලිබඳ තහංචිය ක්රියාත්මක කිරීම හා පරම භාෂාව සමග මොනම සම්බන්ධයක් හෝ කිසිවක් නැත.
සෑම භාෂාවක්ම පරිවර්තකයෙකු හෝ සම්පාදකයෙකු විසින් ක්රියාත්මක කළ හැකිය. භාෂාවන්ගෙන් අතිමහත් බහුතරයකට එක් එක් වර්ගයට අවම වශයෙන් එක් ක්රියාත්මක කිරීමක් ඇත. .
භාෂාවක් යනු වියුක්ත ගණිතමය නීති සමූහයකි. පරිවර්තකය යනු භාෂාවක් සඳහා ක්රියාත්මක කිරීමේ ක්රමෝපායන් කිහිපයකින් එකකි. ඔවුන් දෙදෙනා ජීවත් වන්නේ සම්පූර්ණයෙන්ම වෙනස් වියුක්ත මට්ටම්වල ය. ඉංග්රීසි ටයිප් කළ භාෂාවක් නම්, “පරිවර්ථනය කළ භාෂාව” යන වචනය වර්ග දෝෂයකි. “පයිතන් යනු අර්ථකථනය කරන ලද භාෂාවක්” යන ප්රකාශය හුදෙක් අසත්යයක් නොවේ (මක්නිසාද යත්, එම ප්රකාශය වැරදිසහගත වුවද එම ප්රකාශය අර්ථවත් වන බව අඟවන බැවිනි), එය සරලවම තේරුමක් නැත , මන්ද භාෂාවක් කිසි විටෙකත් අර්ථ දැක්විය නොහැක "අර්ථ නිරූපණය."
විශේෂයෙන්, ඔබ දැනට පවතින පයිතන් ක්රියාත්මක කිරීම් දෙස බැලුවහොත්, ඔවුන් භාවිතා කරන ක්රියාත්මක කිරීමේ උපාය මාර්ග මේවා ය:
එම ලැයිස්තුවේ ඇති සෑම ක්රියාවට නැංවීමකටම (කුඩා, ෂෙඩ්ස්කින් හෝ සයිකෝ වැනි මා සඳහන් නොකළ තවත් සමහරක්) සම්පාදකයක් ඇති බව ඔබට පෙනෙනු ඇත. ඇත්ත වශයෙන්ම, මා දන්නා පරිදි, දැනට අර්ථ නිරූපණය කර ඇති පයිතන් ක්රියාත්මක කිරීමක් නොමැත, එවැනි ක්රියාත්මක කිරීමක් සැලසුම් කර නොමැති අතර කිසි විටෙකත් එවැනි ක්රියාත්මක කිරීමක් සිදු වී නොමැත.
"අර්ථකථනය කරන ලද භාෂාව" යන යෙදුම අර්ථවත් නොවනවා පමණක් නොව, ඔබ එය "අර්ථ නිරූපණය කරන ලද භාෂාව" යන අර්ථය ලෙස අර්ථකථනය කළද, එය පැහැදිලිවම සත්ය නොවේ. කවුරුන් ඔබට එය පැවසුවද, ඔහු කතා කරන්නේ කුමක් දැයි නොදනී.
විශේෂයෙන්, .pyc
ඔබ දකින ලිපිගොනු CPython, Stackless Python හෝ Unladen Swallow විසින් නිපදවන ලද හැඹිලි බයිට් කේත ගොනු වේ.
.py
ගොනුවක් ආනයනය කරන විට මේවා නිර්මාණය කරනු ලබන්නේ පයිතන් පරිවර්තකය වන අතර, ආනයනික මොඩියුලයේ / වැඩසටහනේ “සම්පාදනය කරන ලද බයිට් කේතය” එහි අඩංගු වේ, අදහස නම් ප්රභව කේතයේ සිට බයිට් කේතයට “පරිවර්තනය” (එය කළ යුත්තේ එක් වරක් පමණි) අනුරූප ගොනුවට වඩා අළුත් import
නම් පසුකාලීනව මඟ හැරිය හැක, එබැවින් ආරම්භය ටිකක් වේගවත් කරයි. නමුත් එය තවමත් අර්ථ නිරූපණය කර ඇත..pyc
.py
පැටවීමේ මොඩියුල වේගවත් කිරීම සඳහා, පයිතන් .pyc හි මොඩියුලවල සම්පාදනය කළ අන්තර්ගතය රඳවා ගනී.
CPython එහි ප්රභව කේතය "බයිට් කේතය" ලෙස සම්පාදනය කරන අතර කාර්ය සාධන හේතූන් මත, ප්රභව ගොනුවේ වෙනස්කම් ඇති සෑම අවස්ථාවකම එය ගොනු පද්ධතියේ මෙම බයිට් කේතය රඳවා ගනී. මෙමඟින් පයිතන් මොඩියුල පැටවීම වඩා වේගවත් කරයි, මන්දයත් සම්පාදක අවධිය මඟ හැරිය හැකි බැවිනි. ඔබේ ප්රභව ගොනුව foo.py වන විට, සීපයිතන් ප්රභවයට යාබදව foo.pyc ගොනුවක බයිට් කේතය රඳවා ගනී.
පයිතන් 3 හි, සෑම පයිතන් පැකේජ නාමාවලියක් තුළම තනි බහලුමක බයිට් කේත හැඹිලි ලිපිගොනු ලිවීමට හා සෙවීමට පයිතන්ගේ ආනයන යන්ත්ර සූත්ර පුළුල් කර ඇත. මෙම නාමාවලිය __pycache__ ලෙස හැඳින්වේ.
මොඩියුල පටවන ආකාරය විස්තර කරන ප්රවාහ සටහනක් මෙන්න:
වැඩි විස්තර සඳහා:
ref: PEP3147
ref: “සම්පාදනය කරන ලද” පයිතන් ගොනු
මෙය ආරම්භකයින් සඳහා වේ,
පයිතන් ස්වයංක්රීයව ඔබේ ස්ක්රිප්ට් එක ක්රියාත්මක කිරීමට පෙර සම්පාදනය කරන ලද කේතයට සම්පාදනය කරයි.
ස්ක්රිප්ටයක් ධාවනය කිරීම ආනයනයක් ලෙස නොසැලකෙන අතර .pyc නිර්මාණය නොවේ.
උදාහරණයක් ලෙස, ඔබ විසින් විධානාවලි ගොනුවක් තිබේ නම් abc.py ආනයන තවත් මොඩියුලය බව xyz.py , ඔබ ක්රියාත්මක කරන විට abc.py , xyz.pyc xyz ආනයනය සිට නිර්මාණය කරනු ඇත, නමුත් කිසිදු abc.pyc ගොනු කරනු ඇත නිර්මාණය ඒබීසී සිට. py ආනයනය නොකෙරේ.
ආනයනය නොකරන ලද මොඩියුලයක් සඳහා .pyc ගොනුවක් සෑදීමට ඔබට අවශ්ය නම්, ඔබට py_compile
සහ compileall
මොඩියුල භාවිතා කළ හැකිය .
මෙම py_compile
මොඩියුලය අතින් කිසිදු මොඩියුලය සම්පාදනය කළ හැකිය. එක් ක්රමයක් නම් py_compile.compile
එම මොඩියුලයේ ශ්රිතය අන්තර්ක්රියාකාරීව භාවිතා කිරීමයි :
>>> import py_compile
>>> py_compile.compile('abc.py')
මෙය .pyc එක abc.py ලෙස එකම ස්ථානයට ලියනු ඇත (ඔබට එය විකල්ප පරාමිතිය සමඟ අභිබවා යා හැකිය cfile
).
ඔබට සම්පාදක මොඩියුලය භාවිතයෙන් නාමාවලියක හෝ නාමාවලිවල ඇති සියලුම ගොනු ස්වයංක්රීයව සම්පාදනය කළ හැකිය.
python -m compileall
නාමාවලි නාමය (මෙම උදාහරණයේ වත්මන් නාමාවලිය) මඟ හැරී ඇත්නම්, මොඩියුලය සොයාගත් සියල්ල සම්පාදනය කරයි sys.path
පයිතන් (අවම වශයෙන් එය වඩාත් පොදු ලෙස ක්රියාත්මක කිරීම) මුල් ප්රභවය බයිට් කේත වලට සම්පාදනය කිරීමේ රටාවක් අනුගමනය කරයි, පසුව අථත්ය යන්ත්රයක බයිට් කේත අර්ථ නිරූපණය කරයි. මෙයින් අදහස් කරන්නේ (නැවතත්, වඩාත් පොදු ක්රියාත්මක කිරීම) පිරිසිදු පරිවර්තකයෙකු හෝ පිරිසිදු සම්පාදකයෙකු නොවේ.
කෙසේ වෙතත්, මෙහි අනෙක් පැත්ත නම්, සම්පාදනය කිරීමේ ක්රියාවලිය බොහෝ දුරට සැඟවී තිබීමයි. .Pyc ලිපිගොනු මූලික වශයෙන් හැඹිලියක් ලෙස සලකනු ලැබේ; ඔවුන් දේවල් වේගවත් කරයි, නමුත් ඔබ සාමාන්යයෙන් ඒවා ගැන දැනුවත් විය යුතු නැත. ගොනු කාලය / දිනය මුද්දර මත පදනම්ව අවශ්ය විටදී එය ස්වයංක්රීයව අවලංගු කර නැවත පූරණය කරයි (ප්රභව කේතය නැවත සම්පාදනය කරයි).
මම මේ සමඟ ගැටළුවක් දුටු එකම අවස්ථාව නම්, සම්පාදනය කරන ලද බයිට් කේත ගොනුවක් කෙසේ හෝ අනාගතයේදී කාලරාමුව හොඳින් ලබා ගැනීමයි, එයින් අදහස් කළේ එය සෑම විටම ප්රභව ගොනුවට වඩා අලුත් පෙනුමක් ඇති බවයි. එය අළුත් පෙනුමක් ඇති බැවින්, ප්රභව ගොනුව කිසි විටෙකත් නැවත සකස් කර නොතිබුණි, එබැවින් ඔබ කුමන වෙනස්කම් කළත් ඒවා නොසලකා හරින ලදි ...
පයිතන්ගේ * .py ගොනුව යනු ඔබ කේත පේළි කිහිපයක් ලියන පෙළ ගොනුවකි. "Python filename.py" කියමින් මෙම ගොනුව ක්රියාත්මක කිරීමට ඔබ උත්සාහ කරන විට
මෙම විධානය මඟින් පයිතන් අතථ්ය යන්ත්රය ක්රියාත්මක කරයි. පයිතන් අතථ්ය යන්ත්රයට සංරචක 2 ක් ඇත: “සම්පාදකයා” සහ “පරිවර්තකය”. පරිවර්තකයාට * .py ගොනුවේ පෙළ කෙලින්ම කියවිය නොහැක, එබැවින් මෙම පා first ය මුලින්ම බයිට් කේතයක් බවට පරිවර්තනය කරනු ලැබේ, එය පීවීඑම් වෙත ඉලක්ක කර ඇත (දෘඩාංග නොව පීවීඑම්) . PVM මෙම බයිට් කේතය ක්රියාත්මක කරයි. * .pyc ගොනුව ද ජනනය කරනු ලැබේ, එය ක්රියාත්මක කිරීමේ කොටසක් ලෙස ඔබේ ආයාත කිරීමේ ක්රියාවලිය ගොනුවේ හෝ වෙනත් ගොනුවක සිදු කරයි.
මෙම * .pyc ගොනුව දැනටමත් ජනනය කර ඇත්නම්, ඊළඟ වතාවේ ඔබ ඔබේ * .py ගොනුව ධාවනය කරන විට / ක්රියාත්මක කරන විට, පද්ධතිය කෙලින්ම ඔබේ * .pyc ගොනුව පටවනු ලබන අතර එය කිසිදු සම්පාදනයක් අවශ්ය නොවේ (මෙය ඔබට ප්රොසෙසරයේ යන්ත්ර චක්ර කිහිපයක් ඉතිරි කරයි).
* .Pyc ගොනුව ජනනය කළ පසු, ඔබ එය සංස්කරණය නොකරන්නේ නම් * .py ගොනුවක් අවශ්ය නොවේ.
පයිතන් කේතය අදියර 2 ක් හරහා ගමන් කරයි. පළමු පියවර කේතය .pyc ගොනු වලට සම්පාදනය කරයි, එය ඇත්ත වශයෙන්ම බයිට් කේතයකි. මෙම .pyc ගොනුව (බයිට් කේතය) CPython පරිවර්තකය භාවිතයෙන් අර්ථ නිරූපණය කෙරේ. කරුණාකර මෙම සබැඳිය වෙත යොමු වන්න . මෙහිදී කේත සම්පාදනය හා ක්රියාත්මක කිරීමේ ක්රියාවලිය පහසු වචන වලින් විස්තර කෙරේ.
tldr; එය පරිවර්තනය කළ කේතයක් ප්රභව කේතයක් වන අතර එය ක්රියාත්මක කිරීම සඳහා පයිතන් වීඑම් අර්ථ නිරූපණය කරයි.
පහළ අවබෝධය : ඕනෑම වැඩසටහනක අවසාන අදියර වන්නේ දෘඩාංග / යන්ත්රය මත වැඩසටහනේ උපදෙස් ක්රියාත්මක කිරීම / ක්රියාත්මක කිරීමයි. එබැවින් ක්රියාත්මක කිරීමට පෙර අවධීන් මෙන්න:
CPU මත ක්රියාත්මක කිරීම / ක්රියාත්මක කිරීම
බයිට් කේතය යන්ත්ර කේතයට පරිවර්තනය කිරීම .
යන්ත්ර කේතය යනු පරිවර්තනයේ අවසාන අදියරයි.
CPU මත ක්රියාත්මක කළ යුතු උපදෙස් යන්ත්ර කේතයෙන් දක්වා ඇත. යන්ත්ර කේතය සෘජුවම CPU මඟින් ක්රියාත්මක කළ හැකිය .
බයිට් කේතය යන්ත්ර කේතයට පරිවර්තනය කිරීම.
ප්රභව කේතය බයිට්කෝඩ් බවට පරිවර්තනය කිරීම.
දැන් ඇත්ත කුමන්ත්රණය . මෙම ඕනෑම අදියරක් ගෙන යන විට ප්රවේශයන් දෙකක් තිබේ: කේතයක් එකවරම පරිවර්තනය කරන්න (හෝ ක්රියාත්මක කරන්න) (අකා සම්පාදනය කරන්න ) සහ කේත රේඛාව රේඛාව අනුව පරිවර්තනය කරන්න [හෝ ක්රියාත්මක කරන්න] (අකා අර්ථ නිරූපණය ).
උදාහරණයක් ලෙස, අපට ප්රභව කේතයක් බයිට්කෝ වෙත සම්පාදනය කළ හැකිය, බයිට් කේතය යන්ත්ර කේතයට සම්පාදනය කළ හැකිය, ක්රියාත්මක කිරීම සඳහා යන්ත්ර කේතය අර්ථ නිරූපණය කළ හැකිය.
භාෂාවන්හි සමහර ක්රියාත්මක කිරීම් කාර්යක්ෂමතාව සඳහා 3 වන අදියර මඟ හැරේ, එනම් ප්රභව කේතය යන්ත්ර කේතයට සම්පාදනය කර ක්රියාත්මක කිරීම සඳහා යන්ත්ර කේතය අර්ථ නිරූපණය කරයි.
සමහර ක්රියාත්මක කිරීම් සියලු මැද පියවර මඟ හැර ප්රභව කේතය ක්රියාත්මක කිරීම සඳහා කෙලින්ම අර්ථ නිරූපණය කරයි.
නූතන භාෂාවන් බොහෝ විට අර්ථ නිරූපණය සම්පාදනය කරයි .
JAVA උදාහරණයක් ලෙස, ප්රභව කේතය බයිට් කේතයට සම්පාදනය කරන්න [ජාවා ප්රභවය බයිට් කේතයක් ලෙස ගබඩා කර ඇත්තේ එලෙසය], බයිට් කේතය යන්ත්ර කේතයට සම්පාදනය කරයි [ජේවීඑම් භාවිතා කරමින්], සහ ක්රියාත්මක කිරීම සඳහා යන්ත්ර කේතය අර්ථ නිරූපණය කරන්න. [මේ අනුව ජේවීඑම් විවිධ මෙහෙයුම් පද්ධති සඳහා වෙනස් ආකාරයකින් ක්රියාත්මක වේ, නමුත් එකම ජාවා ප්රභව කේතය ජේවීඑම් ස්ථාපනය කර ඇති විවිධ මෙහෙයුම් පද්ධති මත ක්රියාත්මක කළ හැකිය.]
උදාහරණයක් ලෙස පයිතන්, ප්රභව කේතය බයිට් කේතයට සම්පාදනය කරන්න [සාමාන්යයෙන් .pyc ගොනු ලෙස පෙනේ ප්රභව කේත සමඟ ], බයිටොකේඩ් යන්ත්ර කේතයට සම්පාදනය කරන්න [පීවීඑම් වැනි අථත්ය යන්ත්රයක් මඟින් සිදු කරන අතර ප්රති result ලය ක්රියාත්මක කළ හැකි ගොනුවකි], යන්ත්රය අර්ථ නිරූපණය කරන්න කේතය / ක්රියාත්මක කිරීම සඳහා.
භාෂාවක් අර්ථ නිරූපණය කිරීම හෝ සම්පාදනය කිරීම යැයි අපට කිව හැකි විට?
එබැවින් ජාවා සහ පයිතන් අර්ථකථනය කරන භාෂා වේ.
ඒ අවුල් සහගත නිසා යාන්ත්රික කේත කිරීමට bytcode පරිවර්තනය කරන බව ද එහි තෙවන පියවර, ක සිදු විය හැකිය. බොහෝ විට මෙය සිදු කරනු ලබන්නේ අතථ්ය යන්ත්රයක් නම් මෘදුකාංගයක් භාවිතා කරමිනි . අථත්ය යාන්ත්රණයක් යන්ත්රයක් මෙන් ක්රියා කරන නිසා ව්යාකූලත්වය ඇති වේ, නමුත් එය ඇත්ත වශයෙන්ම එසේ නොවේ! අථත්ය යන්ත්ර හඳුන්වාදීම සඳහා හඳුන්වා දී ඇති අතර, ඕනෑම REAL යන්ත්රයක VM එකක් තිබීම එකම ප්රභව කේතය ක්රියාත්මක කිරීමට අපට ඉඩ සලසයි. බොහෝ වීඑම් වල භාවිතා කරන ප්රවේශය [එය තුන්වන අදියර] සම්පාදනය කරයි, එබැවින් සමහරු එය සම්පාදනය කරන ලද භාෂාවක් යැයි කියනු ඇත . වීඑම් වල වැදගත්කම සඳහා, අපි බොහෝ විට පවසන්නේ එවැනි භාෂා සම්පාදනය කර අර්ථ නිරූපණය කරන බවයි.