යෝජනා ක්‍රමය එදිරිව පොදු තොල්: ඔබේ ව්‍යාපෘතියේ වෙනසක් ඇති කළ ලක්ෂණ මොනවාද? [වසා ඇත]


160

StackOverflow සහ මෙම වෙබ් අඩවිය යන දෙකෙහිම නොපැහැදිලි "යෝජනා ක්‍රම එදිරිව පොදු ලිස්ප්" ප්‍රශ්න හිඟයක් නොමැත, එබැවින් මට මෙය තවත් අවධානය යොමු කිරීමට අවශ්‍යය. ප්‍රශ්නය භාෂා දෙකෙන්ම කේත කර ඇති පුද්ගලයින් සඳහා ය:

යෝජනා ක්‍රමයේ කේතීකරණයේදී, ඔබේ පොදු ලිප්ස් කේතීකරණ අත්දැකීම් වල වඩාත්ම වැදගත් අංග මොනවාද? නැතහොත්, ප්‍රතිලෝමව, පොදු ලිප්ස් කේතනය කිරීමේදී, යෝජනා ක්‍රමයේ කේතීකරණයෙන් ඔබට මග හැරුණේ කුමක්ද?

මා අදහස් කරන්නේ භාෂා අංග පමණක් නොවේ. ප්‍රශ්නය සම්බන්ධයෙන් ගත් කල, පහත දැක්වෙන්නේ මඟ හැරිය යුතු වලංගු දේවල් ය:

  • විශේෂිත පුස්තකාල.
  • SLIME, DrRacket වැනි සංවර්ධන පරිසරවල විශේෂිත ලක්ෂණ.
  • ඔබේ යෝජනා ක්‍රම ප්‍රභවයට සී කේත කොටස් කෙලින්ම ලිවීමට ගැම්බිට්ට ඇති හැකියාව වැනි විශේෂිත ක්‍රියාත්මක කිරීම් වල විශේෂාංග.
  • ඇත්ත වශයෙන්ම, භාෂා ලක්ෂණ.

මා බලාපොරොත්තු වන පිළිතුරු වර්ග සඳහා උදාහරණ:

  • "මම පොදු ලිප්ස් හි එක්ස් ක්‍රියාවට නැංවීමට උත්සාහ කළෙමි. මට යෝජනා ක්‍රමයේ පළමු පන්තියේ අඛණ්ඩ පැවැත්මක් තිබුනේ නම්, මම මුළුමනින්ම වයි කර ඇත. නමුත් ඒ වෙනුවට මට ඉසෙඩ් කිරීමට සිදුවිය. එය වඩාත් වේදනාකාරී විය."
  • "මගේ යෝජනා ක්‍රමයේ ගොඩනැගීමේ ක්‍රියාවලිය වැඩි වැඩියෙන් වේදනාකාරී වූයේ මගේ ප්‍රභව වෘක්ෂය වර්ධනය වීමත් සමඟ මම වැඩි වැඩියෙන් සී පුස්තකාල සමඟ සම්බන්ධ වීමෙනි. මගේ ඊළඟ ව්‍යාපෘතිය සඳහා මම නැවත පොදු ලිප්ස් වෙත ගියෙමි."
  • "මා සතුව දැනට පවතින විශාල C ++ කේත පදනමක් තිබේ. මට නම්, C ++ ඇමතුම් කෙලින්ම මගේ ගැම්බිට් යෝජනා ක්‍රම කේතයට ඇතුළත් කිරීමට හැකිවීම, SWIG සහය නොමැතිකම ඇතුළුව, පොදු ලිප්ස් හා එදිරිව යෝජනා ක්‍රමයට ඇති ඕනෑම අඩුපාඩුකම් මුළුමනින්ම වටී."

එබැවින්, "යෝජනා ක්‍රමය සරල භාෂාවක්" වැනි සාමාන්‍ය හැඟීම් වලට වඩා මම යුද කථා සඳහා බලාපොරොත්තු වෙමි.


27
විශිෂ්ට, හොඳින් වචන සහිත ප්‍රශ්නයක්. මට මේ ගැන කුතුහලයක් ඇත; භාෂා දෙකෙහිම විශේෂ ise දැනුමක් ඇති සමහර අය යම් අවබෝධයක් ලබා දීමට කැමැත්තෙන් සිටිති.
රොබට් හාවි

1
Osh ජොෂ් කේ - එයට පැහැදිලිවම පිළිතුරු දිය හැකි නමුත් අනිවාර්යයෙන්ම එක නිශ්චිත පිළිතුරක් නොමැත. මම ඔට්ටු ඇල්ලීම හැරෙන්නට එකක් ඇති බව මම විශ්වාස කරමි, මන්ද යමෙකු පිළිතුරක් ඉදිරිපත් කරනු ඇත.
glenatron

4
Osh ජොෂ්: එවිට සමහර විට ඔබ යෝජනා ක්‍රමය සහ පොදු ලිප්ස් ගැන හුරුපුරුදු නැත. භාෂා දෙකම තමන්ගේම අතින් ඉතා බලවත් ය, එහෙත් ප්‍රධාන ධාරාවේ පිළිගැනීමක් ද නැත. ඇයි මේ? එය බොහෝ උපභාෂා ඇති නිසා විය හැකිය; ඔබ තෝරා ගන්නේ කුමන එකද? මේ ආකාරයේ සංසන්දනයක් ඉතා දීප්තිමත් විය හැකි අතර, මගේ මතය අනුව, ඉතා නිශ්චිත හා පිළිතුරු දිය හැකි පිළිතුරු සඳහා විෂය පථය සීමා කිරීම සඳහා OP ප‍්‍රවේශමෙන් ප‍්‍රවේශ වී ඇත.
රොබට් හාවි

13
ජනයෙනි, ඔබ එයට අකමැති නිසා හෝ එයට සම්බන්ධ විය නොහැකි නිසා ප්‍රශ්නය වසා නොදමන්න. එය පැහැදිලිවම "සැබෑ" ප්‍රශ්නයකි; ඔබට එය වසා දැමීමට වඩා හොඳ හේතුවක් සොයාගත නොහැකි නම්, ඔබ වසා දැමීමට ඡන්දය නොදිය යුතුය.
රොබට් හාවි

4
ඔහුගේ පිළිතුර සඳහා ඔබට රිචඩ් ස්ටෝල්මන්ට ඊමේල් කළ හැකිය.
wassimans

Answers:


103

මගේ උපාධි අපේක්ෂාව වූයේ සංජානන විද්‍යාව සහ කෘතිම බුද්ධියයි. එතැන් සිට මට ලිස්ප් වෙත එක් පා course මාලාවක් හැදෑරීමක් තිබුණි. භාෂාව සිත්ගන්නාසුළු යැයි මම සිතුවෙමි ("අලංකාර" ලෙස) නමුත් බොහෝ කලකට පසුව මම ග්‍රීන්ස්පන්ගේ දහවන රීතිය හමු වන තුරු ඒ ගැන වැඩි යමක් සිතුවේ නැත:

ප්‍රමාණවත් තරම් සංකීර්ණ සී හෝ ෆෝට්රාන් වැඩසටහනක තාවකාලික, අවිධිමත් ලෙස නිශ්චිතව දක්වා ඇති, දෝෂ සහිත, පොදු තොල්වලින් අඩක් මන්දගාමීව ක්‍රියාත්මක කිරීම අඩංගු වේ.

ග්‍රීන්ස්පන්ගේ අදහස වූයේ (අර්ධ වශයෙන්) බොහෝ සංකීර්ණ වැඩසටහන් තුළ අර්ථකථන ගොඩනගා ඇති බවයි. භාෂාවක් තුළට පරිවර්තකයෙකු ගොඩනඟනවා වෙනුවට, දැනටමත් පරිවර්තකයෙකු (හෝ සම්පාදකයෙකු) ගොඩනගා ඇති ලිස්ප් වැනි භාෂාවක් භාවිතා කිරීම වඩාත් අර්ථවත් වනු ඇතැයි ඔහු යෝජනා කළේය.

ඒ වන විට මම අභිරුචි භාෂාවක් සඳහා අභිරුචි පරිවර්තකයක් භාවිතා කරමින් පරිශීලක අර්ථ දක්වන ලද ගණනය කිරීම් සිදු කරන තරමක් විශාල යෙදුමක වැඩ කරමින් සිටියෙමි. මහා පරිමාණ අත්හදා බැලීමක් ලෙස ලිස්ප් හි එහි හරය නැවත ලිවීමට උත්සාහ කිරීමට මම තීරණය කළෙමි.

දළ වශයෙන් සති හයක් ගත විය. මුල් කේතය ඩෙල්ෆි (පැස්කල් ප්‍රභේදයක්) පේළි 100,000 ක් විය. ලිස්ප් හි එය ඩොලර් 10,000 දක්වා අඩු කරන ලදී. ඊටත් වඩා පුදුමයට කරුණ නම් ලිස්ප් එන්ජිම 3-6 ගුණයකින් වේගවත් වීමයි. මෙය ලිස්ප් නියෝෆයිටයේ කාර්යයක් බව මතක තබා ගන්න! ඒ මුළු අත්දැකීමම මට ඇස් ඇරීමකි. පළමු වරට කාර්ය සාධනය සහ ප්‍රකාශන හැකියාව තනි භාෂාවකින් ඒකාබද්ධ කිරීමේ හැකියාව මම දුටුවෙමි.

ටික කලකට පසු මම වෙබ් පාදක ව්‍යාපෘතියක වැඩ කිරීමට පටන් ගත් විට මම භාෂා ගණනාවක් විගණනය කළෙමි. මම මිශ්‍රණයට ලිස්ප් සහ යෝජනා ක්‍රමය ඇතුළත් කළෙමි. අවසානයේදී මම යෝජනා ක්‍රමයක් ක්‍රියාත්මක කිරීම තෝරා ගත්තා - චෙස් යෝජනා ක්‍රමය . ප්‍රති .ල ගැන මම ගොඩක් සතුටුයි.

වෙබ් පාදක ව්‍යාපෘතිය ඉහළ කාර්යසාධනයක් සහිත “තේරීම් එන්ජිමක්” වේ. දත්ත සැකසීමේ සිට දත්ත විමසීමේ සිට පිටු උත්පාදනය දක්වා විවිධ ආකාරවලින් අපි යෝජනා ක්‍රමය භාවිතා කරමු. බොහෝ ස්ථානවල අපි ඇත්ත වශයෙන්ම වෙනත් භාෂාවකින් ආරම්භ කළ නමුත් හේතු කිහිපයක් නිසා යෝජනා ක්‍රමයට සංක්‍රමණය වීම අවසන් කළෙමි.

දැන් මට ඔබේ ප්‍රශ්නයට පිළිතුරු දිය හැකිය (අවම වශයෙන් අර්ධ වශයෙන්).

විගණනය අතරතුර අපි විවිධාකාර ලිස්ප් සහ යෝජනා ක්‍රම ක්‍රියාත්මක කිරීම දෙස බැලුවෙමු. ලිස්ප් පැත්තේ අපි ඇලෙග්‍රෝ සීඑල්, ​​සීඑම්යූසීඑල්, ​​එස්බීසීඑල් සහ ලිස්ප් වර්ක්ස් දෙස බැලුවෙමු. යෝජනා ක්‍රමයේ අපි බිග්ලූ, චිකන්, චෙස්, ගැම්බිට් දෙස බැලුවෙමු. (භාෂා තේරීම බොහෝ කලකට පෙර සිදු විය; ඒ නිසා මම ටිකක් අවුල් සහගතය. එය වැදගත් නම් මට සටහන් කිහිපයක් හාරා ගත හැකිය.)

අපි සොයමින් සිටි පිත්තෙන් අ) දේශීය නූල් සහ ආ) ලිනක්ස්, මැක් සහ වින්ඩෝස් සහාය. මෙම කොන්දේසි දෙක එක්ව සියල්ලන්ම තට්ටු කළ නමුත් (මම හිතන්නේ) ඇලෙග්‍රෝ සහ චෙස් ඉවත් කර ඇත - එබැවින් ඇගයීම දිගටම කරගෙන යාම සඳහා අපට බහු නූල් අවශ්‍යතාවය ලිහිල් කිරීමට සිදුවිය.

අපි කුඩා වැඩසටහන් කට්ටලයක් එකතු කර ඒවා ඇගයීම සහ පරීක්ෂා කිරීම සඳහා භාවිතා කළෙමු. එමඟින් ගැටළු ගණනාවක් අනාවරණය විය. උදාහරණයක් ලෙස: සමහර ක්‍රියාත්මක කිරීම් වල අඩුපාඩු ඇති අතර එමඟින් සමහර පරීක්ෂණ සම්පූර්ණ කිරීම දක්වා වළක්වන ලදි; සමහර ක්‍රියාත්මක කිරීම් ක්‍රියාත්මක වන වේලාවේදී කේත සම්පාදනය කළ නොහැක; සමහර ක්‍රියාත්මක කිරීම් වලට පෙර-සම්පාදනය කළ කේතය සමඟ ධාවන කාල සම්පාදනය කළ කේතය පහසුවෙන් ඒකාබද්ධ කළ නොහැක; සමහර ක්‍රියාවට නැංවීමේදී කසළ එකතු කරන්නන් සිටි අතර ඒවා අනෙක් ඒවාට වඩා හොඳ (හෝ පැහැදිලිවම නරක) විය. ආදිය.

අපගේ අවශ්‍යතා සඳහා අපගේ ප්‍රාථමික පරීක්ෂණ සමත් වූයේ ඇලෙග්‍රෝ, චෙස් සහ ලිස්ප්වර්ක්ස් යන වාණිජ ක්‍රියාත්මක කිරීම් තුන පමණි. තිදෙනාගෙන් චෙස් පමණක් සියළුම පරීක්ෂණ සමත් වූයේ පියාසර වර්ණවලින්. ඒ වන විට මම සිතන්නේ ලිස්ප්වර්ක්ස් කිසිදු වේදිකාවක ස්වදේශික නූල් නොතිබූ බවයි (මම හිතන්නේ ඒවා දැන් සිදු වේ) සහ ඇලෙග්‍රෝ සතුව ඇත්තේ සමහර වේදිකාවල ස්වදේශීය නූල් පමණි. තවද, ඇලෙග්‍රෝ හි "අපට අමතන්න" ධාවන කාල බලපත්‍ර ගාස්තුවක් තිබුන අතර එය මා එතරම් කැමති නොවීය. මම විශ්වාස කරන්නේ ලිස්ප්වර්ක්ස් හට ධාවන කාල ගාස්තුවක් නොමැති බවත් චෙස් සතුව සරල (හා ඉතා සාධාරණ) විධිවිධානයක් ඇති බවත්ය (එය ක්‍රියාත්මක වූයේ ඔබ ධාවන වේලාවේදී සම්පාදකය භාවිතා කළේ නම් පමණි).

Lisp සහ Scheme යන දෙඅංශයෙන්ම තරමක් වැදගත් කේත කැබලි නිපදවා ඇති අතර සමහර සංසන්දනාත්මක හා ප්‍රතිවිරුද්ධ කරුණු:

  • ලිස්ප් පරිසරය වඩාත් පරිණත ය. ඔබට ගාස්තුව සඳහා තවත් බොහෝ දේ ලැබේ. (එසේ පැවසීමෙන් පසු, තවත් කේත තවත් දෝෂ වලට සමාන වේ.)

  • ලිස්ප් පරිසරය ඉගෙන ගැනීමට වඩා දුෂ්කර ය. ප්‍රවීණ වීමට ඔබට තවත් බොහෝ කාලයක් අවශ්‍යයි; පොදු ලිප්ස් විශාල භාෂාවක් වන අතර එය වාණිජමය ක්‍රියාත්මක කිරීම් ඊට ඉහළින් එකතු කරන පුස්තකාල වෙත යාමට පෙරය. (එසේ පැවසීමෙන් පසු, යෝජනා ක්‍රමයේ වාක්‍ය ඛණ්ඩය ලිස්ප් හි ඇති ඕනෑම දෙයකට වඩා සියුම් හා සංකීර්ණ ය.)

  • ලිස්ප් පරිසරය තුළ ද්විමය නිෂ්පාදනය කිරීම තරමක් අපහසු විය හැකිය. අනවශ්‍ය බිටු ඉවත් කිරීම සඳහා ඔබේ ප්‍රතිරූපය "සොලවන්න" අවශ්‍ය වන අතර, එම ක්‍රියාවලිය අතරතුර ඔබේ වැඩසටහන නිවැරදිව ක්‍රියාත්මක නොකළහොත් ඔබට පසුව ධාවන කාල දෝෂ සමඟ අවසන් විය හැකිය. . ඊට වෙනස්ව, චෙස් සමඟ අපි ඉහළ මට්ටමේ ගොනුවක් සම්පාදනය කරන අතර එයට අවශ්‍ය අනෙකුත් සියලුම ගොනු ඇතුළත් වන අතර අපි එය අවසන් කර ඇත්තෙමු.

මම මුලින් කිව්වේ අපි මුලින් අදහස් නොකළ ස්ථාන ගණනාවක යෝජනා ක්‍රමය භාවිතා කිරීම අවසන් කළ බවයි. මන්ද? මගේ හිසට ඉහළින් හේතු තුනක් ගැන මට සිතිය හැකිය.

පළමුව, අපි චෙස් (සහ එහි සංවර්ධකයා වන කේඩන්ස්) විශ්වාස කිරීමට ඉගෙන ගත්තෙමු. අපි මෙවලමෙන් බොහෝ දේ ඉල්ලා සිටි අතර එය නිරන්තරයෙන් ලබා දෙන ලදි. නිදසුනක් වශයෙන්, චෙස් histor තිහාසිකව සුළු වශයෙන් අඩුපාඩු සංඛ්‍යාවක් ඇති අතර එහි මතක කළමනාකරු ඉතා හොඳ මට්ටමක පවතී.

දෙවනුව, අපි චෙස් වෙතින් ලබාගත් රංගනයට ආදරය කිරීමට ඉගෙන ගත්තෙමු. අපි භාවිතා කළේ ස්ක්‍රිප්ටින් භාෂාවක් ලෙස හැඟෙන දෙයක් වන අතර එයින් අපට ස්වදේශීය කේත වේගය ලැබෙනු ඇත. වැදගත් නොවන සමහර දේවල් සඳහා - නමුත් එය කිසි විටෙකත් හානියක් නොවූ අතර සමහර විට එය භයානක දෙයකට උපකාරී විය.

තෙවනුව, වියුක්ත යෝජනා ක්‍රමයට ලබා දිය හැකි ආදරය කිරීමට අපි ඉගෙන ගතිමු. මම අදහස් කළේ මැක්‍රෝස් පමණක් නොවේ. මම අදහස් කළේ වසා දැමීම්, ලැම්බඩාස්, වලිග ඇමතුම් යනාදියයි. ඔබ එම වචන වලින් සිතීමට පටන් ගත් පසු වෙනත් භාෂාවන් සංසන්දනය කිරීමෙන් සීමිත බව පෙනේ.

යෝජනා ක්රමය පරිපූර්ණද? නොමැත; එය වෙළඳාමකි. පළමුවෙන්ම, එය එක් එක් සංවර්ධකයින්ට වඩාත් effective ලදායී වීමට ඉඩ දෙයි - නමුත් සංවර්ධකයින්ට එකිනෙකාගේ කේතය ග්‍රහණය කර ගැනීම වඩා දුෂ්කර ය, මන්ද බොහෝ භාෂාවල ඇති සං p ා පුවරු (උදා: ලූප සඳහා) යෝජනා ක්‍රමයේ නොමැති නිසා (උදා: කිරීමට මිලියනයක් ක්‍රම තිබේ a for loop). දෙවනුව, කතා කිරීමට, කුලියට ගැනීමට, ණයට ගැනීමට යනාදිය සඳහා වඩා කුඩා සංවර්ධකයින් සමූහයක් ඇත.

සාරාංශයක් ලෙස, මම කියනු ඇතැයි මම සිතමි: ලිස්ප් සහ යෝජනා ක්‍රමය වෙනත් ඕනෑම තැනක පුළුල් ලෙස ලබා ගත නොහැකි හැකියාවන් ඉදිරිපත් කරයි. එම හැකියාව වෙළඳාම් කිරීමකි, එබැවින් එය ඔබගේ විශේෂිත අවස්ථාවෙහි අර්ථවත් වන එකක් විය. අපගේ නඩුවේදී, ලිස්ප් හෝ යෝජනා ක්‍රමය සමඟ යා යුතුද යන්න තීරණය කිරීමේ සාධක භාෂාවේ හෝ පුස්තකාල විශේෂාංගවලට වඩා මූලික අංග (වේදිකා සහාය, වේදිකා නූල්, ධාවන කාල සම්පාදනය, ධාවන කාල බලපත්‍ර) සමඟ සම්බන්ධ විය. නැවතත්, අපගේ කාරණයේදීද එය වෙළඳාමක් විය: චෙස් සමඟ අපට අවශ්‍ය මූලික අංග අපට ලැබුණද වාණිජ ලිස්ප් පරිසරය තුළ තිබූ පුළුල් පුස්තකාල අපට අහිමි විය.

එසේම, නැවත අවධාරණය කිරීම සඳහා: අපි බොහෝ කලකට පෙර විවිධ තොල් සහ යෝජනා ක්‍රම දෙස බැලුවෙමු; ඒවා සියල්ලම පරිණාමය වී වැඩිදියුණු වී ඇත.


1
වාව්, එය කෙසේ හෝ ලිස්ප් ක්‍රියාවට නැංවීමට වඩා 3-6x මන්දගාමී කාර්ය සාධනයක් කිරීමට සමත් වූයේ නම් එය ඇත්තෙන්ම භයානක ඩෙල්ෆි කේතයක් විය යුතුය ! :(
මේසන් වීලර්

2
+1: මෙම ලිපියේ වඩාත්ම සිත්ගන්නා කරුණ වන්නේ ඔබ ලිස්ප් හි ප්‍රධාන ව්‍යාපෘතියක් ලබා ගැනීමෙන් පසු ලිස්ප් සිට යෝජනා ක්‍රමයට මාරුවීමයි. (නැතහොත් මම බොහෝ වේලාවක් comp.lang.lisp හි සැඟවී සිටිමි.)
ලැරී කෝල්මන්

25
"වාව්, එය කෙසේ හෝ ලිස්ප් ක්‍රියාවට නැංවීමට වඩා 3-6x සෙමින් ක්‍රියා කිරීමට සමත් වූයේ නම් එය ඇත්තෙන්ම භයානක ඩෙල්ෆි කේතයක් විය යුතුය!" හරි, මම එය වඩා හොඳින් පැහැදිලි නොකිරීම මගේ අසමත්කම ලෙස සලකමි. ලිස්ප් ක්‍රියාවට නැංවීම මඟින් පරිශීලක ප්‍රකාශන ලිස්ප් ප්‍රකාශන බවට පරිවර්තනය කිරීමට හැකි විය - එය ඉතා සුළු ක්‍රියාවලියකි - ඉන්පසු ලිස්ප් ප්‍රකාශන ස්වදේශීය කේතයට සම්පාදනය කරන්න (පූර්ණ ප්‍රශස්තිකරණයෙන්). ග්‍රීන්ස්පන්ගේ දහවන රීතියේ තේරුම එයයි.
මයිකල් ලෙනගන්

1
අපූරු පිළිතුර! අවම වශයෙන් වඩා හොඳ එකක් පෙන්වන තුරු මම එය තෝරා ගනිමි :) එක් ප්‍රශ්නයක්: ඔබ කියන්නේ “බොහෝ කලකට පෙර” ක්ෂේත්‍රයේ තත්වය මත පදනම්ව චෙස් යෝජනා ක්‍රමය සමඟ යාමට ඔබ තීරණය කළ බවයි. ඔබට අවුරුද්දක් නියම කළ හැකිද?
සුපර් ඉලෙක්ට්‍රික්

11
එම කරුණ, LISP ක්‍රියාත්මක කිරීම පරිවර්තකයෙකු මත යැපීමට වඩා යන්ත්‍ර කේතයට යමක් සම්පාදනය කිරීමට නිදහස ඇති අතර එය සියුම් හා බෙහෙවින් ප්‍රයෝජනවත් වේ. “ලෙට් ඕවර් ලැම්බඩා” පොත පෙන්වා දෙන්නේ PERL regexp syntax ක්ලෝන කරන අතේ ගෙන යා හැකි පොදු LISP regexp පැකේජය, PERL අභිබවා යමින් සැලකිය යුතු සාධකයක් නිසා බවයි. PERL හි පහළට, රීජෙක්ස් පරිවර්තකය ඇත. පොදු LISP පැකේජය රීජෙක්ස් කේතයට සම්පාදනය කරයි.
ජෝන් ආර්. ස්ට්‍රෝම්

38

මම සාමාන්‍යයෙන් පිළිතුරක් ලෙස සබැඳියක් ඇලවීමට කැමති නැත, නමුත් මම මේ ගැනම බ්ලොග් ලිපියක් ලිව්වෙමි. එය පරිපූර්ණ නොවේ, නමුත් එය හරහා ප්‍රධාන කරුණු කිහිපයක් ලබා ගනී.

http://symbo1ics.com/blog/?p=729

සංස්කරණය කරන්න : මූලධර්ම කරුණු මෙන්න:

  1. පැවැත්ම : තොල් දෙකම පැමිණියේ වෙනත් තොල් පොකුරකට පසුවය. යෝජනා ක්‍රමය අවම, අක්ෂීය මාර්ගයක් ගත්තේය. සීඑල් බැරොක් මාර්ගය ගත්තේය.
  2. CASE : සාමාන්යයෙන් යෝජනා ක්රමය නඩුව සංවේදී ය. සීඑල් නොවේ (එය විය හැකි වුවද). මෙය සමහර විට මග හැරී ඇත, නමුත් එහි ප්‍රායෝගිකත්වය විවාදයට භාජනය වේ (මා විසින්).
  3. නම් : සීඑල් දී සංකේත නම් වේ බොහෝ වතාවක් අමුතු හා අවුල්. TERPRI, PROGNආදිය. යෝජනා ක්‍රමයට සාමාන්‍යයෙන් ඉතා සංවේදී නම් ඇත. මෙය සීඑල් හි මග හැරුණු දෙයක්.
  4. කාර්යයන් : සීඑල් වෙනම කාර්යය නාමඅවකාශයෙහි ඇත. යෝජනා ක්‍රමයේ මෙය මඟ හැරී නොමැත . තනි නාම අවකාශයක් තිබීම සාමාන්‍යයෙන් ඉතා පිරිසිදු ක්‍රියාකාරී ක්‍රමලේඛනයකට ඉඩ සලසයි, එය බොහෝ විට සීඑල් හි දුෂ්කර හෝ අමුතු ය. නමුත් එය පිරිවැයක් දරයි --- ඔබට සමහර විට යෝජනා ක්‍රමයේ " list" සිට " lst" වැනි නම් අපැහැදිලි කිරීමට සිදුවේ .
  5. මැක්‍රෝස් : යෝජනා ක්‍රමයේ වැඩිපුරම පහත් මට්ටමේ අපිරිසිදු මැක්‍රෝස් මට මග හැරී ඇත. ඔව්, syntax-rulesඔබට යම් යම් දේ අනවසරයෙන් ඉවත් කිරීමට අවශ්‍ය වන තෙක් සියල්ල හොඳයි. අනෙක් අතට, සනීපාරක්ෂක මැක්‍රෝස් සමහර විට සීඑල් හි මග හැරී ඇත. ඒවා කිරීමට සම්මත ක්‍රමයක් නොමැති වීම යනු රෝදය නැවත ප්‍රතිනිර්මාණය කිරීමයි.
  6. හැකියාව : භාෂා දෙකම ප්‍රමිතිගත කර තිබියදීත්, සීඑල් වඩාත් අතේ ගෙන යා හැකි ය. සීඑල් විශාල වන අතර එබැවින් බාහිර පුස්තකාල නොමැතිව භාවිතා කිරීමට වඩා සම්මත ලක්ෂණ ඇත. එයින් කියවෙන්නේ වැඩිපුර ක්‍රියාත්මක කිරීම මත යැපෙන දේවල් අතේ ගෙන යා හැකි බවයි. එසේම, යෝජනා ක්‍රමය ට්‍රිලියන ගණනක් ක්‍රියාත්මක කිරීමෙන් පීඩා විඳින අතර ඒවායින් බොහොමයක් තරමක් නොගැලපේ. මෙය සීඑල් ඉතා ප්‍රිය කරයි.
  7. පුස්තකාල : මගේ අවසාන කරුණට බොහෝ සම්බන්ධයි. යෝජනා ක්‍රමයට SRFIs ඇති නමුත් ඒවා විශ්වීයව පිළිගන්නේ නැත. පුස්තකාල සමඟ වැඩ කිරීමට අතේ ගෙන යා හැකි ක්‍රමයක් නොමැත. අනෙක් අතට සීඑල්ට ක්‍රම තිබේ. ක්වික්ලිස්ප් යනු දෙවියන්ගේ (ෂාච්) තෑග්ගකි --- භාවිතය සඳහා පුස්තකාල ගබඩාවකි.
  8. ක්‍රියාත්මක කිරීම් : යෝජනා ක්‍රම බොහෝ ක්‍රියාත්මක කිරීමෙන් පීඩා විඳිති. සැබෑ කැනොනිකල් ක්‍රියාත්මක කිරීමක් නොමැත. අනෙක් අතට සීඑල් ඉතා හොඳ ඉහළ කාර්ය සාධනයක් හෝ විශේෂිත භාවිතයන් ක්‍රියාත්මක කරයි (ඉහළ කාර්ය සාධනය: එස්බීසීඑල්, ​​වාණිජ: ඇලෙග්‍රෝ, කාවැද්දූ: ඊසීඑල්, ​​අතේ ගෙන යා හැකි: සීඑල්එස්පී, ජාවා: ඒබීසීඑල්, ​​...).

මම පළමු පුද්ගලයා සමඟ මඳක් ඉහළින් කතා කළ අතර, මට මග හැරුණු දේ සහ මා නොකළ දේ පැහැදිලි විය යුතුය.

[මේවා සාමාන්‍ය නම් මම සමාව ඉල්ලමි. ඔබට තවත් විශේෂිත තොරතුරු අවශ්‍ය විය හැකි බව පෙනේ. තනතුරේ විශේෂතා කිහිපයක් තිබේ.]


(සැබවින්ම) කෙටි ටීසර් සාරාංශයක් ගැන කුමක් කිව හැකිද? ^^
ඩේව් ඕ.

2
කරුණාකර උද්දීපනය කරන්න. පිළිතුරු ස්වයං ස්ථාවර විය යුතුය.

1
Ave ඩේව් ඕ. සහ or තෝර්බ්ජර්න් රව්න් ඇන්ඩර්සන්: ඉල්ලූ පරිදි සාරාංශයක් එක් කරන ලදි. ස්තූතියි.
Quadrescence

3
"බැරොක් මාර්ගය"! එය තැබීමට කෙතරම් හොඳ ක්‍රමයක්ද?
මාර්ක් සී

පොදු ලිප්ස් සිද්ධි සංවේදී වන නමුත් එය ඇගයීමට පෙර එහි ආදානය ලොකු අකුරට පරිවර්තනය කරයි. කුඩා අකුරු සංකේත වලින් උපුටා දැක්වීමෙන් ඔබට ලබා ගත හැකිය. නම ගැටළුව වන්නේ යෝජනා ක්‍රමය නරක පැරණි නම් ඉවත් කර ඇති අතර සීඑල් එසේ නොකළ බැවිනි.
ඩේවිඩ් තෝර්න්ලි

26

මම මෑතකදී සී අනුවාදයක් සහ ජාවා අනුවාදයක් ඇති පුස්තකාලයක් භාවිතා කරමින් නිවාස ව්‍යාපෘතියක් ආරම්භ කළෙමි. ව්‍යාපෘතිය සඳහා ලිස්ප් භාවිතා කිරීමට මට අවශ්‍ය වූ අතර, පොදු ලිස්ප්, යෝජනා ක්‍රමය හෝ ක්ලෝජුර් භාවිතා කිරීම අතර මාසයක් පමණ ගත කළෙමි. මේ තුන ගැනම මට යම් අත්දැකීමක් ඇත, නමුත් සෙල්ලම් ව්‍යාපෘති පමණි. මම තෝරාගත්තේ කුමන එකක්දැයි ඔබට පැවසීමට පෙර, ඒ එක් එක් අය සමඟ මගේ අත්දැකීම් ගැන මම ඔබට ටිකක් කියන්නම්.

පීඑල්ටී රැකට් සතුව හොඳ අයිඩීඊ එකක් ඇති අතර එය සංස්කාරකයේ ප්‍රකාශන තක්සේරු කිරීමට පමණක් නොව, පාරෙන් වෙනුවට වරහන් ටයිප් කිරීමට ද ඉඩ සලසයි. ස්ථාපනය සමඟ රාකට්හි විශාල පුස්තකාල සමූහයක් ඇති අතර බාගත කිරීම සඳහා ඊටත් වඩා තිබේ. දෘශ්‍ය නිදොස්කරණය ද උපකාරී වේ.

මගේ පොදු ලිස්ප් ක්‍රියාවට නැංවීමේ (එස්බීසීඑල්) අයිඩීඊ එකක් නැත, නමුත් ඊමාක්ස් සහ ස්ලයිම් භාවිතා කිරීම විවෘත කේත සීඑල් ක්‍රියාත්මක කිරීම සමඟ සිරිතකි. මෙම සංයෝජනය ඉතා කාර්යක්ෂම විය හැකිය. ප්‍රකාශන මූලාශ්‍ර ගොනුවට ටයිප් කරන විට ඒවා තක්සේරු කිරීමේ හැකියාව සමඟ, REPL ද ඇත, එහි සියලුම සංස්කරණ විධානයන් ඇත. එබැවින් කේත පිටපත් කිරීම දෙයාකාරයෙන්ම කාර්යක්ෂමව යා හැකිය. REPL බෆරයේ දර්ශනය වන වස්තූන් පවා පිටපත් කර ඇලවිය හැකිය. Alt+(හා Alt+)ගැලපෙන වරහන් සහ එබුම සම්බන්ධයෙන් කටයුතු කිරීම සඳහා කාර්යක්ෂම වේ.

ඉහත සියලුම Emacs විශේෂාංග Clojure සඳහා ද ලබා ගත හැකිය. ක්ලෝජුර් සමඟ මගේ සංස්කරණ අත්දැකීම ලිස්ප්ගේ අත්දැකීමට සමානය. ජාවා අන්තර් ක්‍රියාකාරීත්වය හොඳින් ක්‍රියාත්මක වූ අතර එය පරිණත වූ පසු ක්ලෝජුර් ව්‍යාපෘතියක් කිරීමට මම කැමතියි.

(පොදු ලිස්ප්, රාකට් සහ ක්ලෝජුර්) තුනම භාවිතා කරමින් මට පුස්තකාලයට පිවිසීමට හැකි විය, නමුත් මම ව්‍යාපෘතිය සඳහා පොදු ලිප්ස් තෝරා ගැනීම අවසන් කළෙමි. තීරණාත්මක සාධකය වූයේ පොදු තොල්වල FFI භාවිතා කිරීම වඩා පහසු වීමයි. උදාහරණ කේතය සහ එක් එක් ක්‍රමවේදය පිළිබඳ සවිස්තරාත්මක පැහැදිලි කිරීම් සහිත CFFI ඉතා හොඳ අත්පොතක් ඇත. මට දහවල් කාලයේදී 20 සී කාර්යයන් එතීමට හැකි වූ අතර එතැන් සිට කේතය ස්පර්ශ කිරීමට මට නොහැකි විය.

අනෙක් සාධකය වූයේ ක්ලෝජුර් හෝ ආර් 6 ආර්එස් යෝජනා ක්‍රමයට වඩා මම පොදු ලිප්ස් ගැන හුරුපුරුදු වීමයි. මම ප්‍රායෝගික පොදු ලිස්ප් සහ ග්‍රැහැම්ගේ පොත් බොහොමයක් කියවා ඇති අතර මට හයිපර්ස්පෙක් සමඟ සැපපහසුයි. එය තවමත් "ලිස්පි" කේතයක් නොවේ, නමුත් මට වැඩි අත්දැකීමක් ලැබෙන විට එය වෙනස් වනු ඇතැයි මට විශ්වාසයි.


විස්තරයට ස්තූතියි! ක්ලෝජුර්ට වඩා එස්බීසීඑල් හි එෆ්එෆ්අයි භාවිතා කිරීම පහසු යැයි ඔබ සිතූ බව මට නිවැරදිව තේරෙනවාද? එසේ නම්, මම ඒ ගැන පුදුමයට පත් වෙමි, ඔබට ජාවා ක්‍රම ක්ලෝජුරේ වෙතින් කෙලින්ම ඇමතීමෙන් ඒවා එතීමෙන් තොරව කළ හැකිය. (නැතහොත් ඔබට ස්වදේශීය කේතය ඇමතීමට අවශ්‍යද?)
සුපර් ඉලෙක්ට්‍රික්

6
Up සුපර් ඉලෙක්ට්‍රික්: ක්ලෝජුර් වෙතින් “බිල්ට්” ජාවා ක්‍රම කැඳවීම සුළුපටු ය; බාගත කළ පුස්තකාලයක ඇති ජාවා ක්‍රම අමතන්න: එතරම් නොවේ. මගේ පළමු සී ක්‍රමය එස්බීසීඑල් වෙතින් සීඑෆ්එෆ්අයි සමඟ වැඩ කිරීමට මට ගත වූවාට වඩා මම පන්තියේ මාවත සහ ආනයන මාර්ග නිවැරදිව ලබා ගැනීමට වැඩි කාලයක් ගත කළෙමි. නමුත් මම ජාවා විශේෂ expert යෙක් නොවේ, එබැවින් ඔබේ සැතපුම් ගණන වෙනස් විය හැකිය.
ලැරී කෝල්මන්

21

මම සීඑල් සහ රාකට් යන දෙඅංශයෙන්ම වැඩසටහන් කරමි.

මම දැන් පොදු ලිප්ස් හි වෙබ් අඩවියක් සංවර්ධනය කරමින් සිටිමි, මගේ කලින් සේවායෝජකයා සඳහා රාකට්හි අභ්‍යන්තර වැඩසටහන් රාශියක් ලිවීය.

ගෘහස්ථ කේතය සඳහා, සේවායෝජකයා වින්ඩෝස් සාප්පුවක් වූ නිසා මම රාකට් (එවකට පීඑල්ටී යෝජනා ක්‍රමය ලෙස හැඳින්වූවෙමි) තෝරා ගත්තෙමි, මට ඒවා ලිස්ප් වර්ක්ස් සඳහා ගෙවීමට නොහැකි විය. වින්ඩෝස් සඳහා ඇති එකම හොඳ විවෘත සීඑල් ක්‍රියාවට නැංවීම (සහ තවමත් පවතී) සීසීඑල්, ​​එයට ප්‍රොසෙසරයේ එස්එස්ඊ සහාය අවශ්‍ය වේ. සේවායෝජකයා ලාභදායී බැවින් ගල් යුගයේ දෘඩාංග භාවිතා කළේය. සේවායෝජකයාට හොඳ දෘඩාංග තිබුනද, පොදු ලිප්ස් හි ප්‍රතිවිපාක ඇති එකම GUI පුස්තකාලය වන්නේ මැක්ලිම් ය, එය ක්‍රියාත්මක වන්නේ යුනික්ස් මත පමණි. මගේ ව්‍යාපෘතියේ සාර්ථකත්වයට තීරණාත්මක වූ යුනික්ස් සහ වින්ඩෝස් යන දෙවර්ගයේම වැඩ කරන හොඳ GUI පුස්තකාලයක් රාකට් සතුව ඇත.

මම ප්‍රාථමික ඩ්‍රැකට් සංස්කාරකවරයා සමඟ වසරක් ගත කළෙමි. එවකට MrEd ලෙස හැඳින්වූ රාකට් හි GUI අනුවාදය වින්ඩෝස් හි පහත්-තොල් බවට හැරවීමට EMACS හට නොහැකි විය. කර්සරයේ ප්‍රකාශනය තනි යතුරු පහරකින් තක්සේරු කිරීමට මට නොහැකි විය. ඒ වෙනුවට, මට S- ප්‍රකාශනය අතින් තෝරා ගැනීමට, එය පිටපත් කිරීමට, REPL කවුළුව මත ක්ලික් කරන්න (එයට මාරුවීමට යතුරු එබීමක් නොමැති නිසා), පසුව S- ප්‍රකාශනය අලවන්න. මා විසින් භාවිතා කරන ලද ශ්‍රිතයේ හෝ සාර්වයේ අපේක්ෂිත තර්ක මට පෙන්විය හැකි සංස්කාරකයක් නොමැතිව මට කිරීමට සිදු විය. DrRacket SLIME සඳහා ආදේශකයක් නොවේ.

සේවායෝජකයා භාවිතා කළේ සංකීර්ණ XML API සහිත හිමිකාර දත්ත ගබඩාවක් වන අතර එමඟින් SELECT විමසුමක අනුවාදයට ප්‍රතිචාර දැක්වීමට අනවශ්‍ය තොරතුරු රාශියක් අවශ්‍ය විය. මෙම API වෙත XML විමෝචනය කිරීමට සහ ප්‍රතිචාර විග්‍රහ කිරීමට HTMLPrag දෙකම භාවිතා කිරීමට මම තීරණය කළෙමි. ඒක නියමයි.

SQL මෙන් පෙනෙන ආකෘති ටයිප් කිරීමෙන් අතිරික්ත XML API සමඟ අන්තර් ක්‍රියා කිරීමට මට ඉඩ සලසන සාර්වයක් ලිවීම සඳහා මට රාකට්ගේ අතිරික්ත “සින්ටැක්ස්-කේස්” සාර්ව පද්ධතිය ඉගෙන ගැනීමට සිදු විය. මගේ අතෙහි ඩෙෆ්මාක්‍රෝ සිටියා නම් මෙම කොටස වඩාත් පහසු වනු ඇත. කෙසේ වෙතත්, අවසාන ප්‍රති result ලය ලබා ගැනීමට වැඩි උත්සාහයක් ගත්තද එය තවමත් බාධාවකින් තොරව පැවතුනි.

තවද, පොදු ලිස්ප්ගේ LOOP සාර්ව නොමැතිව මට කිරීමට සිදුවිය. රාකට් විකල්පයක් ලබා දීමට පටන් ගත්තේ මා බොහෝ කේත ලිවීමෙන් පසුව පමණක් වන අතර විකල්පය තවමත් LOOP හා සසඳන විට (රැකට්ගේ සංවර්ධන කණ්ඩායම අවධාරනය කළත් එය වඩා හොඳය - ඒවා වැරදියි). මම ලැයිස්තු ගත කිරීම සඳහා "කාර්" සහ "සීඩීආර්" භාවිතා කළ නම් කරන ලද එල්ඊටී ආකෘති ගොඩක් ලිවීම අවසන් කළෙමි.

මෝටර් රථය සහ සීඩීආර් ගැන කථා කිරීම, යෝජනා ක්‍රමය (කාර් '()) දෝෂයක් ලෙස අර්ථ දැක්වීමට වඩා කලකිරවන කිසිවක් නැත. මම රාකට්ගේ සිද්ධි සංවේදීතාවයෙන් ප්‍රයෝජන ගත් අතර පොදු ලිස්ප්ගේ අර්ථ නිරූපණයන් සහිත CAR සහ CDR ක්‍රියාත්මක කළෙමි. කෙසේ වෙතත්, '() සහ #f වෙන් කිරීමෙන් පෙරනිමි අගයක් ලෙස නැවත පැමිණීම ප්‍රයෝජනවත් නොවේ.

මම UNWIND-PROTECT නැවත ක්‍රියාත්මක කිරීම අවසන් කළ අතර, රාකට් විසින් ඉතිරි කර ඇති පරතරය පිරවීම සඳහා මගේම නැවත ආරම්භ කිරීමේ පද්ධතියක් නිර්මාණය කළෙමි. නැවත ආරම්භ කිරීම ඉතා ප්‍රයෝජනවත් සහ ක්‍රියාත්මක කිරීමට පහසු බව රාකට් ප්‍රජාව ඉගෙන ගත යුතුය.

රාකට්ගේ ඉඩ-වටිනාකම් ආකෘතිය ඕනෑවට වඩා වාචික බැවින් මම බහු-අගය-බන්ධනය ක්‍රියාත්මක කළෙමි. මෙය අනිවාර්යෙන්ම අවශ්‍ය විය, මන්ද ඔබ භාවිතා කළත් නැතත් ජනනය වන සියලු අගයන් ලබා ගැනීමට රාකට්ටුවට අවශ්‍ය වේ .

පසුව, මම පොදු ලිප්ස් හි ඊ බේ එක්ස්එම්එල් ඒපීඅයි ග්‍රාහකයක් ලිවීමට උත්සාහ කළෙමි, එයට HTMLPrag වැනි කිසිවක් නොමැති බව සොයා ගැනීමට පමණි. HTMLPrag frickin ප්‍රයෝජනවත් වේ. මම ඒ ව්‍යාපෘතිය රාකට් එකේ කළා. මම රාකට්ගේ සාක්ෂරතා ක්‍රමලේඛන පහසුකම් අත්හදා බැලුවෙමි, සාමාන්‍ය කේතයට වඩා නිවැරදිව ලියා ඇති සාක්ෂරතා කේතය සංස්කරණය කිරීමට අපහසු හෝ නුසුදුසු ලෙස ලියා ඇති “අධික අදහස්” සාක්ෂරතා කේතය සොයා ගන්නා පෘථිවියේ සිටින එකම ක්‍රමලේඛකයා මම බව සොයා ගැනීමට පමණි.

මගේ නව ව්‍යාපෘතිය පොදු ලිප්ස් හි සිදු කෙරෙමින් පවතී, එය නිවැරදි තේරීම වූ අතර මෙම ව්‍යාපෘතිය සඳහා අත්‍යවශ්‍ය වන සමාන්තරකරණය ගැන රාකට් ප්‍රජාව විශ්වාස නොකරයි. මම හිතපු එකම දේ මට රැකට් එකෙන් මග හැරෙන්න ඇති. කෙසේ වෙතත්, නැවත ආරම්භ කිරීම මඟින් මට අවශ්‍ය දේ කිරීමට මට හැකි වූ අතර, නැවත සලකා බැලීමේදී, සරල වසා දැමීමකින් එය කළ හැකිව තිබුණි.


2
මම එය තනිවම අත්හදා බැලුවේ නැත, නමුත් ඊමාක්ස් සමඟ විධාන රේඛා ජාවාරම් වැඩසටහන භාවිතා කරන පුද්ගලයින්ගේ බ්ලොග් සටහන් මම දැක ඇත්තෙමි. උදාහරණයක් ලෙස: bc.tech.coop/scheme/scheme-emacs.htm
ලැරී කෝල්මන්

5
ඇත්ත වශයෙන්ම, ඔබ යෝජනා ක්‍රමයට පැමිණියේ සීඑල් ලිවීමට අවශ්‍ය නිසා මෝඩ යෝජනා ක්‍රමයක් වන POV වෙතින් දේවල් වෙත ළඟා වීමට උත්සාහ කිරීමෙනි. උදාහරණයක් ලෙස, යෝජනා ක්‍රම ලූප භාවිතා කරනවාට වඩා පුනරාවර්තනය දිරිමත් නොකරයිද?
ස්ලෙඩ්

TArtB යෝජනා ක්‍රමය හුදෙක් පුනරාවර්තනය දිරිමත් නොකරයි, එයට එය අවශ්‍ය වේ , එබැවින් ඇත්ත වශයෙන්ම ඉහත සඳහන් කළ ව්‍යාපෘතිය මඟින් පුනරාවර්තනයක් භාවිතා කරන ලදී. එය පුනරාවර්තනය එකතු කිරීම සඳහා පමණක් සේවය කර ඇත ( උදාහරණයක් ලෙස ඔබ පෝරමයේ සෑම ශාඛාවකම පුනරාවර්තන ඇමතුමේ පිටපතක් ඇතුළත් කළ condයුතුය) සහ දෝෂ (මම එම අවස්ථාවේ දී ලූප් අවසන් කිරීමේ පරීක්ෂණය නිවැරදිව ලිව්වාද?) අද පවා මට හැඟේ රාකට්ටුව ප්‍රධාන වශයෙන් අදහස් කරන්නේ සිසුන් සඳහා මිස වෘත්තීය ක්‍රමලේඛකයින් සඳහා නොවේ. මා හැර වෙනත් අයෙකු එය භාවිතා කරන බව මට ඇසෙන සෑම අවස්ථාවකම ඔවුන් “ආරම්භක ශිෂ්‍ය” උපභාෂාව භාවිතා කරන අතර එය පන්තියක් සඳහා වේ.
ගිණුම ඉවතට විසි කරන්න

ඔබ COND හරහා කේතය පුනරාවර්තනය කරන්නේ නම් ඔබට කියන්නේ ඔබට වෙනත් ශ්‍රිතයක් අවශ්‍ය බවයි?
Sled

ArtArtB විවිධ තර්ක සමඟ ලූප ශ්‍රිතය ඇමතීමේ ශ්‍රිතයක්ද? එය එක්තරා තේරුමක් නැති දෙයක් වනු ඇත. ඕනෑම කෙනෙකුගේ යෝජනා ක්‍රමයේ එවැනි පුනරාවර්තනයක් ඔබට පෙනේ. රාකට්ගේම මූලාශ්‍ර කේතයේ උදාහරණ පවා තිබේ.
ගිණුම ඉවතට විසි කරන්න

5

යෝජනා ක්‍රමය නිර්මාණය කර ඇත්තේ වෙනම සම්පාදනයක් මනසේ තබාගෙන ය. එහි ප්‍රති consequ ලයක් ලෙස, දුර්වල, සීමිත සනීපාරක්ෂක සාර්ව පද්ධතියක් වෙනුවට පොදු ලිස්ප් විලාසිතාවේ ඩෙෆ්මැක්‍රෝවකට ඉඩ දෙන දිගු සමඟ වුවද, එහි සාර්වවල බලය බොහෝ විට දැඩි ලෙස සීමා වේ. ඊලඟ කේත පේළියක ක්ෂණික භාවිතය සඳහා අදහස් කරන වෙනත් සාර්වයක් නිර්වචනය කරන සාර්වයක් නිර්වචනය කිරීම සැමවිටම කළ නොහැක. කාර්යක්ෂම ඊඩීඑස්එල් සම්පාදකයින් ක්‍රියාත්මක කිරීම සඳහා එවැනි හැකියාවක් අත්‍යවශ්‍ය වේ.

R5RS සනීපාරක්ෂක මැක්‍රෝස් පමණක් සහිත යෝජනා ක්‍රම ක්‍රියාත්මක කිරීම මට එතරම් ප්‍රයෝජනවත් නොවන බව අමුතුවෙන් කිව යුතු නැත, මන්ද මගේ මෙට්‍රොප්‍රොග්‍රැමිං විලාසය සනීපාරක්ෂාව සඳහා ප්‍රමාණවත් ලෙස පරිවර්තනය කළ නොහැකි බැවිනි.

වාසනාවකට මෙන්, එම සීමාවන් නොමැති යෝජනා ක්‍රම ක්‍රියාත්මක කිරීම් (උදා: රාකට්) ඇත.


1
හායි, මම දැන් රාකට් භාවිතා කරමින් යෝජනා ක්‍රමය සමඟ මගේ පාද තෙත් කිරීමට පටන් ගතිමි. රාකට් හි සනීපාරක්ෂක නොවන මැක්‍රෝස් භාවිතා කිරීම පිළිබඳ ඉක්මන් උදාහරණයක් සැපයීමට ඔබ කැමතිද? ලබා ගත හැකි මැක්‍රෝස් වර්ගය සීඑල් සහ යෝජනා ක්‍රමය අතර වඩාත්ම උණුසුම් විවාදයට තුඩු දුන් කරුණක් සේ පෙනේ.
තැඹිලි 80

@ තැඹිලි 80, එක් ප්‍රවේශයක් වන්නේ docs.racket-lang.org/mzlib/mzlib_defmacro.html තවද, ඇත්ත වශයෙන්ම, R6RS ප්‍රකාරයේදී අඩු සීමිත ක්‍රමයක් ඇත.
එස්.කේ.-තර්කනය

K එස්.කේ.-තර්කනය එතරම් සනීපාරක්ෂක නොවන මැක්‍රෝස් සමඟ ඔබ කරන්නේ කුමක්ද?
Sled

1
R ආර්ට්බී, මම ඊඩීඑස්එල් සම්පාදක කාර්යයන් ලෙස ක්‍රියාත්මක කරමි, ඒවායේ ප්‍රභව AST සමඟ බොහෝ දේ කළ හැකිය. සනීපාරක්ෂාව යනු එවැනි ප්‍රවේශයක් තුළ ඇති සම්පූර්ණ කරදරයකි. ඔබට එය ක්‍රියාත්මක වන ආකාරය දෙස බැලිය හැකිය: github.com/combinatorylogic/mbase
තර්කනය
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.