
මාර්ගෝපදේශක දර්ශනය
1. මිනිසුන් සඳහා ක්රමලේඛන භාෂා
ක්රමලේඛන භාෂා යනු මිනිසුන් පරිගණකයට කතා කරන ආකාරයයි. අපැහැදිලි නොවන ඕනෑම භාෂාවක් කතා කිරීමට පරිගණකය සතුටු වනු ඇත. අපට ඉහළ මට්ටමේ භාෂා තිබීමට හේතුව මිනිසුන්ට යන්ත්ර භාෂාව හැසිරවිය නොහැකි වීමයි. ක්රමලේඛන භාෂා වල කාරණය වන්නේ අපගේ දුප්පත්, බිඳෙනසුලු මිනිස් මොළය බොහෝ විස්තර වලින් යටපත් වීම වැළැක්වීමයි.
සමහර නිර්මාණ ගැටළු අනෙක් ඒවාට වඩා ලෞකික බව ගෘහ නිර්මාණ ශිල්පීන් දන්නවා. පැහැදිලිම සහ වඩාත්ම වියුක්ත සැලසුම් ගැටළු සමහරක් වන්නේ පාලම් සැලසුම් කිරීමයි. මෙම අවස්ථාවේදී, ඔබේ කාර්යය වන්නේ හැකි තරම් කුඩා ද්රව්ය සමඟ අවශ්ය දුර ප්රමාණය ආවරණය කිරීමයි. වර්ණාවලියේ අනෙක් කෙළවරේ පුටු නිර්මාණය වේ. පුටු නිර්මාණකරුවන් මිනිසුන්ගේ පස්ස ගැන සිතමින් කාලය ගත කළ යුතුයි.
මෘදුකාංග සංවර්ධනයට සමාන වෙනසක් ඇත. ජාලයක් හරහා දත්ත ගමන් කිරීමට ඇල්ගොරිතම සැලසුම් කිරීම පාලම් සැලසුම් කිරීම වැනි කදිම, වියුක්ත ගැටලුවකි. ක්රමලේඛන භාෂා සැලසුම් කිරීම පුටු සැලසුම් කිරීම හා සමාන වන අතර, ඔබට මානව දුර්වලතා සමඟ කටයුතු කිරීමට සිදුවේ.
මෙය අපගෙන් බොහෝ දෙනෙකුට තේරුම් ගැනීමට අපහසුය. අලංකාර ගණිතමය පද්ධති සැලසුම් කිරීම මිනිස් දුර්වලතාවලට වඩා අපෙන් බොහෝ දෙනෙකුට වඩාත් ආකර්ෂණීයයි. ගණිතමය ලාලිත්යයේ කාර්යභාරය වන්නේ යම් තරමක අලංකාරයක් වැඩසටහන් තේරුම් ගැනීමට පහසු වීමයි. නමුත් අලංකාරය එතැනින් නතර නොවේ.
මිනිසුන්ගේ දුර්වලතා සඳහා භාෂා නිර්මාණය කළ යුතු යැයි මා පවසන විට, නරක ක්රමලේඛකයින් සඳහා භාෂා නිර්මාණය කළ යුතු යැයි මම අදහස් නොකරමි. ඇත්ත වශයෙන්ම, ඔබ හොඳම ක්රමලේඛකයින් සඳහා මෘදුකාංග නිර්මාණය කළ යුතුය, නමුත් හොඳම ක්රමලේඛකයින්ට පවා ඔවුන්ගේ සීමාවන් ඇත. සියලුම විචල්යයන් පූර්ණ සංඛ්යා උපසිරසි සමඟ "x" අක්ෂරයෙන් දැක්වෙන භාෂාවකින් ක්රමලේඛනය කිරීමට කිසිවෙකු කැමති නොවනු ඇතැයි මම සිතමි.
2. ඔබ සහ ඔබේ මිතුරන් සඳහා නිර්මාණය කරන්න
ඔබ ක්රමලේඛන භාෂා ඉතිහාසය දෙස බැලුවහොත්, හොඳම භාෂා බොහොමයක් ඔවුන්ගේම කතුවරුන් විසින් භාවිතා කිරීමට නිර්මාණය කර ඇති අතර නරකම බොහෝමයක් වෙනත් පුද්ගලයින්ට භාවිතා කිරීම සඳහා නිර්මාණය කර ඇත.
වෙනත් පුද්ගලයින් සඳහා භාෂා නිර්මාණය කර ඇති විට, එය සෑම විටම නිශ්චිත පුද්ගලයින් සමූහයකි: මිනිසුන් භාෂාවේ නිර්මාතෘවරුන් තරම් බුද්ධිමත් නොවේ. ඔබට පහත් ලෙස කතා කරන දිවක් ලැබෙන්නේ මේ ආකාරයටය. කොබෝල් යනු වඩාත්ම කැපී පෙනෙන උදාහරණයයි, නමුත් බොහෝ භාෂා මෙම ආත්මයෙන් පිරී ඇත.
භාෂාව කෙතරම් ඉහළ මට්ටමක පවතීද යන්න සමඟ කිසිදු සම්බන්ධයක් නැත. C තරමක් අඩු මට්ටමක පවතී, නමුත් එය එහි කතුවරුන් විසින් භාවිතා කිරීම සඳහා නිර්මාණය කර ඇත, එබැවින් හැකර්වරුන් එයට ආදරය කරයි.
නරක ක්රමලේඛකයින් සඳහා භාෂා සැලසුම් කිරීමේ තර්කය නම් හොඳ ක්රමලේඛකයින්ට වඩා නරක ක්රමලේඛකයින් සිටින බවයි. සමහර විට මෙය එසේ විය හැකිය. නමුත් මෙම කුඩා සංඛ්යාව හොඳ ක්රමලේඛකයින් අසමානුපාතික ලෙස වැඩි මෘදුකාංගයක් ලියයි.
මගේ ප්රශ්නය නම්, ඔබ හොඳම හැකර්වරුන්ට ආයාචනා කරන භාෂාවක් නිර්මාණය කරන්නේ කෙසේද? මෙම ප්රශ්නය හොඳ ක්රමලේඛන භාෂාවක් නිර්මාණය කරන්නේ කෙසේද යන ප්රශ්නයට සමාන බව මට පෙනේ, නමුත් එය එසේ නොවේ නම්, එය අවම වශයෙන් සිත්ගන්නා ප්රශ්නයකි.
3. ක්රමලේඛකයාට හැකි තරම් පාලනයක් ලබා දෙන්න
බොහෝ භාෂාවන් (විශේෂයෙන් වෙනත් පුද්ගලයින් සඳහා නිර්මාණය කර ඇති ඒවා) නැනීන් මෙන් ක්රියා කරයි: ඔවුන් ඔබට ප්රයෝජනවත් නොවනු ඇතැයි ඔවුන් සිතන දේවල් වලින් ඔබට අනතුරු ඇඟවීමට උත්සාහ කරයි. මම ප්රතිවිරුද්ධ දෘෂ්ටිකෝණය ගන්නවා: ක්රමලේඛකයාට ඔබට හැකි තරම් පාලනයක් දෙන්න.
මම මුලින්ම ලිස්ප් ඉගෙන ගත් විට, මම වඩාත්ම කැමති වූයේ අපි සමාන ලෙස කතා කිරීමයි. ඒ වන විට මා ඉගෙන ගත් අනෙකුත් භාෂා වල භාෂාවක් තිබුනා, ඒ භාෂාවෙන් මගේ වැඩසටහන තිබුනා, ඒවා වෙනමම තිබුනා. නමුත් Lisp හි, මා විසින් ලියන ලද කාර්යයන් සහ මැක්රෝස් භාෂාවම ලියා ඇති ඒවා විය. මට අවශ්ය නම් භාෂාවම නැවත ලියන්න පුළුවන්. එය විවෘත මූලාශ්ර මෘදුකාංගවලට සමාන ආකර්ෂණයක් තිබුණි.
4. කෙටිකතාව දක්ෂතාවයේ සහෝදරියයි
සංක්ෂිප්තභාවය අවතක්සේරු කර ඇති අතර පිළිකුලට පවා ලක් වේ. නමුත් ඔබ හැකර්වරුන්ගේ හදවත් දෙස බැලුවහොත්, ඔවුන් සැබවින්ම කෙටිකතාවට කැමති බව ඔබට පෙනෙනු ඇත. APL හි, කේත පේළි කිහිපයකින් ඔවුන්ට පුදුමාකාර දේවල් කළ හැකි ආකාරය ගැන හැකර්වරුන් ආදරයෙන් කතා කිරීම ඔබ කී වතාවක් අසා තිබේද? මම හිතන්නේ ඇත්තටම බුද්ධිමත් අය ඇත්තටම මේ ගැන අවධානය යොමු කිරීමට කැමතියි.
වැඩසටහන් කෙටි කරන ඕනෑම දෙයක් පාහේ හොඳ දෙයක් බව මම විශ්වාස කරමි. පුස්තකාල කාර්යයන් රාශියක් තිබිය යුතුය, ව්යංග විය හැකි සියල්ල එසේ විය යුතුය; වාක්ය ඛණ්ඩය වඩාත් සංක්ෂිප්ත විය යුතුය; ආයතනවල නම් පවා කෙටි විය යුතුය.
සහ වැඩසටහන් කෙටි විය යුතු පමණක් නොවේ. අත්පොත් ද කෙටි විය යුතුය. අත්පොත්වල හොඳ කොටසක් පැහැදිලි කිරීම්, වියාචන, අනතුරු ඇඟවීම් සහ විශේෂ අවස්ථා වලින් පිරී ඇත. ඔබට අත්පොත කෙටි කිරීමට අවශ්ය නම්, හොඳම විකල්පය වන්නේ එතරම් පැහැදිලි කිරීමක් අවශ්ය වන භාෂාව නිවැරදි කිරීමයි.
5. හැක් කිරීම යනු කුමක්දැයි හඳුනා ගන්න
හැක් කිරීම ගණිතය හෝ අවම වශයෙන් විද්යාවට සමාන දෙයක් වීමට බොහෝ අය කැමතියි. මම හිතන්නේ Hacking කියන්නේ architecture වගේ දෙයක්. වාස්තු විද්යාව යනු භෞතික විද්යාවයි, එහි ගෘහ නිර්මාණ ශිල්පියෙකුට නොවැටෙන ගොඩනැගිල්ලක් සැලසුම් කිරීමට අවශ්ය වේ, නමුත් ගෘහ නිර්මාණ ශිල්පියෙකුගේ සැබෑ ඉලක්කය විශිෂ්ට ගොඩනැගිල්ලක් නිර්මාණය කිරීම මිස ස්ථිතික ක්ෂේත්රයේ සොයාගැනීම් නොවේ.
හැකර්වරුන් කැමති වන්නේ විශිෂ්ට වැඩසටහන් නිර්මාණය කිරීමයි. ඒ වගේම මම හිතන්නේ, අවම වශයෙන් අපේම සිතුවිලි තුළ, විශිෂ්ට වැඩසටහන් ලිවීම අපූරු දෙයක් බව අප මතක තබා ගත යුතුය, එම කාර්යය පහසුවෙන් විද්යාත්මක පත්රිකාවල සාමාන්ය බුද්ධිමය මුදල් බවට පරිවර්තනය නොවන විට පවා. බුද්ධිමය දෘෂ්ටි කෝණයකින්, ක්රමලේඛකයින් ප්රිය කරන භාෂාවක් නිර්මාණය කිරීම මෙන්ම ඔබට පත්රිකාවක් ප්රකාශයට පත් කළ හැකි අදහසක් මූර්තිමත් වන භයානක එකක් නිර්මාණය කිරීම වැදගත් වේ.
විවෘත ගැටළු
1. විශාල පුස්තකාල සංවිධානය කරන්නේ කෙසේද?
පුස්තකාල ක්රමලේඛන භාෂාවල වැදගත් කොටසක් බවට පත්වෙමින් තිබේ. ඒවා ඉතා විශාල වන අතර එය භයානක විය හැකිය. එම කාර්යය ඔබම ලිවීමට වඩා ඔබට අවශ්ය දේ කරන පුස්තකාලයක ශ්රිතයක් සොයා ගැනීමට වැඩි කාලයක් ගත වන්නේ නම්, එවිට සියලුම කේතය ඔබගේ අත්පොත ඝන බවට පත් කිරීම හැර වෙන කිසිවක් නොකරයි. (සංකේත අත්පොත් මෙයට උදාහරණයක් විය.) එබැවින් අපට පුස්තකාල සංවිධානයේ ගැටලුව විසඳීමට සිදුවේ. ඉතා මැනවින්, ක්රමලේඛකයාට සුදුසු පුස්තකාල කාර්යය කුමක්දැයි අනුමාන කළ හැකි වන පරිදි ඒවා සැලසුම් කරන්න.
2. උපසර්ග වාක්ය ඛණ්ඩයට මිනිසුන් ඇත්තටම බයද?
මම වසර ගණනාවක් තිස්සේ ඒ ගැන සිතමින් සිටි නමුත් තවමත් පිළිතුර නොදන්නා අර්ථයෙන් මෙය විවෘත ගැටලුවකි. උපසර්ග වාක්ය ඛණ්ඩය මට සම්පූර්ණයෙන්ම ස්වාභාවික ලෙස පෙනේ, සමහර විට එය ගණිතයේ භාවිතය සඳහා හැර. නමුත් Lisp ගේ බොහෝ අප්රසාදයට හේතු වී ඇත්තේ නුහුරු නුපුරුදු වාක්ය ඛණ්ඩය නිසා විය හැක... සත්ය නම් අප ඒ ගැන යමක් කළ යුතුද යන්න වෙනම කාරණයකි.
3. සේවාදායක මෘදුකාංග සඳහා ඔබට අවශ්ය කුමක්ද?
ඉදිරි වසර විස්සක කාලය තුළ ලියා ඇති බොහෝ යෙදුම් වෙබ් යෙදුම් වනු ඇතැයි මම සිතමි, එනම් වැඩසටහන් සේවාදායකයක පිහිටා ඇති අතර වෙබ් බ්රව්සරයක් හරහා ඔබ සමඟ සන්නිවේදනය කරනු ඇත. තවද එවැනි යෙදුම් ලිවීමට අපට අලුත් දේවල් අවශ්ය වේ.
එයින් එකක් නම් සේවාදායක යෙදුම් මුදා හැරීමේ නව ක්රමයක් සඳහා සහාය වීමයි. ඩෙස්ක්ටොප් මෘදුකාංග වැනි වසරකට විශාල නිකුතු එකක් හෝ දෙකක් වෙනුවට, කුඩා වෙනස්කම් මාලාවකින් සේවාදායක මෘදුකාංග නිකුත් කරනු ඇත. ඔබට දිනකට නිකුත් කිරීම් පහක් හෝ දහයක් තිබිය හැක. තවද සෑම කෙනෙකුටම සෑම විටම නවතම අනුවාදය ඇත.
නඩත්තු කළ හැකි පරිදි වැඩසටහන් නිර්මාණය කරන්නේ කෙසේදැයි ඔබ දන්නවාද? සේවාදායක මෘදුකාංග වෙනස් කළ හැකි පරිදි නිර්මාණය කළ යුතුය. ඔබට එය පහසුවෙන් වෙනස් කිරීමට හැකි විය යුතුය, නැතහොත් අවම වශයෙන් සුළු වෙනසක් අදහස් කරන්නේ කුමක්ද සහ වැදගත් වන්නේ කුමක්ද යන්න දැන සිටිය යුතුය.
සේවාදායක මෘදුකාංගවල ප්රයෝජනවත් විය හැකි තවත් දෙයක් නම්, හදිසියේම, බෙදා හැරීමේ අඛණ්ඩතාවයි. වෙබ් යෙදුමක ඔබට එවැනි දෙයක් භාවිතා කළ හැකිය වෙබ් සැසිවල අස්ථායී ලෝකයේ දිනචරියාවන්ගේ බලපෑම ලබා ගැනීමට. විශේෂාංගය ඉතා මිල අධික නොවේ නම් සැපයුම අඛණ්ඩව පැවතීම වටී.
4. සොයා ගැනීමට ඉතිරිව ඇති නව සාරාංශ මොනවාද?
එම බලාපොරොත්තුව කෙතරම් සාධාරණදැයි මට විශ්වාස නැත, නමුත් පුද්ගලිකව මම සැබවින්ම නව වියුක්තයක් සොයා ගැනීමට කැමතියි - පළමු පන්තියේ ශ්රිත හෝ පුනරාවර්තනය හෝ අවම වශයෙන් පෙරනිමි පරාමිතීන් ලෙස අර්ථවත් විය හැකි දෙයක්. සමහර විට මෙය කළ නොහැකි සිහිනයක් විය හැකිය. එවැනි දේවල් බොහෝ විට අනාවරණය නොවේ. නමුත් මම බලාපොරොත්තු සුන් කරන්නේ නැහැ.
එතරම් නොදන්නා රහස්
1. ඔබට අවශ්ය ඕනෑම භාෂාවක් භාවිතා කළ හැක
මීට පෙර, යෙදුම් නිර්මාණය කිරීම ඩෙස්ක්ටොප් මෘදුකාංග නිර්මාණය කිරීමයි. තවද ඩෙස්ක්ටොප් මෘදුකාංගයේ මෙහෙයුම් පද්ධතිය මෙන් එකම භාෂාවෙන් යෙදුම් ලිවීමට විශාල නැඹුරුවක් ඇත. එබැවින් වසර දහයකට පෙර, සාමාන්යයෙන් මෘදුකාංග ලිවීම යනු C හි මෘදුකාංග ලිවීමයි. අවසානයේ සම්ප්රදාය විකාශනය විය: යෙදුම් අසාමාන්ය භාෂාවලින් ලිවිය යුතු නැත. තවද මෙම සම්ප්රදාය මෙතරම් කාලයක් පරිණාමය වී ඇති අතර කළමනාකරුවන් සහ ව්යාපාර ධනපතියන් වැනි තාක්ෂණික නොවන පුද්ගලයින් ද එය ඉගෙන ගෙන ඇත.
සේවාදායක පැත්තේ මෘදුකාංග මෙම ආකෘතිය සම්පූර්ණයෙන්ම විනාශ කරයි. සේවාදායක පැත්තේ මෘදුකාංග සමඟ, ඔබට අවශ්ය ඕනෑම භාෂාවක් භාවිතා කළ හැකිය. කිසිවෙකු තවමත් මෙය තේරුම් ගෙන නැත (විශේෂයෙන් කළමනාකරුවන් සහ ව්යාපාර ධනවාදීන්). නමුත් සමහර හැකර්වරු එසේ කරති, ඒ නිසා අපට Perl සහ Python වැනි ඉන්දියානු භාෂා ගැන අසන්නට ලැබේ. අපට Perl සහ Python ගැන අසන්නට නොලැබේ, මන්ද මිනිසුන් යෙදුම් ලිවීමට ඒවා භාවිතා කරයි. Windows.
ක්රමලේඛන භාෂා නිර්මාණය ගැන උනන්දුවක් දක්වන පුද්ගලයින්, අපගේ වැඩ සඳහා විභව ප්රේක්ෂක පිරිසක් සිටින බව මෙයින් අදහස් කරන්නේ කුමක්ද?
2. වේගය පැමිණෙන්නේ පැතිකඩකරුවන්ගෙන්
භාෂා සංවර්ධකයින්, හෝ අවම වශයෙන් භාෂා ක්රියාත්මක කරන්නන්, වේගවත් කේත ජනනය කරන සම්පාදක ලිවීමට කැමතියි. නමුත් මම හිතන්නේ එය පරිශීලකයින් සඳහා භාෂා වේගවත් කරන්නේ නැහැ. වේගය රඳා පවතින්නේ බාධක කිහිපයක් මත පමණක් බව Knuth බොහෝ කලකට පෙර සඳහන් කළේය. තවද වැඩසටහනක් වේගවත් කිරීමට උත්සාහ කළ ඕනෑම අයෙකු දන්නවා ඔබට බාධකය කොතැනදැයි අනුමාන කළ නොහැකි බව. Profiler යනු පිළිතුරයි.
භාෂා සංවර්ධකයින් වැරදි ගැටළුව විසඳයි. පරිශීලකයින්ට ඉක්මනින් ධාවනය කිරීමට මිණුම් සලකුණු අවශ්ය නොවේ. ඔවුන්ගේ වැඩසටහනේ කුමන කොටස් නැවත ලිවිය යුතුද යන්න පෙන්විය හැකි භාෂාවක් ඔවුන්ට අවශ්ය වේ. මෙම අවස්ථාවේදී, ප්රායෝගිකව වේගය අවශ්ය වේ. එබැවින් භාෂා ක්රියාත්මක කරන්නන් සම්පාදකය ප්රශස්ත කිරීම සඳහා වැය කරන කාලයෙන් අඩක් සහ හොඳ පැතිකඩක් ලිවීමට වැය කරන්නේ නම් වඩා හොඳය.
3. ඔබට ඔබේ භාෂාව පරිණාමය කරන යෙදුමක් අවශ්යයි
මෙය අවසාන සත්යය නොවිය හැකි නමුත්, ඒවා භාවිතා කරන ලද යෙදුම් සමඟ හොඳම භාෂා පරිණාමය වූ බව පෙනේ. C ලියා ඇත්තේ පද්ධති ක්රමලේඛනය අවශ්ය අය විසිනි. Lisp නිර්මාණය කර ඇත්තේ සංකේතාත්මක අවකලනය සඳහා වන අතර, McCarthy ආරම්භ කිරීමට කොතරම් උනන්දු වූවාද කිවහොත්, ඔහු 1960 දී පළමු Lisp පත්රයේ අවකලනය කිරීමේ වැඩසටහන් ලිවීමට පවා පටන් ගත්තේය.
ඔබගේ යෙදුම නව ගැටළු කිහිපයක් විසඳන්නේ නම් මෙය විශේෂයෙන් හොඳය. මෙය ක්රමලේඛකයින්ට අවශ්ය නව විශේෂාංග ලබා ගැනීමට ඔබගේ භාෂාව තල්ලු කරයි. පුද්ගලිකව, මම සේවාදායක යෙදුම් සඳහා හොඳ භාෂාවක් ලිවීමට උනන්දු වෙමි.
[සාකච්ඡාව අතරතුර, ගයි ස්ටීල් මෙම කරුණ ද ඉදිරිපත් කළේය, ඔබේ භාෂාව සම්පාදක ලිවීමට නිර්මාණය කර ඇත්නම් මිස, ඔබේ භාෂාව සඳහා සම්පාදකයක් ලිවීමෙන් යෙදුම සමන්විත නොවිය යුතු බව පැවසීය.]
4. එක් වරක් වැඩසටහන් ලිවීම සඳහා භාෂාව සුදුසු විය යුතුය.
එක්-ෂොට් වැඩසටහනක් යනු කුමක්දැයි ඔබ දන්නවා: එය ඔබට යම් සීමිත ගැටලුවක් ඉක්මනින් විසඳා ගැනීමට අවශ්ය වූ විටය. ඔබ වටපිට බැලුවහොත්, එක් වරකට ආරම්භ වූ බරපතල වැඩසටහන් රාශියක් ඔබට හමුවනු ඇතැයි මම විශ්වාස කරමි. බොහෝ වැඩසටහන් එකවර ආරම්භ කළහොත් මම පුදුම නොවන්නෙමි. මේ අනුව, ඔබට පොදුවේ මෘදුකාංග ලිවීමට සුදුසු භාෂාවක් නිර්මාණය කිරීමට අවශ්ය නම්, එය එකවර වැඩසටහන් ලිවීමට ද සුදුසු විය යුතුය, මන්ද මෙය බොහෝ වැඩසටහන් වල ආරම්භක අදියරයි.
5. සින්ටැක්ස් අර්ථ ශාස්ත්රයට සම්බන්ධයි
වාක්ය ඛණ්ඩය සහ අර්ථ ශාස්ත්රය බොහෝ වෙනස් දේවල් බව සම්ප්රදායිකව විශ්වාස කෙරේ. මෙය කම්පනයට පත් විය හැකි නමුත් එය නොවේ. මම හිතන්නේ ඔබේ වැඩසටහන තුළ ඔබට සාක්ෂාත් කර ගැනීමට අවශ්ය දේ ඔබ එය ප්රකාශ කරන ආකාරය හා සම්බන්ධයි.
මම මෑතකදී රොබට් මොරිස් සමඟ කතා කළ අතර, ඉන්ෆික්ස් සින්ටැක්ස් සහිත භාෂාවල ජයග්රහණය සඳහා ක්රියාකරු අධි බර පැටවීම විශාල වාසියක් බව ඔහු සඳහන් කළේය. උපසර්ග වාක්ය ඛණ්ඩ සහිත භාෂාවලින්, ඔබ අර්ථ දක්වන ඕනෑම කාර්යයක් ඇත්ත වශයෙන්ම ක්රියාකරු වේ. ඔබට ඔබ විසින් සාදන ලද නව ආකාරයේ අංකයක් එක් කිරීමට අවශ්ය නම්, එය එක් කිරීමට ඔබට සරලව නව ශ්රිතයක් අර්ථ දැක්විය හැක. ඔබ මෙය infix සින්ටැක්ස් සහිත භාෂාවකින් කරන්නේ නම්, අධික බර සහිත ක්රියාකරුවෙකු භාවිතා කිරීම සහ ශ්රිතයක් ඇමතීම අතර විශාල වෙනසක් ඇති බව ඔබට පෙනෙනු ඇත.
කාලයත් සමඟ නැවත පැමිණෙන අදහස්
1. නව ක්රමලේඛන භාෂා
1970 දශකය දෙස ආපසු හැරී බලන විට, නව ක්රමලේඛන භාෂා සංවර්ධනය කිරීම විලාසිතාවක් විය. මෙය දැන් එසේ නොවේ. නමුත් සර්වර් මෘදුකාංගය නැවතත් නව භාෂා නිර්මාණය කිරීමේ විලාසිතා ගෙන එනු ඇතැයි මම විශ්වාස කරමි. සේවාදායක මෘදුකාංග සමඟ ඔබට අවශ්ය ඕනෑම භාෂාවක් භාවිතා කළ හැකිය, එබැවින් යමෙකු අනෙක් ඒවාට වඩා හොඳ යැයි පෙනෙන භාෂාවක් නිර්මාණය කරන්නේ නම්, එය භාවිතා කිරීමට තීරණය කරන පුද්ගලයින් සිටිනු ඇත.
2. කාලය බෙදාගැනීම
Richard Kelsey විසින් මෙම අදහස ඉදිරිපත් කළ අතර ඔහුගේ කාලය නැවතත් පැමිණ ඇති අතර මම එයට පූර්ණ සහය දෙමි. මගේ අනුමානය (සහ මයික්රොසොෆ්ට් ද) බොහෝ පරිගණනය ඩෙස්ක්ටොප් එකේ සිට දුරස්ථ සර්වර් වෙත මාරු වනු ඇත. වෙනත් වචන වලින් කිවහොත්, කාලය බෙදාගැනීම නැවත පැමිණ ඇත. මේ සඳහා භාෂා මට්ටමින් සහය අවශ්ය වේ යැයි සිතමි. උදාහරණයක් ලෙස, රිචඩ් සහ ජොනතන් රීව්ස් යෝජනා ක්රමය 48 හි ක්රියාවලි කාලසටහන ක්රියාත්මක කිරීමට බොහෝ වැඩ කර ඇත.
3. කාර්යක්ෂමතාව
මෑතකදී, පරිගණක ප්රමාණවත් තරම් වේගවත් බව පෙනෙන්නට තිබුණි. බයිට් කේතය ගැන අපට වැඩි වැඩියෙන් අසන්නට ලැබේ, එයින් අදහස් කරන්නේ අවම වශයෙන් මට නම්, අපට ඉතිරි කිරීමට බලය ඇති බවයි. නමුත් මම හිතන්නේ සේවාදායක මෘදුකාංග සමඟ අපට එසේ නොවේ. යමෙකුට ඒ සඳහා ගෙවීමට සිදුවනු ඇත. සේවාදායකමෘදුකාංගය ක්රියාත්මක වන සේවාදායක සංඛ්යාව සහ සේවාදායකයට යන්ත්රයකට හැසිරවිය හැකි පරිශීලකයින් සංඛ්යාව ඔවුන්ගේ ප්රාග්ධන පිරිවැයේ බෙදුම්කරු වනු ඇත.
මම හිතන්නේ අඩුම තරමේ කම්පියුටේන් බ්ලැන්කේස් වලදී කාර්යක්ෂමතාව වැදගත් වේවි. I/O මෙහෙයුම් සඳහා මෙය විශේෂයෙන් වැදගත් වනු ඇත, මන්ද සේවාදායක යෙදුම් එවැනි මෙහෙයුම් බොහොමයක් සිදු කරයි.
අවසානයේදී, බයිට්කේතය පිළිතුර නොවන බව පෙනී යා හැකිය. සන් සහ මයික්රොසොෆ්ට් මේ මොහොතේ බයිට්කෝඩ් ක්ෂේත්රය තුළ හිසට යන බව පෙනේ. නමුත් ඔවුන් එසේ කරන්නේ bytecode ක්රියාවලියකට කාවැද්දීමට පහසු ස්ථානයක් වන නිසා මිස bytecode හොඳ අදහසක් නිසා නොවේ. මෙම සමස්ත සටන නොදැනී යන බව පෙනී යා හැකිය. එය විහිළුවක් වනු ඇත.
උගුල් සහ උගුල්
1. ගනුදෙනුකරුවන්
මෙය අනුමානයක් පමණි, නමුත් ප්රතිලාභ ලැබෙන එකම යෙදුම් සම්පූර්ණයෙන්ම සේවාදායක පැත්තේ ඒවා වේ. සෑම කෙනෙකුටම පාරිභෝගිකයෙකු සිටී යැයි උපකල්පනය කර ක්රියාත්මක වන මෘදුකාංගයක් නිර්මාණය කිරීම සෑම කෙනෙකුම අවංක වනු ඇතැයි උපකල්පනය කර සමාජයක් සැලසුම් කිරීම වැනිය. එය නිසැකවම පහසු වනු ඇත, නමුත් එය කිසි විටෙකත් සිදු නොවන බව ඔබ උපකල්පනය කළ යුතුය.
මම සිතන්නේ වෙබ් සක්රීය උපාංගවල ශීඝ්ර වර්ධනයක් සිදුවනු ඇති අතර, ඒවා මූලික html සහ ආකෘති සඳහා සහය දක්වනු ඇතැයි අපට උපකල්පනය කළ හැක. ඔබගේ දුරකථනයේ බ්රවුසරයක් තිබේද? ඔබේ PalmPilot හට දුරකථනයක් තිබේද? ඔබේ බ්ලැක්බෙරි විශාල තිරයක් තිබේද? ඔබේ ගේම්බෝයිගෙන් අන්තර්ජාලයට පිවිසීමට ඔබට හැකි වේද? ඔබේ ඔරලෝසුවෙන්? මම දන්නේ නැහැ. ඒවගේම හැම දෙයක්ම සර්වර් එකේ තියේවි කියලා ඔට්ටු ඇල්ලුවොත් මට හොයන්න වෙන්නේ නැහැ. සියලුම මොළය සේවාදායකයේ තිබීම වඩාත් විශ්වාසදායකය. .
2. වස්තු-නැඹුරු වැඩසටහන්කරණය
මෙය මතභේදාත්මක ප්රකාශයක් බව මට වැටහේ, නමුත් OOP එතරම් වැදගත් යැයි මම නොසිතමි. ජනෙල් පද්ධති, සමාකරණ, CAD පද්ධති වැනි නිශ්චිත දත්ත ව්යුහයන් අවශ්ය විශේෂිත යෙදුම් සඳහා මෙය සුදුසු ආදර්ශයක් යැයි මම සිතමි. නමුත් එය සියලුම වැඩසටහන් සඳහා සුදුසු විය යුත්තේ මන්දැයි මට තේරෙන්නේ නැත.
මම හිතන්නේ විශාල සමාගම්වල අය OOP වලට කැමතියි, එය වැඩ කරන බව පෙනෙන බොහෝ දේ සාදන නිසා. නිඛිල ලැයිස්තුවක් ලෙස ස්වභාවිකව නිරූපණය කළ හැකි දේ, දැන් සියලු වර්ගවල පලංචිය, කඩිමුඩියේ සහ කාර්යබහුලත්වය සහිත පන්ති කාමරයක් ලෙස නිරූපණය කළ හැක.
OOP හි තවත් ආකර්ශනීය ලක්ෂණයක් වන්නේ ක්රම මඟින් ඔබට පළමු පන්තියේ ශ්රිතවල යම් බලපෑමක් ලබා දීමයි. නමුත් මෙය Lisp programmers සඳහා ප්රවෘත්තියක් නොවේ. ඔබට සත්ය පළමු පන්තියේ කාර්යයන් ඇති විට, ඔබට සියල්ල පන්ති සහ ක්රමවල බොයිලේරු තහඩුවකට තල්ලු කිරීම වෙනුවට, අතේ ඇති කාර්යයට ගැලපෙන ඕනෑම ආකාරයකින් ඒවා භාවිතා කළ හැකිය.
මම හිතන්නේ භාෂා නිර්මාණය සඳහා මෙයින් අදහස් කරන්නේ ඔබ OOP එය තුළට ගැඹුරින් කාවැද්දීම නොකළ යුතු බවයි. සමහර විට පිළිතුර වනුයේ වඩාත් සාමාන්ය, මූලික දේවල් පිරිනැමීම සහ පුස්තකාල ලෙස ඕනෑම වස්තු පද්ධතියක් සැලසුම් කිරීමට මිනිසුන්ට ඉඩ දීමයි.
3. කමිටුව විසින් නිර්මාණය
ඔබේ භාෂාව නිර්මාණය කර ඇත්තේ කමිටුවක් විසින් නම්, ඔබ කොටු වී සිටින්නේ, සියලු දෙනා දන්නා හේතු නිසා නොවේ. කමිටු ගැටුණු, නොගැලපෙන භාෂා නිර්මාණ නිර්මාණය කිරීමට නැඹුරු වන බව කවුරුත් දනිති. නමුත් මම හිතන්නේ ඔවුන් අවදානම් නොගැනීම තමයි ලොකුම අනතුර. එක් පුද්ගලයෙකු භාරව සිටින විට, කමිටුව කිසි විටෙකත් භාර ගැනීමට එකඟ නොවන අවදානමක් ගනී.
හොඳ භාෂාවක් නිර්මාණය කිරීමට ඔබ අවදානමක් ගත යුතුද? ඔබ සම්ප්රදායික ප්රඥාවට සමීපව සිටිය යුතු තැන භාෂා නිර්මාණය යැයි බොහෝ අය සැක කළ හැකිය. මම ඔට්ටු අල්ලනවා එය එසේ නොවේ. මිනිසුන් කරන අනෙක් සෑම දෙයකදීම විපාකය අවදානමට සමානුපාතික වේ. එසේනම් භාෂා නිර්මාණය වෙනස් විය යුත්තේ ඇයි?
මූලාශ්රය: www.habr.com
