کمپيوټرپروګرام

رسنۍ - ده ... د حديثونه ډولونه. واړوئ او د خپرونو د پروګرامونو

پروګرامونه، او همدارنګه خلک له يوه ژبه بل د ژباړې د یوه ژباړونکي یا ترجمان ته اړتيا لري.

د اساسي مفاهيمو

دغه پروګرام د محاسبې د يوه ژبني استازیتوب ده: زه → P → P (i). ترجمان دی یو پروګرام چې د آخذې پروګرام (P) او د نورو نظرونو ته x ته ولېږدول شي. دا ترسره کوي په P x: زه (P، x) = P (x). دا حقيقت چې هلته دی یوازې یو ژباړن د ټولو ممکنه پروګرامونو (چې کیدای شي په رسمي سیستم یې استازیتوب کوي) د اجرا وړ ده یوه ډیره ژوره او د پام وړ کشفولو سره سمبالول.

د پروسسر ده د ماشین ژبه پروګرامونو د ترجمان. په عمومي ډول ډېر ګران لپاره د لوړې کچې ژبو ژباړونکي وليکي، نو دوی ته یوه فورمه چې ده ته د تفسیر اسانه ترجمه.

د ژباړونکو ځینې ژانر ډېره عجيبه نومونه لري:

  • د assembler په ماشین ژبه assembly ژبې له پروګرامونو اوړي.
  • د compiler يوه لوړ پوړي ژبه چې د ابتدايه ژبه ترجمه.

رسنۍ - یو پروګرام دی چې په توګه آخذه د معلوماتو د پروګرام په ځينو ژبه ص په داسې يوه لاره چې دوی دواړه په همدې پریس لري T پروګرام اخلي او توليدوي: P → X → پوښتنه دا ده چې، ∀x. P د (×) = q (x).

که ته څه interpretable ټول پروګرام خپروي، چې دا یو د اجرا، او یا AOT تصنيف مخکې تصنيف په نامه. AOT compiler کولای شي په لړ کې وکارول شي، چې د وروستنۍ اکثرا د assembler، د مثال په توګه:

د سرچينې کوډ compiler → (ژباړن) → → شورا کوډ assembler (compiler) → → CPU ماشین کوډ (ژباړن).

د عملیاتي او يا خوځنده تصنيف واقع کيږي که د پروګرام د خپرولو، کله چې د نورو پخوا تالیف برخه له خوا اعدام. JIT-حديثونه په یاد څه دومره په توګه نه د سرچينې کوډ د بیا بیا تکرار مخه کړي. دوی حتی کولی شي تطابقي تصنيف او recompilation پر بنسټ د دغه پروګرام د اجرا چاپیریال سلوک توليدوي.

ډیرو ژبو ته اجازه په راټول وخت کوډ د اعدام او په چلولو د نوي کوډ راغونډوي.

ژباړه پړاو

خپرونو د تحلیل او synthesizing ګامونه شامل دي:

د سرچينې کوډ analyzer → → → مفهومی استازیتوب جنراتور (synthesizer) → هدف کوډ.

دا د دغو لاملونو له امله ده:

  • کوم بل میتود وړ نه وي. Word ژباړه په ساده کار نه کوی.
  • ښه د انجنيرۍ د حل لاره: که تاسو غواړی چې د M او N سرچینه ژبو په نښه بايد يوازې د M + N ساده پروګرامونو (polukompilyatorov) ليکل پرځای M N × پیچلې ژباړونکو (د ژباړونکو ټول) ولیکئ.

که څه هم، په عمل کې، د ډير په ندرت سره پوره بیان او په کافي اندازه غښتلي یو مفهومی محتویات هر شونې سرچینې او هدف ژبو پوښښ ته. په داسې حال کې یو شمیر یې د دې توان ولري څو د دې نژدې راشي.

دریښتینو حديثونه له څو پړاوونو تېر شو. کله چې خپل compiler د رامنځته کولو اړتيا نه چې له ټولو سخت کار چې خلک ته د نمایندګیو او جنراتورونو د جوړولو کار تکرار کړی. تاسو کولای شی په مستقیم ډول په جاواسکرېپټ يا C ستاسو په ژبه ترجمه او د موجوده د جاواسکرېپټ-انجن او د C compiler ده چې پاتې نور نه ګټه پورته کړي. تاسو هم کولای شی د موجوده منځني استازيتوب او ګټه ماشینونه مجازی.

ریکارډ ژباړن

رسنۍ - ده يو پروګرام يا د هارډویر، چې درې ژبو کې لاس: د سرچینې، د منزل او د اډې د. دوي کولاي شي په يوه T-بڼه لیکل شي، پرځای د اصلي چپ، حق او هدف اډه لاندې.

د حديثونه درې ډوله دي:

  • رسنۍ - ده samokompilyator که دا د سرچينې د اساسي ژبې سره متناسب وي.
  • Compiler چې د ژبې په نښه ده د خط، samorezidentnym په نامه.
  • رسنۍ - یو Cross-compiler، که هغه په نښه کړي او د اساسي بېلابېلو ژبو.

دغه ولې اهمیت لری؟

حتی که تاسو هيڅکله يوه رښتينې compiler، یو د خپل پيدايښت د ټکنالوژۍ ښه پوهه کړي، ځکه چې د مفهوم د دې هدف لپاره کارول کيږي کارول پراخه، د مثال په توګه:

  • Formatting په متن؛
  • ژبه پوښتنو ته ډيټابيس؛
  • کمپيوټر ژور معمارۍ؛
  • عمومي ګټورول ستونزې؛
  • GUIs؛
  • د متن ژبو؛
  • کنټرولونکي؛
  • ماشینونه مجازی؛
  • ماشین ژباړه.

برسېره پر دې، که تاسو غواړئ چې preprocessors، linkers، لودر، debuggers او profilers ولیکئ، تاسو باید په توګه کله چې یو compiler لیکلو د ورته ګامونو له لارې ولاړ شي.

تاسو هم کولای شی زده کړي چې څنګه د ښه پروګرامونه وليکي، ځکه د د ژبی لپاره د ژباړن د جوړولو د خپل کوچني کوچني او ابهام ښه پوهه په مانا ده. د د د خپرونو د عمومي اصول مطالعه هم تاسو ته اجازه درکوي ښه طراح ژبه شي. نو آیا دا به پروا څنګه ستوغ د ژبې که دا په موثره توګه نه شي کولای پلي شي؟

جامع تکنالوژي

compiler ټکنالوژي د کمپیوټر ساینس په بیلابیلو سیمو کې تر پوښښ:

  • د ژبې د رسمي تيوري: د ګرامر، پټول، computability؛
  • کمپيوټر معمارۍ:. لارښوونې سیټونه، RISC یا CISC، pipelined پروسس اصلي ساعته دورو، او داسی نور.
  • د پروګرامونو د ژبو مفاهیمو، د مثال په توګه، د یو تسلسل په کنترول، شرطي اعدام، تکراري بڼه، مخنیوی دی، فعال تجزيه، modularity، د همغږی، meta-پروګرامونو، حدود، پرله پسې فرعي ډولونه، چوکاټونه، محصول ډول، د نمونې په، يادونو، جريان، monads، mailboxes ترسره کولو، دوام ، wildcards، په منظمه توګه د بیان، معاملوي حافظه، میراث، polymorphism، اکر امستنې، او داسې نور.
  • انتزاعي ژبو او ماشینونه مجازی؛
  • د الگوريتومونو او د معلوماتو جوړښتونه: په منظم ډول څرګندونې، د ټوټه کېدو الگوريتم، ګرافیک الگوريتم، خوځنده پروګرامونو، روزنه؛
  • پروګرامونو ژبو: العروض، پریس (د ثابتو او خوځنده)، د ملاتړ بیلګه (جوړښتي، پي، فعال، منطقي، دلۍ، parallelism، meta-پروګرام)؛
  • رامنځته کولو سافټ (حديثونه، معمولا سترې او پیچلې): د ځايتابه، caching، componentize، API-interfaces، بيا د استعمال، د همغږی.

compiler ډیزاین

د ستونزې د اصلي ژباړن په پراختیا کې سره مخامخ يو شمېر:

  • ستونزې سره سرچینه ژبه. آیا دا آسانه راټول دا؟ ایا د preprocessor شته؟ د ډولونو څنګه دي؟ آیا یو کړی شته؟
  • compiler ليکونو ډلبندي: مجرد او يا د څو لاره ده؟
  • د ګټورول درجو مطلوبه. سره د لږ يا هيڅ ګټورول روژه او ناپاک خپرونو پروګرامونه کولای شي په عادي وي. پر ګټورول compiler به ورو، خو په چلولو ښه کوډ ښايي په ارزښت دا وي.
  • د تېروتنې د کشف اړتيا ده. آيا د يو ژباړن يوازې په لومړۍ غلطي ودروي؟ کله چې دا باید ودروي؟ که د compiler تېروتنې تصحيح باور کوې؟
  • د وسایلو د شتون. که د اصلي ژبې ډېرې کوچنۍ نه ده، د سکنر او جنراتور تحلیلوونکي اړ دي. هم جنراتورونه، کوډ جنراتورونو شته، خو دوی دومره عام نه دي.
  • د هدف کوډ ډول د تولید شي. له سوچه بشپړ يا مجازی ماشین کوډ وټاکل شي. او يا د يو د ننوتلو برخه چې د منځني يو نامتو استازيتوب لکه LLVM، RTL، یا JVM رامنځته ولیکئ. او یا په C او يا د جاواسکرېپټ د سرچينې کوډ د اصلي ژباړې کړي.
  • د هدف کوډ شکل. تاسو کولای شی چې وټاکۍ یو assembly ژبه، یوه مسن ماشین کوډ، ماشین کوډ حافظه انځور.
  • Retargeting. کله چې د جنراتورونو د سیټ ښه دا ده چې د يوه عام لط برخه لري. د دې امله دا تر ټولو ښه دا ده چې د ډېرو برخو د آخذه د یو جنراتور لري.

compiler معماري: برخو

دا د یو compiler چې تولیدوی مورنۍ کوډ (که د محصول په پروګرام کې د C او يا د مجازی ماشین یو پروګرام دی، تاسو څو پړاوونو کې نه اړتیا) د سترو فعال برخې لري:

  • د آخذې پروګرام (جريان نښې) پوزې ته د سکنر (وییزې analyzer)، چې بدلوي دا د ټوکن يوه وياله ده.
  • جلا کوونکی (جلا کوونکی) یو انتزاعي العروض ونې جوړول.
  • Semantic analyzer د semantic معلوماتو تجزيه او د غلطيو د ونې غوټې ګوري. سره اضافي مال او د جوړ تړنې انتزاعي العروض ونې - د پایلې په توګه، semantic ګراف جوړ شوی دی.
  • منځني کوډ جنراتور جوړوي جريان د ګراف (tuples په اصلي بلاکونو وشل شوې دي).
  • ماشین-خپلواکه کوډ optimizer ترسره کوي دواړه ځايي (اډه واحد کې دننه) او نړیوال (چې ټولو بلاکونو) ګټورول بنسټيزه توګه پاتې ورځني دننه. ګوښه کوډ څخه کموي او د محاسبې آسانوي. په پايله کې يو بدلون موندلی جريان ګراف.
  • د جنراتور په يوه rectilinear انتقال کنترول کوډ هدف کوډ اساسي بلاکونو ټینګ، یو څیز دوتنې assembler مجازی راجسترونو د رامنځته کولو (احتمالا بې اغیزې).
  • ماشین تړلی optimizer، linker راجسترونو تر منځ د حافظې اکي او د پلان ټيمونه جوړوي. دا په دې شورا سره د pipelining يو ښه استعمال په assembly ژبه د بدلولو پروګرام ترسره کوي.

برسېره پر دې، د تیروتنې کشف او مدیریت subsystem سمبول جدولونه چې د استعمال.

وییزې تحليل (سکن)

د سکنر د ټوکن، له مينځه وړلو whitespace، تبصرې او پراختيا macros يوه وياله د ويالو د منبع خویونه بدلوي.

سکنر زياتره ستونزې، لکه که نه چې له موضوع څخه، څنډه، کرښې وقفې او ورسره وصل نظرونه په پام کې ونیسي سره مخامخ کيږي.

غلطيو چې ښايي سکن ترڅ کې پيښيږي، وییزې وباله او عبارت دي له:

  • توري دي چې په د الفبا په نه؛
  • د په یوه کلمه یا کرښه خویونه شمېر اضافي؛
  • یوه تړل ننوتنه یا نه او یا د یو سلسله لفظي؛
  • د په نظر د دوتنې پای.

د ټوټه (پټول)

د جلا کوونکی یو انتزاعي العروض ونې د ټوکن په ترتیب بدلوي. په ونې په هره غوټه کې زېرمل کيږي سره د نوم برخو کې، زيات شمير يې د خپل ځان د ونې غوټې يو څيز په توګه. په دې پړاو کې نه دورو شتون لري. کله چې تاسو د جوړولو لپاره یو جلا کوونکی ضروري ته د ګرامر (ايي يا LR) پېچلتيا کچه پاملرنه وکړي او بهر که شته دي کوم اصول disambiguation پیدا ده. ځينې ژبو کوئ semantic تحلیل ته اړتیا لري.

غلطيو په دې پړاو کې موندل کېږي العروض په نامه. د مثال په توګه:

  • K = 5 * (7 - y؛
  • j = / 5؛
  • 56 = x * 4.

semantic تحلیل

د مهال semantic تحلیل د اصولو او د جلا کولو ونې ملګري برخو جايز وګورئ (اجازه مرجع نومونو لپاره د ضمني ډول ړتيا عملياتو ځایول، او داسې نور. D.) د semantic ګراف د جوړولو.

ښکاره خبره ده، چې د بیلابیلو ژبو کې مختلف مقررات د قبلولو د سیټ. که تاسو د جاوا په څېر ژبو راټول، حديثونه ښايي د موندلو:

  • خپل هدف په چوکاټ کې د څو متحول اعلامیه؛
  • د يوه خپل اعلامیه مخکې متحول مرجع؛
  • د نابیان نوم مرجع؛
  • د امتیاز د حق د حقونو تخلف؛
  • د يوه ميتود په پوښتنه کې دلایل حده يا کافي شمیر؛
  • ډول غټ.

نسل

منځني کوډ نسل جريان ګراف څخه جوړ د tuples، ګروپ ته د اساسي بلاکونو توليدوي.

کوډ نسل يوه رښتينې ماشین کوډ توليدوي. د دې لپاره چې په لومړي ګام کې د RISC-ماشینونه عنعنوي حديثونه، تاسو سره د مجازی راجسترونو لایتناهی شمېر assembler رامنځته کړي. د-ماشینونه CISC ښايي ونه شي.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ps.delachieve.com. Theme powered by WordPress.