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

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


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


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

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

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


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

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

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

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



Source link

Postagens Similares

Deixe um comentário

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