பீன் மெஷின் ரெட்ரோஸ்பெக்டிவ், பகுதி 8

பீன் மெஷின் ரெட்ரோஸ்பெக்டிவ், பகுதி 8


எனது காம்பினேட்டரால் ஈர்க்கப்பட்ட சோர்ஸ் கோட் டிரான்ஸ்ஃபர்மேஷன் சிஸ்டம் எவ்வாறு செயல்படுகிறது என்பதைப் பற்றிய விவரங்களைப் பெறுவதற்கு முன், நான் முதலில் சொல்ல வேண்டும், கணினியின் பொதுவான கண்ணோட்டம் என்ன? இரண்டாவதாக, நான் அதை ஏன் கட்டினேன்? எனது அனுபவத்தில், ஒரு பொதுவான கம்பைலரின் AST ரீரைட்டர், இணைப்பான் அடிப்படையிலான அணுகுமுறையைப் பயன்படுத்துவதில்லை. எடுத்துக்காட்டாக, ரோஸ்லின் பார்வையாளர் வடிவத்தை மறுபதிப்பாளர்களை உருவாக்க பிரத்தியேகமாகப் பயன்படுத்தினார், அது மிகவும் பொதுவானது.


அடிப்படைக் கண்ணோட்டம்: AST மாற்றத்திற்கான செயல்பாட்டு நிரலாக்க அணுகுமுறையைப் பயன்படுத்துகிறோம்.

  • ஏ முறை AST இலிருந்து bool வரை ஒரு செயல்பாட்டைக் குறிக்கிறது. இது நாம் மாற்ற விரும்பும் AST முனையா?
  • ஏ ஆட்சி AST இலிருந்து AST வரையிலான “பகுதி” செயல்பாட்டைக் குறிக்கிறது. “பகுதி” என்பதன் அர்த்தம் என்னவென்றால், AST கொடுக்கப்படும்போது, ​​அதே AST, வேறு AST அல்லது கொடுக்கப்பட்ட உள்ளீட்டிற்கு விதி பொருந்தாது என்பதைக் குறிக்கும் தோல்விக் குறியீட்டை வழங்க ஒரு விதி அனுமதிக்கப்படுகிறது.
  • ஏ இணைப்பான் சில விதிகள் மற்றும் வடிவங்களை எடுத்து ஒரு விதி அல்லது ஒரு வடிவத்தை வழங்கும் ஒரு செயல்பாடாகும்.

அது மிகவும் ஹைஃபாலுடின், எனக்குத் தெரியும். அடுத்த முறை மாதிரிகளின் சில எடுத்துக்காட்டுகளையும், எளிமையானவற்றைப் பிரதிநிதித்துவப்படுத்துவதற்கான சுருக்கமான வழியையும் பார்ப்போம்.


பீன்-மெஷின்-டு-பிஎம்ஜி கம்பைலரான பீன்ஸ்டாக்கிற்கான காம்பினேட்டர் அணுகுமுறையை ஏன் தேர்வு செய்ய வேண்டும்? எனக்கு பல காரணங்கள் இருந்தன:

  • இந்த அணுகுமுறை நிறைய கொடுக்கிறது சுருக்கம் பல விதிகள் மற்றும் வடிவங்களுக்கு. எளிமையான குறியீடு எளிமையானதாகத் தெரிகிறது, படிக்க எளிதானது, மிக முக்கியமாக, அதன் சரியான தன்மையைப் பற்றி நியாயப்படுத்துவது எளிது. சரியாகச் சொல்வதானால், இந்த நன்மை ஓரளவு மிகவும் சிக்கலான சில மாற்றங்களை புரிந்துகொள்வது கொஞ்சம் தந்திரமானதாக மாற்றுவதன் மூலம் ஈடுசெய்யப்பட்டது, ஆனால் நான் அவற்றை மட்டுப்படுத்த முயற்சித்தேன்.
  • மீண்டும் எழுதும் தர்க்கத்தின் எந்தப் பகுதியும் மிக எளிதாக இருக்கும் சுயாதீனமாக சோதிக்கப்பட்டது. நீங்கள் எந்த முன்னறிவிப்பு, ஏதேனும் மாற்றம் விதி அல்லது அவற்றின் கலவையை சோதிக்க விரும்பினால், சோதனை நிகழ்வுகளை உருவாக்குவது நேரடியானது.
  • பரிசோதனை செய்தல் பல்வேறு மாற்றி எழுதும் உத்திகள் அற்பமானதாகிறது. எடுத்துக்காட்டாக, பல AST மாற்றங்கள் “மேலிருந்து கீழ்” வேலை செய்கின்றன – அதாவது, அவை ரூட் முனையை மாற்றுகின்றன, பின்னர் குழந்தைகளை மாற்றுகின்றன, மற்றும் பல, இலைகளை நோக்கிச் செல்கின்றன என்பதை பின்னர் பார்ப்போம். கீழே இருந்து மேல் மீண்டும் எழுதுபவர் மிகவும் திறமையானவரா, அங்கு நாம் இலைகளை மாற்றி வேர் வரை நகர்த்துகிறோம்? ஒரு வழக்கமான கம்பைலரில், ஒரு அல்காரிதத்தை மேலிருந்து கீழாக இருந்து கீழாக மாற்றுவது கணிசமான மாற்றமாக இருக்கலாம், ஆனால் நாம் பார்ப்பது போல், மேல்-கீழ் டிராவர்சலை பாட்டம்-அப் டிராவர்சலாக மாற்றுவது ஒற்றை செயல்பாட்டு அழைப்பை மாற்றுவதாகும்.
    • மேலும், கவர்ச்சியான உத்திகள் எளிதாக சோதனை செய்ய வேண்டும். “மேலிருந்து கீழாக, பின்னர் மீண்டும் கீழே இருந்து மீண்டும் எழுதப்பட்டவற்றைப் பயன்படுத்துங்கள், ஒரு ஃபிக்ஸ்பாயிண்ட் அடையும் வரை முன்னும் பின்னுமாகச் சென்று கொண்டே இருங்கள்” என்று நாம் முயற்சி செய்ய விரும்பினால் எளிதாக இருக்கும். ஆப்டிமைசேஷன் காம்பினேட்டர் – “இந்த n வெவ்வேறு மாற்றங்களை முயற்சிக்கவும், பின்னர் சில செலவு செயல்பாட்டைக் குறைக்கும் ஒன்றைத் தேர்ந்தெடுக்கவும்” – நான் எழுதுவதை முடிக்கவில்லை, ஆனால் நான் நிச்சயமாக விரும்பினேன்.
  • எனது கணினியில் உருமாற்ற விதிகள் செயல்பாடுகள் மட்டுமல்ல, அவை சுயமாக விவரிக்கும் பொருள்கள். இது சில சுவாரசியங்களுக்கு வழிவகுக்கும் பிழைத்திருத்த நன்மைகள். எடுத்துக்காட்டாக, சில விதிகள் எப்போதும் வெற்றி பெறும் என்று அறியப்படுகிறது, மேலும் சில இணைப்பாளர்கள் அது தோல்வியடையும் வரை ஒரு விதியைப் பயன்படுத்துகின்றனர். எப்பொழுதும் வெற்றிபெறும் ஒரு உருமாற்றத்தை அது தோல்வியடையும் வரை அதை இயக்கும் ஒரு இணைப்பாளருக்கு அனுப்புவது ஒரு எல்லையற்ற வளையத்தை உருவாக்கப் போகிறது. ஆனால் தோல்வி வரை தனது ஆட்சியை இயக்கும் இணைப்பான் “ஒருபோதும் தோல்வியடையாத விதிகளில் நீங்களும் ஒருவரா?” என்று கேட்கலாம். மற்றும் உடனடியாக வலியுறுத்துங்கள், பிழையை முன்கூட்டியே கண்டுபிடித்துவிடுங்கள். (அந்த அம்சத்தை தூண்டியது எது என்பதை நீங்கள் யூகிக்க முடியும்!)
  • வேடிக்கையாக இருக்கிறது! தொகுப்பாளர்களுக்கான “நானோபாஸ்” கட்டமைப்புகளின் சாத்தியக்கூறுகள் மற்றும் Stratego போன்ற மொழிகளை மீண்டும் எழுதுவதன் மூலம் நான் எப்போதும் ஆர்வமாக இருந்தேன். நான் ஸ்ட்ராடெகோவைச் சார்ந்து இருக்க விரும்பவில்லை (பைதான் அடிப்படையிலான கம்பைலரில் இருந்து அவ்வாறு செய்வது சிரமமாக இருந்திருக்கும்) ஆனால் மறுபரிசீலனை செய்பவரின் முக்கிய பகுதிகளை செயல்படுத்துவது மிகவும் எளிமையானது, எனவே இந்த யோசனைகளை இறுதியாக நடைமுறைக்குக் கொண்டுவருவதற்கான வாய்ப்பைப் பெற்றேன்.

அடுத்த முறை FAIC இல்: நாங்கள் கணினி புரோகிராமர்கள் என்பதால், சிக்கலை இன்னும் சிறிய துணைப் பிரச்சனைகளாகப் பிரிப்போம். பைத்தானில் சுருக்கமாக AST களைப் பற்றிய முன்னறிவிப்புகளை எவ்வாறு பிரதிநிதித்துவப்படுத்துவது, பின்னர் அவற்றை இணைப்பான்களுடன் எவ்வாறு உருவாக்குவது?

இந்த இடுகை ericlippert ஆல் வகைப்படுத்தப்படவில்லை. பெர்மாலிங்கை புக்மார்க் செய்யவும்.



Source link

Postagens Similares

  • Apple’s Mistake

    November 2009 I don’t think Apple realizes how badly the App Store approval process is broken. Or rather, I don’t think they realize how much it matters that it’s broken. The way Apple runs the App Store has harmed their reputation with programmers more than anything else they’ve ever done. Their reputation with programmers used…

  • ஆப்பிள் வெள்ளிக்கிழமை இரவு பேஸ்பால் கவரேஜுக்கு ஐபோன்களைச் சேர்க்கிறது – ஆறு வண்ணங்கள்

    டோட்ஜர் ஸ்டேடியத்தில் ஒரு ஆரஞ்சு தொலைபேசியை கற்பனை செய்து பாருங்கள். (ஆப்பிள் டிவி+) ஆச்சரியம்! கடந்த வெள்ளிக்கிழமை, ஆப்பிள் டிவியின் வெள்ளிக்கிழமை இரவு பேஸ்பால் ஒளிபரப்பு ஜயண்ட்ஸ் மற்றும் டோட்ஜர்ஸ் ஐபோன் 17 ப்ரோவில் எடுக்கப்பட்ட பல காட்சிகளைக் கொண்டிருந்தன. சீசனின் இறுதி வெள்ளிக்கிழமை இரவில், இன்றிரவு புலிகள்-சிவப்பு சாக்ஸ் விளையாட்டின் போது (இரவு 7 மணி) நிறுவனம் மீண்டும் மீண்டும் செய்யும். ஆப்பிளின் கூற்றுப்படி, ஃபென்வே பூங்காவில் நான்கு ஐபோன் 17 சாதகங்கள் நிலைநிறுத்தப்படும் –…

  • 鳥の名前 その1

    Bean Machine の回顧展の次の部分を理解するには、少し余談をする必要があります。私がブログを書き続けてきた約 20 年間を振り返ってみると、組み合わせ論理に対する自分の評価についてほんの少ししか言及していないことに驚きました。次の数回のエピソードでは、それを私に紹介した素晴らしい本に基づいて簡単に紹介します。 アラバマ物語をあざけるには、故レイモンド・スマリヤン著。 数羽の鳥、おそらく有限または無限の数の鳥がいる森を想像してください。これらは珍しい鳥です。森の鳥の種名を森の鳥に呼ぶと、森の鳥が呼び返します。同じかもしれないし、違うかもしれないが、あなたが鳥の名前を言うと、鳥はあなたにその鳥の名前を返します。森の中にアカショウビンの枢機卿がいるかもしれません。オオアオサギを呼ぶと、カワセミが呼び戻します。 (写真は私によるものです。クリックすると高解像度が表示されます。) 「電話しました」と記します。 Q に P そして返事が来た R” として PQ = R。それで声をかけたら S に R そして R と答えた T、それを次のように表記します PQS = RS = T。わかりやすい方法で括弧を使用します。 PQS = (PQ)S そしてこれは違うかもしれません P(QS)。後者は「電話しました」 S に Q、そして電話しました Qさんの返答 P「。特定の鳥の名前を表すには大文字を使用し、変数を表すには小文字を使用します。 ここで検討している質問は次のとおりです。 どのような状況下で、鳥はあなたが呼んだのと同じ名前を呼び返すでしょうか? つまり、特定の鳥に対して、 y、どのような状況で行われるか yx = x? スマリヤンは、この関係を持つ鳥を「愛情」と呼んでいます。y が好きです ×」ということは、 yx = x。もし y が好きです…

  • Verdad alienígena

    octubre 2022 Si hubiera seres inteligentes en otras partes del universo, compartirían ciertas verdades con nosotros. Las verdades de las matemáticas serían las mismas, porque son verdaderas por definición. Lo mismo ocurre con las verdades de la física; la masa de un átomo de carbono sería la misma en su planeta. Pero creo que compartiríamos…

  • मंटन रीस – ओपन सोर्स बनाम ओपन प्लेटफॉर्म

    डैनियल सुपरनॉल्ट ने सप्ताहांत में लूप्स को बढ़ावा देने के लिए पोस्ट की एक श्रृंखला बनाई थी, उनका टिकटॉक-प्रेरित ऐप शॉर्ट-फॉर्म वीडियो पर केंद्रित था, लेकिन खुला स्रोत और फ़ेडिवर्स से कनेक्ट था। यह एक वाक्य मेरे लिए विशेष था: यदि यह खुला स्रोत नहीं है, तो आप उपयोगकर्ता नहीं हैं, आप बेचा जा रहा…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *