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

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


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


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

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

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


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

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

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

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



Source link

Postagens Similares

  • AI Research & Implementation Hub

    A comprehensive collection of my artificial intelligence research, frameworks, and implementation guides spanning technical architecture, economic impact, and societal transformation. Architecture & Infrastructure System Design Patterns Predictive Models & Trajectories System Evolution Frameworks Economic Impact Analysis Labor Market Transformation Security & Risk Analysis AI Security Architecture Technical Deep Dives Machine Learning Fundamentals Creative Systems &…

  • 2025 Consejos para mis viejos yo

    Cumplí años recientemente y estaba tan ocupado (vuelo de DataCouncil + sg) que nunca tuve la oportunidad de sentarme y reflexionar. Muchas cosas van bien, muchas más podrían ser mejores. Soy la única persona responsable de preservar lo bueno y arreglar lo malo. Ahora estoy de nuevo en un avión y con el estado de…

  • Linux TF-IDF berkomitmen

    Saya penasaran apa yang dikerjakan oleh berbagai orang di Linux, jadi saya mencoba mengambil data dari repositori git saat ini untuk melihat apakah saya dapat menariknya dari data pesan komit. Ini tidak termasuk riwayat sebelum mereka beralih ke git, jadi ini hanya dimulai pada tahun 2005, tapi itu masih merupakan bagian sejarah yang layak. Berikut…

  • So transkribieren Sie Podcast-Audio (WhisperX mit Sprecher-Diarisierung)

    swyx 24.02.2023 Hinweis: Manchmal ist WhisperX WAAYYYY zu langsam, sodass ich oft https://github.com/ggerganov/whisper.cpp verwende, was irgendwie viel schneller läuft. Ich arbeite viel an der Transkription von Podcasts und hatte heute wieder Bedarf daran. Die HuggingFace-Leerzeichen (wie dieses https://huggingface.co/spaces/vumichien/whisper-speaker-diarization) weisen immer einen Fehler auf und sind daher nicht sehr nützlich. Das hat bei mir funktioniert. Hinweis:…

  • 鳥の名前 その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 が好きです…

Deixe um comentário

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