ਬੀਨ ਮਸ਼ੀਨ ਰੀਟਰੋਸਪੈਕਟਿਵ, ਭਾਗ 7

ਬੀਨ ਮਸ਼ੀਨ ਰੀਟਰੋਸਪੈਕਟਿਵ, ਭਾਗ 7


ਅਸੀਂ ਇੱਕ ਆਮ-ਉਦੇਸ਼ ਵਾਲੀ ਲਾਈਨ-ਆਫ-ਬਿਜ਼ਨਸ ਓਓ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਜਿਵੇਂ ਕਿ ਪਾਈਥਨ, ਸੀ#, ਜਾਵਾ, ਆਦਿ ਵਿੱਚ ਇੱਕ ਕੰਪਾਈਲਰ ਕਿਵੇਂ ਲਿਖ ਸਕਦੇ ਹਾਂ? ਕੰਪਾਈਲਰ ਪ੍ਰੋਗਰਾਮ ਹਨ, ਇਸਲਈ ਅਸੀਂ ਸਵਾਲ ਨੂੰ ਹੋਰ ਆਮ ਬਣਾ ਸਕਦੇ ਹਾਂ: ਅਸੀਂ ਕਿਵੇਂ ਲਿਖਦੇ ਹਾਂ ਪ੍ਰੋਗਰਾਮ?

ਲਗਭਗ ਹਰ ਵਿਆਪਕ ਤੌਰ ‘ਤੇ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ ਲਈ ਆਮ ਮੂਲ ਵਿਚਾਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ ਰਚਨਾ:

  • ਸਮੱਸਿਆ ਨੂੰ ਕਈ ਉਪ-ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਵੰਡੋ
  • ਫੰਕਸ਼ਨ ਲਿਖੋ ਜੋ ਹਰੇਕ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਉਪ-ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਦੇ ਹਨ
  • ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਲਿਖ ਕੇ ਇੱਕ ਹੱਲ ਤਿਆਰ ਕਰੋ ਜੋ ਹੋਰ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਨ

ਇਹਨਾਂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਗਠਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਸ ਦਾ ਵੇਰਵਾ ਭਾਸ਼ਾ ਤੋਂ ਭਾਸ਼ਾ ਤੱਕ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ; ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਹੋਰ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ, ਜਾਂ ਕਲਾਸਾਂ ਵਿੱਚ, ਜਾਂ ਮੋਡੀਊਲਾਂ ਵਿੱਚ, ਜਾਂ ਜੋ ਵੀ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪਰ ਅੰਤ ਵਿੱਚ, ਜ਼ਿਆਦਾਤਰ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਫੰਕਸ਼ਨਾਂ ਦੀ ਰਚਨਾ ਵਜੋਂ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਹੁਣ, ਅਸੀਂ ਬਸ ਨਹੀਂ ਕਾਲ ਕਰੋ ਦੇ ਕਾਰਜ. ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵੀ ਹਨ ਕੰਟਰੋਲ ਵਹਾਅਜਿਸ ਨਾਲ ਉਹ ਬਣਾਉਂਦੇ ਹਨ ਫੈਸਲੇ ਕਿਸ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੈ ਬਾਰੇ:

  • foo() ਨੂੰ ਕਾਲ ਕਰੋ ਜੇਕਰ ਅਤੇ ਕੇਵਲ ਜੇਕਰ ਕੁਝ ਭਵਿੱਖਬਾਣੀ ਸੱਚ ਹੈ.
  • foo() ਨੂੰ ਵਾਰ-ਵਾਰ ਕਾਲ ਕਰੋ ਜਦੋਂ ਤੱਕ ਕਿ ਕੁਝ ਅਨੁਮਾਨ ਗਲਤ ਨਹੀਂ ਹੁੰਦਾ।
  • foo() ਨੂੰ ਕਾਲ ਕਰੋ ਪਰ ਜੇਕਰ ਇਹ ਫੇਲ ਹੁੰਦਾ ਹੈ ਤਾਂ ਇਸ ਕੈਚ ਬਲਾਕ ਦੀ ਬ੍ਰਾਂਚ ਕਰੋ
  • … ਇਤਆਦਿ

ਅਸੀਂ ਆਮ ਤੌਰ ‘ਤੇ ਨਹੀਂ ਸੋਚਦੇ ਕੰਟਰੋਲ ਵਹਾਅ ਦੀ ਇੱਕ ਕਿਸਮ ਦੇ ਤੌਰ ਤੇ ਫੰਕਸ਼ਨ ਰਚਨਾ. ਕੀ ਹੋਇਆ ਜੇ ਅਸੀਂ ਕੀਤਾ? ਅਸੀਂ ਕੰਬੀਨੇਟਰਜ਼ ਵਿੱਚ ਨਿਯੰਤਰਣ ਪ੍ਰਵਾਹ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਸੰਯੋਜਕ ਤਰਕ ਅਤੇ ਕਾਰਜਸ਼ੀਲ ਪ੍ਰੋਗਰਾਮਿੰਗ ਦੁਆਰਾ ਪ੍ਰੇਰਿਤ ਵਿਚਾਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਕੰਪਾਈਲਰ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਵਰਕਫਲੋ ਨੂੰ ਸੰਖੇਪ ਰੂਪ ਵਿੱਚ ਬਣਾਉਣ ਲਈ ਉਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।


ਇੱਕ “ਪਾਰਸ ਟ੍ਰੀ” ਜਾਂ ਐਬਸਟ੍ਰੈਕਟ ਸਿੰਟੈਕਸ ਟ੍ਰੀ (ਇਸ ਤੋਂ ਬਾਅਦ AST) ਇੱਕ ਡੇਟਾ ਢਾਂਚਾ ਹੈ ਜੋ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਦੇ ਸੰਟੈਕਟਿਕ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਸ ਲੜੀ ਦੇ ਅਗਲੇ ਕੁਝ ਐਪੀਸੋਡਾਂ ਵਿੱਚ ਅਸੀਂ ਇਸ ਸਵਾਲ ਦੀ ਪੜਚੋਲ ਕਰਾਂਗੇ ਕਿ ਇੱਕ ਕੰਪਾਈਲਰ ਲੇਖਕ ਕੰਪਾਈਲਰ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਇੱਕ ਆਮ ਉਪ-ਸਮੱਸਿਆ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰ ਸਕਦਾ ਹੈ: ਅਸੀਂ ਇੱਕ ਕਿਵੇਂ ਲਿਖ ਸਕਦੇ ਹਾਂ AST→ AST ਸੰਯੁਕਤ ਤਰਕ ਦੁਆਰਾ ਪ੍ਰੇਰਿਤ ਇੱਕ ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਫੰਕਸ਼ਨ?

ਕਿਉਂਕਿ ਬੀਨ ਮਸ਼ੀਨ ਅਤੇ ਇਸਦਾ ਕੰਪਾਈਲਰ ਦੋਵੇਂ ਪਾਈਥਨ ਵਿੱਚ ਲਿਖੇ ਗਏ ਹਨ, ਅਸੀਂ ਪਾਈਥਨ ਦੁਆਰਾ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ ਬਹੁਤ ਹੀ ਸੁਵਿਧਾਜਨਕ ਪਾਰਸ ਟ੍ਰੀ ਕਿਸਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। ast ਮੋਡੀਊਲ. ਇਹ ਬਹੁਤ ਸਿੱਧਾ ਹੈ. ਹਰ ਨੋਡ ਰੁੱਖ ਵਿੱਚ ਇੱਕ ਕਿਸਮ ਅਤੇ ਜ਼ੀਰੋ ਜਾਂ ਵੱਧ ਲੇਬਲ ਕੀਤਾ ਗਿਆ ਹੈ ਬੱਚੇ. ਲੇਬਲ ‘ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਬੱਚਾ ਇੱਕ ਮੁੱਲ ਹੋ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਸਤਰ ਜਾਂ ਨੰਬਰ, ਜਾਂ ਇੱਕ ਨੋਡ।

ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਸਾਡੇ ਕੋਲ ਇੱਕ ਸਟੇਟਮੈਂਟ “x = 2 + 3” ਹੈ ਤਾਂ ਅਸਾਈਨਮੈਂਟ ਦੇ ਸੱਜੇ ਪਾਸੇ ਲਈ AST ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ (ਇਹ ਮੰਨ ਕੇ ਕਿ ast ਮੋਡੀਊਲ ਦੇ ਸਾਰੇ ਮੈਂਬਰਾਂ ਨੂੰ ਦਾਇਰੇ ਵਿੱਚ ਲਿਆਂਦਾ ਗਿਆ ਹੈ।)

BinOp(
  left=Num(n=2),
  op=Add(),
  right=Num(n=3))

ਸਮੀਕਰਨ ਦਾ AST ਇੱਕ ਬਾਈਨਰੀ ਆਪਰੇਟਰ ਹੈ; ਇਸਦੇ ਤਿੰਨ ਬੱਚੇ ਹਨ, left, right ਅਤੇ op. ਦ left ਅਤੇ right ਸ਼ਾਬਦਿਕ ਨੰਬਰ ਹਨ; ਉਹਨਾਂ ਦਾ ਬੱਚਾ n ਉਸ ਨੰਬਰ ਦਾ ਮੁੱਲ ਹੈ। ਤੁਸੀਂ ਇਹ ਵਿਚਾਰ ਪ੍ਰਾਪਤ ਕਰੋ ਕਿ ਮੈਨੂੰ ਯਕੀਨ ਹੈ.

ਹਰੇਕ ਪਾਈਥਨ ਸਮੀਕਰਨ, ਸਟੇਟਮੈਂਟ, ਆਦਿ ਦਾ ਇੱਕ AST ਨੋਡ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਪਾਰਸਰ ਅਤੇ ਅਨਪਾਰਸਰ ਦੋਵਾਂ ਦੇ ਮਿਆਰੀ ਅਮਲ ਹਨ; ਤੁਸੀਂ ਟੈਕਸਟ ਨੂੰ AST ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ, AST ਨੂੰ ਟੈਕਸਟ ਵਿੱਚ ਵਾਪਸ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਉਸ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਕੰਪਾਇਲ ਅਤੇ ਚਲਾ ਸਕਦੇ ਹੋ।


ਅਗਲੀ ਵਾਰ FAIC ‘ਤੇ: ਮੈਂ ਪੈਟਰਨਾਂ/ਨਿਯਮਾਂ/ਕੰਬੀਨੇਟਰ ਸਿਸਟਮ ਦਾ ਸੰਖੇਪ ਵਰਣਨ ਕਰਾਂਗਾ, ਅਤੇ ਫਿਰ ਇਸ ਬਾਰੇ ਕੁਝ ਵਿਚਾਰ ਦੇਵਾਂਗਾ ਕਿ ਇਸ ਪਹੁੰਚ ਨੂੰ ਇੱਕ ਹੋਰ ਰਵਾਇਤੀ ਕੰਪਾਈਲਰ ਤਕਨੀਕ ਜਿਵੇਂ ਕਿ ਰੀਰਾਈਟਸ ਲਈ ਵਿਜ਼ਟਰ ਪੈਟਰਨ ਲਈ ਪ੍ਰੇਰਿਤ ਕੀਤਾ ਹੈ। ਫਿਰ ਅਸੀਂ ਪੈਟਰਨਾਂ ਅਤੇ ਅਨੁਮਾਨਾਂ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਨੂੰ ਦੇਖਣਾ ਸ਼ੁਰੂ ਕਰਾਂਗੇ।



Source link

Postagens Similares

  • టిమ్ నుండి కమ్యూనిటీ లెటర్ – ఆపిల్

    Apple కమ్యూనిటీకి: గత 15 సంవత్సరాలుగా నేను ప్రతిరోజూ ఉదయం అదే విధంగా ప్రారంభించాను. నేను నా ఇమెయిల్‌ను తెరిచాను మరియు ప్రపంచవ్యాప్తంగా ఉన్న Apple వినియోగదారుల నుండి నేను ముందు రోజు అందుకున్న గమనికలను చదివాను. మీరు మీ జీవితంలోని చిన్న చిన్న ముక్కలను నాతో పంచుకుంటారు మరియు Apple మిమ్మల్ని ఎలా తాకిందనే దాని గురించి నేను తెలుసుకోవాలనుకునే విషయాలను నాకు చెప్పండి. మీ అమ్మ ఆపిల్ వాచ్ ద్వారా రక్షించబడిన క్షణం గురించి….

  • بن کا استعمال کرتے ہوئے خود ساختہ ٹائپ اسکرپٹ پروگرام

    بون خود بخود انحصار انسٹال کرنا اگر آپ مجھ سے اتنا ہی نفرت کرتے ہیں تو شاید انحصار کی وجہ سے۔ وقت کا تقریبا 23 23-319 ٪ ، جب میں ایک ازگر ایپ چلاتا ہوں تو ، یہ انحصار کی وجہ سے کام نہیں کرتا ہے ، اور میں یہ جاننے کی کوشش کرتا ہوں…

  • আবিষ্কারের ঝুঁকি

    জানুয়ারী 2017 যেহেতু বিখ্যাত বিজ্ঞানীদের জীবনী তাদের ভুলগুলি সম্পাদনা করার প্রবণতা রয়েছে, তাই তারা যে ঝুঁকি নিতে ইচ্ছুক তা আমরা অবমূল্যায়ন করি। এবং যেহেতু একজন বিখ্যাত বিজ্ঞানী যা কিছু করেছিলেন যা ভুল ছিল না তা সম্ভবত এখন প্রচলিত জ্ঞানে পরিণত হয়েছে, সেই পছন্দগুলিও ঝুঁকিপূর্ণ বলে মনে হয় না। নিউটনের জীবনী, উদাহরণস্বরূপ, বোধগম্যভাবে আলকেমি বা ধর্মতত্ত্বের…

  • Кодування флагманського рівня в щільній моделі 27B

    22 квітня 2026 р. – блог із посиланнями Qwen3.6-27B: кодування флагманського рівня в щільній моделі 27B (через) Великі претензії від Qwen щодо їхньої останньої відкритої моделі: Qwen3.6-27B забезпечує продуктивність агентного кодування флагманського рівня, перевершуючи флагман Qwen3.5-397B-A17B з відкритим кодом попереднього покоління (397B загалом / 17B активного MoE) у всіх основних тестах кодування. На Hugging Face…

  • Bordsspel baserade på matematiska problem || Math ∩ Programmering

    Det finns en familj av bordsspel som är direkt baserade på ett icke-trivialt matematiskt problem. Som ett avslappnat och roligt sätt att inviga min nya blogg (migrerade från WordPress till Hugo, efter mitt arbete med att få bättre LaTeX-mathmode-stöd i Hugo), tänkte jag skriva en kort lista om dem, så att jag har en plats…

  • ملاحظات من البحرية (2025)

    أحد الأشخاص الذين أتفاعل معهم كثيرًا هو Naval Ravikant – كتابه الكلاسيكي “كيف تصبح ثريًا دون أن تصبح محظوظًا” (من الآن فصاعدًا HTGR) يشكل تكوينًا لكثير من تفكيري، بما في ذلك كيفية تسويق نفسك دون أن تكون من المشاهير و”ممارسة ألعاب طويلة الأمد مع أشخاص على المدى الطويل”. يتضمن HTGR أيضًا “كيف تصبح محظوظًا”، لكنني…

Deixe um comentário

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