මගේ උපාධි අපේක්ෂාව වූයේ සංජානන විද්යාව සහ කෘතිම බුද්ධියයි. එතැන් සිට මට ලිස්ප් වෙත එක් පා course මාලාවක් හැදෑරීමක් තිබුණි. භාෂාව සිත්ගන්නාසුළු යැයි මම සිතුවෙමි ("අලංකාර" ලෙස) නමුත් බොහෝ කලකට පසුව මම ග්රීන්ස්පන්ගේ දහවන රීතිය හමු වන තුරු ඒ ගැන වැඩි යමක් සිතුවේ නැත:
ප්රමාණවත් තරම් සංකීර්ණ සී හෝ ෆෝට්රාන් වැඩසටහනක තාවකාලික, අවිධිමත් ලෙස නිශ්චිතව දක්වා ඇති, දෝෂ සහිත, පොදු තොල්වලින් අඩක් මන්දගාමීව ක්රියාත්මක කිරීම අඩංගු වේ.
ග්රීන්ස්පන්ගේ අදහස වූයේ (අර්ධ වශයෙන්) බොහෝ සංකීර්ණ වැඩසටහන් තුළ අර්ථකථන ගොඩනගා ඇති බවයි. භාෂාවක් තුළට පරිවර්තකයෙකු ගොඩනඟනවා වෙනුවට, දැනටමත් පරිවර්තකයෙකු (හෝ සම්පාදකයෙකු) ගොඩනගා ඇති ලිස්ප් වැනි භාෂාවක් භාවිතා කිරීම වඩාත් අර්ථවත් වනු ඇතැයි ඔහු යෝජනා කළේය.
ඒ වන විට මම අභිරුචි භාෂාවක් සඳහා අභිරුචි පරිවර්තකයක් භාවිතා කරමින් පරිශීලක අර්ථ දක්වන ලද ගණනය කිරීම් සිදු කරන තරමක් විශාල යෙදුමක වැඩ කරමින් සිටියෙමි. මහා පරිමාණ අත්හදා බැලීමක් ලෙස ලිස්ප් හි එහි හරය නැවත ලිවීමට උත්සාහ කිරීමට මම තීරණය කළෙමි.
දළ වශයෙන් සති හයක් ගත විය. මුල් කේතය ඩෙල්ෆි (පැස්කල් ප්රභේදයක්) පේළි 100,000 ක් විය. ලිස්ප් හි එය ඩොලර් 10,000 දක්වා අඩු කරන ලදී. ඊටත් වඩා පුදුමයට කරුණ නම් ලිස්ප් එන්ජිම 3-6 ගුණයකින් වේගවත් වීමයි. මෙය ලිස්ප් නියෝෆයිටයේ කාර්යයක් බව මතක තබා ගන්න! ඒ මුළු අත්දැකීමම මට ඇස් ඇරීමකි. පළමු වරට කාර්ය සාධනය සහ ප්රකාශන හැකියාව තනි භාෂාවකින් ඒකාබද්ධ කිරීමේ හැකියාව මම දුටුවෙමි.
ටික කලකට පසු මම වෙබ් පාදක ව්යාපෘතියක වැඩ කිරීමට පටන් ගත් විට මම භාෂා ගණනාවක් විගණනය කළෙමි. මම මිශ්රණයට ලිස්ප් සහ යෝජනා ක්රමය ඇතුළත් කළෙමි. අවසානයේදී මම යෝජනා ක්රමයක් ක්රියාත්මක කිරීම තෝරා ගත්තා - චෙස් යෝජනා ක්රමය . ප්රති .ල ගැන මම ගොඩක් සතුටුයි.
වෙබ් පාදක ව්යාපෘතිය ඉහළ කාර්යසාධනයක් සහිත “තේරීම් එන්ජිමක්” වේ. දත්ත සැකසීමේ සිට දත්ත විමසීමේ සිට පිටු උත්පාදනය දක්වා විවිධ ආකාරවලින් අපි යෝජනා ක්රමය භාවිතා කරමු. බොහෝ ස්ථානවල අපි ඇත්ත වශයෙන්ම වෙනත් භාෂාවකින් ආරම්භ කළ නමුත් හේතු කිහිපයක් නිසා යෝජනා ක්රමයට සංක්රමණය වීම අවසන් කළෙමි.
දැන් මට ඔබේ ප්රශ්නයට පිළිතුරු දිය හැකිය (අවම වශයෙන් අර්ධ වශයෙන්).
විගණනය අතරතුර අපි විවිධාකාර ලිස්ප් සහ යෝජනා ක්රම ක්රියාත්මක කිරීම දෙස බැලුවෙමු. ලිස්ප් පැත්තේ අපි ඇලෙග්රෝ සීඑල්, සීඑම්යූසීඑල්, එස්බීසීඑල් සහ ලිස්ප් වර්ක්ස් දෙස බැලුවෙමු. යෝජනා ක්රමයේ අපි බිග්ලූ, චිකන්, චෙස්, ගැම්බිට් දෙස බැලුවෙමු. (භාෂා තේරීම බොහෝ කලකට පෙර සිදු විය; ඒ නිසා මම ටිකක් අවුල් සහගතය. එය වැදගත් නම් මට සටහන් කිහිපයක් හාරා ගත හැකිය.)
අපි සොයමින් සිටි පිත්තෙන් අ) දේශීය නූල් සහ ආ) ලිනක්ස්, මැක් සහ වින්ඩෝස් සහාය. මෙම කොන්දේසි දෙක එක්ව සියල්ලන්ම තට්ටු කළ නමුත් (මම හිතන්නේ) ඇලෙග්රෝ සහ චෙස් ඉවත් කර ඇත - එබැවින් ඇගයීම දිගටම කරගෙන යාම සඳහා අපට බහු නූල් අවශ්යතාවය ලිහිල් කිරීමට සිදුවිය.
අපි කුඩා වැඩසටහන් කට්ටලයක් එකතු කර ඒවා ඇගයීම සහ පරීක්ෂා කිරීම සඳහා භාවිතා කළෙමු. එමඟින් ගැටළු ගණනාවක් අනාවරණය විය. උදාහරණයක් ලෙස: සමහර ක්රියාත්මක කිරීම් වල අඩුපාඩු ඇති අතර එමඟින් සමහර පරීක්ෂණ සම්පූර්ණ කිරීම දක්වා වළක්වන ලදි; සමහර ක්රියාත්මක කිරීම් ක්රියාත්මක වන වේලාවේදී කේත සම්පාදනය කළ නොහැක; සමහර ක්රියාත්මක කිරීම් වලට පෙර-සම්පාදනය කළ කේතය සමඟ ධාවන කාල සම්පාදනය කළ කේතය පහසුවෙන් ඒකාබද්ධ කළ නොහැක; සමහර ක්රියාවට නැංවීමේදී කසළ එකතු කරන්නන් සිටි අතර ඒවා අනෙක් ඒවාට වඩා හොඳ (හෝ පැහැදිලිවම නරක) විය. ආදිය.
අපගේ අවශ්යතා සඳහා අපගේ ප්රාථමික පරීක්ෂණ සමත් වූයේ ඇලෙග්රෝ, චෙස් සහ ලිස්ප්වර්ක්ස් යන වාණිජ ක්රියාත්මක කිරීම් තුන පමණි. තිදෙනාගෙන් චෙස් පමණක් සියළුම පරීක්ෂණ සමත් වූයේ පියාසර වර්ණවලින්. ඒ වන විට මම සිතන්නේ ලිස්ප්වර්ක්ස් කිසිදු වේදිකාවක ස්වදේශික නූල් නොතිබූ බවයි (මම හිතන්නේ ඒවා දැන් සිදු වේ) සහ ඇලෙග්රෝ සතුව ඇත්තේ සමහර වේදිකාවල ස්වදේශීය නූල් පමණි. තවද, ඇලෙග්රෝ හි "අපට අමතන්න" ධාවන කාල බලපත්ර ගාස්තුවක් තිබුන අතර එය මා එතරම් කැමති නොවීය. මම විශ්වාස කරන්නේ ලිස්ප්වර්ක්ස් හට ධාවන කාල ගාස්තුවක් නොමැති බවත් චෙස් සතුව සරල (හා ඉතා සාධාරණ) විධිවිධානයක් ඇති බවත්ය (එය ක්රියාත්මක වූයේ ඔබ ධාවන වේලාවේදී සම්පාදකය භාවිතා කළේ නම් පමණි).
Lisp සහ Scheme යන දෙඅංශයෙන්ම තරමක් වැදගත් කේත කැබලි නිපදවා ඇති අතර සමහර සංසන්දනාත්මක හා ප්රතිවිරුද්ධ කරුණු:
ලිස්ප් පරිසරය වඩාත් පරිණත ය. ඔබට ගාස්තුව සඳහා තවත් බොහෝ දේ ලැබේ. (එසේ පැවසීමෙන් පසු, තවත් කේත තවත් දෝෂ වලට සමාන වේ.)
ලිස්ප් පරිසරය ඉගෙන ගැනීමට වඩා දුෂ්කර ය. ප්රවීණ වීමට ඔබට තවත් බොහෝ කාලයක් අවශ්යයි; පොදු ලිප්ස් විශාල භාෂාවක් වන අතර එය වාණිජමය ක්රියාත්මක කිරීම් ඊට ඉහළින් එකතු කරන පුස්තකාල වෙත යාමට පෙරය. (එසේ පැවසීමෙන් පසු, යෝජනා ක්රමයේ වාක්ය ඛණ්ඩය ලිස්ප් හි ඇති ඕනෑම දෙයකට වඩා සියුම් හා සංකීර්ණ ය.)
ලිස්ප් පරිසරය තුළ ද්විමය නිෂ්පාදනය කිරීම තරමක් අපහසු විය හැකිය. අනවශ්ය බිටු ඉවත් කිරීම සඳහා ඔබේ ප්රතිරූපය "සොලවන්න" අවශ්ය වන අතර, එම ක්රියාවලිය අතරතුර ඔබේ වැඩසටහන නිවැරදිව ක්රියාත්මක නොකළහොත් ඔබට පසුව ධාවන කාල දෝෂ සමඟ අවසන් විය හැකිය. . ඊට වෙනස්ව, චෙස් සමඟ අපි ඉහළ මට්ටමේ ගොනුවක් සම්පාදනය කරන අතර එයට අවශ්ය අනෙකුත් සියලුම ගොනු ඇතුළත් වන අතර අපි එය අවසන් කර ඇත්තෙමු.
මම මුලින් කිව්වේ අපි මුලින් අදහස් නොකළ ස්ථාන ගණනාවක යෝජනා ක්රමය භාවිතා කිරීම අවසන් කළ බවයි. මන්ද? මගේ හිසට ඉහළින් හේතු තුනක් ගැන මට සිතිය හැකිය.
පළමුව, අපි චෙස් (සහ එහි සංවර්ධකයා වන කේඩන්ස්) විශ්වාස කිරීමට ඉගෙන ගත්තෙමු. අපි මෙවලමෙන් බොහෝ දේ ඉල්ලා සිටි අතර එය නිරන්තරයෙන් ලබා දෙන ලදි. නිදසුනක් වශයෙන්, චෙස් histor තිහාසිකව සුළු වශයෙන් අඩුපාඩු සංඛ්යාවක් ඇති අතර එහි මතක කළමනාකරු ඉතා හොඳ මට්ටමක පවතී.
දෙවනුව, අපි චෙස් වෙතින් ලබාගත් රංගනයට ආදරය කිරීමට ඉගෙන ගත්තෙමු. අපි භාවිතා කළේ ස්ක්රිප්ටින් භාෂාවක් ලෙස හැඟෙන දෙයක් වන අතර එයින් අපට ස්වදේශීය කේත වේගය ලැබෙනු ඇත. වැදගත් නොවන සමහර දේවල් සඳහා - නමුත් එය කිසි විටෙකත් හානියක් නොවූ අතර සමහර විට එය භයානක දෙයකට උපකාරී විය.
තෙවනුව, වියුක්ත යෝජනා ක්රමයට ලබා දිය හැකි ආදරය කිරීමට අපි ඉගෙන ගතිමු. මම අදහස් කළේ මැක්රෝස් පමණක් නොවේ. මම අදහස් කළේ වසා දැමීම්, ලැම්බඩාස්, වලිග ඇමතුම් යනාදියයි. ඔබ එම වචන වලින් සිතීමට පටන් ගත් පසු වෙනත් භාෂාවන් සංසන්දනය කිරීමෙන් සීමිත බව පෙනේ.
යෝජනා ක්රමය පරිපූර්ණද? නොමැත; එය වෙළඳාමකි. පළමුවෙන්ම, එය එක් එක් සංවර්ධකයින්ට වඩාත් effective ලදායී වීමට ඉඩ දෙයි - නමුත් සංවර්ධකයින්ට එකිනෙකාගේ කේතය ග්රහණය කර ගැනීම වඩා දුෂ්කර ය, මන්ද බොහෝ භාෂාවල ඇති සං p ා පුවරු (උදා: ලූප සඳහා) යෝජනා ක්රමයේ නොමැති නිසා (උදා: කිරීමට මිලියනයක් ක්රම තිබේ a for loop). දෙවනුව, කතා කිරීමට, කුලියට ගැනීමට, ණයට ගැනීමට යනාදිය සඳහා වඩා කුඩා සංවර්ධකයින් සමූහයක් ඇත.
සාරාංශයක් ලෙස, මම කියනු ඇතැයි මම සිතමි: ලිස්ප් සහ යෝජනා ක්රමය වෙනත් ඕනෑම තැනක පුළුල් ලෙස ලබා ගත නොහැකි හැකියාවන් ඉදිරිපත් කරයි. එම හැකියාව වෙළඳාම් කිරීමකි, එබැවින් එය ඔබගේ විශේෂිත අවස්ථාවෙහි අර්ථවත් වන එකක් විය. අපගේ නඩුවේදී, ලිස්ප් හෝ යෝජනා ක්රමය සමඟ යා යුතුද යන්න තීරණය කිරීමේ සාධක භාෂාවේ හෝ පුස්තකාල විශේෂාංගවලට වඩා මූලික අංග (වේදිකා සහාය, වේදිකා නූල්, ධාවන කාල සම්පාදනය, ධාවන කාල බලපත්ර) සමඟ සම්බන්ධ විය. නැවතත්, අපගේ කාරණයේදීද එය වෙළඳාමක් විය: චෙස් සමඟ අපට අවශ්ය මූලික අංග අපට ලැබුණද වාණිජ ලිස්ප් පරිසරය තුළ තිබූ පුළුල් පුස්තකාල අපට අහිමි විය.
එසේම, නැවත අවධාරණය කිරීම සඳහා: අපි බොහෝ කලකට පෙර විවිධ තොල් සහ යෝජනා ක්රම දෙස බැලුවෙමු; ඒවා සියල්ලම පරිණාමය වී වැඩිදියුණු වී ඇත.