کمپیوٹرزپروگرامنگ

براڈکاسٹر - ہے ... مدونین کی اقسام. تبدیل کریں اور نشریاتی پروگراموں

پروگرام، کے ساتھ ساتھ لوگوں کو ایک زبان سے دوسری میں ترجمہ کرنے کے لئے ایک ترجمان یا مترجم کی ضرورت ہے.

بنیادی تصورات

پروگرام کے حساب کی ایک لسانی نمائندگی ہے: میں → P → P (میں). ایک ترجمان نے ایک پروگرام ہے جس کی ان پٹ پروگرام P اور کچھ ان پٹ ایکس کو فراہم کیا جاتا ہے. یہ پی ایکس کو انجام دیتا ہے: میں (P، X) = P (X). حقیقت یہ ہے کہ صرف ایک مترجم تمام ممکنہ پروگراموں (جو رسمی نظام میں نمائندگی کیا جا سکتا ہے) کارکردگی کا مظاہرہ کرنے کی صلاحیت رکھتی ہے نہیں ہے کہ ایک بہت ہی گہرا اور اہم دریافت ٹیورنگ ہے.

پروسیسر مشین زبان میں پروگراموں کی ایک ترجمان ہے. وہ تشریح کرنے سے آسان ہے کہ ایک فارم میں ترجمہ، لہذا اعلی سطحی زبانوں کے ترجمانوں لکھنے کے لئے عام طور پر بہت مہنگی.

مترجمین میں سے کچھ قسم کے بہت عجیب نام ہیں:

  • کوڈانترک مشین زبان میں اسمبلی زبان کے پروگراموں کا ترجمہ.
  • سنکلک ایک کم استعمال کرنے کے لئے ایک اعلی سطحی زبان ترجمہ.

P → X → ہے Q.، ∀x: - براڈکاسٹر ایک پروگرام ہے کہ وہ دونوں ایک ہی semantics کے پاس اس طرح ہے کہ میں کچھ زبان S میں پروگرام ان پٹ کے اعداد و شمار کے طور پر لیتا ہے اور ٹی پروگرام کی پیداوار ہے کہ ہے. P (X) = Q (X).

interpretable کچھ میں پورے پروگرام نشر، تو اسے پھانسی، یا AOT تالیف پہلے ایک تالیف کہا جاتا ہے. AOT سنکلک سیریز میں استعمال کیا جا سکتا ہے، جن میں سے مؤخر الذکر اکثر مثلا کوڈانترک، یہ ہے کہ:

ماخذ کوڈ سنکلک → (مترجم) → → اسمبلی کوڈ کوڈانترک (کمپائلر) → → CPU مشین کوڈ (مترجم).

آپریشنل یا متحرک تالیف پایا جاتا ہے دیگر جو پہلے مرتب حصہ کی طرف سے پھانسی دے جب تو اس پروگرام کو نشر کیا جاتا ہے. JIT-compilers کے بار بار منبع کوڈ کو دہرانے کے لئے نہیں تو وہ پہلے سے کیا کیا ہے یاد ہے. وہ بھی پروگرام پر عملدرآمد کے ماحول کے رویے پر مبنی انکولی تالیف اور recompilation کی پیداوار کر سکتے ہیں.

کئی زبانوں تالیف وقت کے کوڈ کو پھانسی اور رن ٹائم پر نیا کوڈ مرتب کرنے کے لئے کی اجازت دیتے ہیں.

ترجمہ مرحلے

براڈ تجزیہ اور synthesizing کے اقدامات پر مشتمل ہے:

ماخذ کوڈ تجزیہ → → → تصوراتی نمائندگی جنریٹر (مرکب ساز) → کے ھدف کوڈ.

یہ ان وجوہات کی وجہ سے ہے:

  • کسی بھی دوسرے طریقہ مناسب نہیں ہے. لفظ ترجمہ کو صرف کام نہیں کرتا.
  • گڈ انجینئرنگ حل: اگر آپ ھدف بنائے گئے ہیں M + N سادہ پروگراموں (polukompilyatorov) لکھنے کی ضرورت ہے ایم اور ن مصدر زبانوں بجائے ایم × ن پیچیدہ سے زیادہ کے لئے مترجمین (مترجمین کے کل) لکھنے کے لئے چاہتے ہیں.

تاہم عملی طور پر، ہر conceivable ذریعہ اور ہدف زبانوں کا احاطہ کرنے کے لئے ایک بہت ہی شاذ و نادر ہی کافی ابیوینجک اور کافی طاقتور کی ایک تصوراتی منظر. کچھ اس کے قریب آنے کے قابل تھے.

ریئل compilers کے بہت سے مراحل سے گزر. اپنی خود کی سنکلک کرنے جب لوگ نمائندگی اور جنریٹرز پیدا کرنے کے لئے کیا ہے کہ تمام مشکل کام کو دہرانے کی ضرورت نہیں ہے. آپ کو جاوا اسکرپٹ یا سی میں براہ راست آپ کی زبان میں ترجمہ اور موجودہ جاوا سکرپٹ انجن اور باقی ایسا کرنے C سنکلک کا فائدہ لے سکتے ہیں. تم نے بھی موجودہ انٹرمیڈیٹ نمائندگی اور استعمال کر سکتے ہیں مجازی مشینیں.

ریکارڈ مترجم

ماخذ، منزل اور بیس: - براڈکاسٹر ایک پروگرام یا ہارڈ ویئر، تین زبانوں ملوث ہے ہے. انہوں نے ایک ٹی شکل میں لکھا جا سکتا ہے ذیل میں اصل بائیں، دائیں اور ہدف بیس رکھ.

مدونین کے تین اقسام ہیں:

  • براڈکاسٹر - یہ بنیادی ماخذ زبان کے مساوی ہے تو samokompilyator ہے.
  • جس زبان کو نشانہ بنانے کمپائلر بنیادی، کہا جاتا samorezidentnym ہے.
  • براڈکاسٹر - ایک کراس سنکلک، وہ ھدف بنائے گئے تو اور بنیادی مختلف زبانوں.

یہ کیوں اہم ہے؟

یہاں تک کہ کیونکہ تصور اس مقصد کے لئے استعمال کیا جاتا ہے مثال کے طور پر وسیع پیمانے پر استعمال کیا جاتا ہے اگر آپ کو ایک حقیقی سنکلک، اس کی تخلیق کی ٹیکنالوجی کا ایک اچھا علم کبھی نہیں اگر آپ:

  • فارمیٹنگ متن؛
  • زبان سوالات ڈیٹا بیس کے لئے؛
  • اعلی درجے کی کمپیوٹر آرکیٹیکچر؛
  • سامانییکرت اصلاح کے مسائل؛
  • GUIs؛
  • سکرپٹ زبانوں؛
  • کنٹرولرز؛
  • مجازی مشینیں؛
  • مشینی ترجمہ.

کے علاوہ، آپ preprocessors، linkers، لوڈرز، debuggers اور profilers لکھنے کے لئے چاہتے ہیں تو، آپ کو ایک سنکلک لکھنے جب کے طور پر ایک ہی اقدامات کے ذریعے جانا چاہئے.

آپ کو بھی زبان کے لئے مترجم کی تخلیق اس کے جٹلتاوں اور ابہام کی بہتر تفہیم کا مطلب ہے کے بعد سے، بہتر پروگراموں کو لکھنے کے لئے کس طرح جان سکتے ہیں. نشریات کے عام اصولوں کے مطالعہ سے یہ بھی آپ کو ایک اچھی ڈیزائنر زبان بننے کے لئے اجازت دیتا ہے. تو یہ کیسے کھڑی زبان یہ مؤثر طریقے سے لاگو نہیں کیا جا سکتا تو اس سے کوئی فرق پڑتا ہے؟

جامع ٹیکنالوجی

سنکلک ٹیکنالوجی کمپیوٹر سائنس کے بہت سے مختلف علاقوں کا احاطہ کرتا ہے:

  • زبان کی رسمی نظریہ: گرائمر، تصریف، computability؛
  • کمپیوٹر آرکیٹیکچر: ہدایات سیٹ، RISC یا CISC، pipelined پروسیسنگ کور گھڑی سائیکل، وغیرہ
  • پروگرامنگ زبانوں کے تصورات، مثال کے طور پر ایک ہی تسلسل کنٹرول، مشروط عملدرآمد، تکرار، تکرار، فعال سڑن، مائروپکتا، مطابقت پذیری، میٹا پروگرامنگ، گنجائش، مسلسل ذیلی اقسام، ٹیمپلیٹس، پیداوار کی قسم، prototypes کی، ینوٹیشن، بہاؤ، monads، میل باکسز پرفارمنگ جاری ، wildcards کی، باقاعدہ اظہار، ٹرانزیکشنل میموری، وراثت، بہروپتا، موڈ کی ترتیبات، اور اسی وغیرہ.
  • خلاصہ زبانوں اور مجازی مشینیں؛
  • یلگوردمز اور اعداد و شمار کے ڈھانچے: باقاعدہ اظہار، تصریف الگورتھم، گرافکس یلگوردمز، متحرک پروگرامنگ، تربیت؛
  • پروگرامنگ زبانیں: نحو، semantics کے (جامد اور متحرک)، سپورٹ نمونوں (ساخت، OOP، فعال، منطقی، اسٹیک، متوازیت، میٹا پروگرامنگ)؛
  • سازی مینجمنٹ سوفٹ ویئر (compilers کے، عام طور پر بڑے اور پیچیدہ): لوکلائزیشن، کیشنگ، componentize، API، انٹرفیس، دوبارہ استعمال، ہم وقت سازی.

کمپائلر ڈیزائن

اصلی مترجم کی ترقی میں سامنا مسائل میں سے کچھ:

  • ماخذ زبان کے ساتھ مسائل. یہ اس کے مرتب کرنے کے لئے آسان ہے؟ ایک پریپروسیسر ہے؟ کس طرح قسمیں ہیں؟ ایک لائبریری ہے؟
  • سنکلک پاسز گروپ بندی: ایک یا کثیر طرفہ؟
  • کی اصلاح کی ڈگری مطلوبہ. بہت کم یا کوئی اصلاح کے ساتھ تیز رفتار اور ناپاک نشریاتی پروگراموں عام ہو سکتا ہے. زیادہ اصلاح کی سنکلک سست ہو جائے گی، لیکن رن ٹائم میں بہتر کوڈ اس کے قابل ہو سکتا ہے.
  • خرابی کا پتہ لگانے کی مطلوبہ ڈگری حاصل کی. ایک مترجم نے صرف پہلی غلطی پر روک سکتا ہوں؟ اسے روکنے چاہئے؟ سنکلک غلطی کی اصلاح پر اعتماد کرنا چاہے؟
  • اوزار کی دستیابی. اصل زبان میں بہت چھوٹا نہیں ہے تو، سکینر اور جنریٹر تجزیہ کی ضرورت ہے. جنریٹرز، کوڈ جنریٹرز بھی ہیں، لیکن وہ اتنی عام نہیں ہیں.
  • ٹارگٹ کوڈ کی قسم پیدا کی جائے. خالص ہورہے یا مجازی مشین کوڈ سے منتخب کیا. یا صرف اس طرح LLVM، RTL، یا JVM طور پر ایک مقبول انٹرمیڈیٹ نمائندگی پیدا کرتا ہے کہ ایک اندراج حصہ لکھیں. یا C یا جاوا میں منبع کوڈ میں اصل کا ترجمہ کر دے.
  • ہدف کے کوڈ کا فارمیٹ. آپ کا انتخاب کر سکتے ہیں ایک اسمبلی زبان، ایک پورٹیبل مشین کوڈ، مشین کوڈ میموری تصویر.
  • Retargeting. جنیریٹرز کی سیٹ اچھا ہے جب ایک عام inlet حصہ ہے کرنا. اس وجہ سے یہ بہت سے حصوں کی ان پٹ کے لئے ایک جنریٹر ہے کرنے سے بہتر ہے.

سنکلک فن تعمیر: اجزاء

یہ اسے کوڈ (پیداوار پروگرام C یا ایک مجازی مشین میں ایک پروگرام ہے تو، آپ کو نہ اتنے سارے مراحل کی ضرورت ہے) پیدا کرتا ہے کہ ایک سنکلک کے اہم فعال اجزاء ہیں:

  • ان پٹ پروگرام (بہاؤ کے نشانات) ٹوکن کی ایک ندی میں بدلتا ہے جس سکینر (لغوی تجزیہ)، میں کھلایا جاتا ہے.
  • تجزیہ کار (تجزیہ کار) ایک خلاصہ نحو درخت کی تعمیر.
  • لسانی تجزیہ لسانی معلومات decomposes اور خرابیوں کے لئے درخت نوڈس چیک کرتا ہے. اضافی خصوصیات اور قائم لنکس کے ساتھ خلاصہ نحو درخت - اس کے نتیجے کے طور پر، لسانی گراف بنایا.
  • انٹرمیڈیٹ کوڈ جنریٹر ایک بہاؤ گراف بناتا ہے (tuples اہم بلاکس میں تقسیم کر رہے ہیں).
  • مشین آزاد کوڈ اصلاح کار دونوں مقامی (بیس یونٹ کے اندر اندر) اور عالمی (تمام بلاکس کو) اصلاح بنیادی طور معمولات کے اندر اندر باقی انعقاد. بے کار کوڈ کم کر دیتا ہے اور حساب کو آسان بنا دیتا. نتیجہ ایک نظر ثانی شدہ بہاؤ گراف ہے.
  • جنریٹر (ممکنہ غیر موثر) کسی چیز کی فائل کوڈانترک مجازی رجسٹر کرنے، ایک ریکٹالانیار ٹرانسمیشن کنٹرول کے کوڈ میں ٹارگٹ کوڈ بنیادی بلاکس باندی.
  • مشین انحصار اصلاح، Linker بنو رجسٹر درمیان میموری مختص اور ٹیموں کا منصوبہ بنا ہوتا ہے. اس پائپ لائننگ کا ایک اچھا استعمال کے ساتھ اس اسمبلی میں اسمبلی زبان میں تبادلوں کے پروگرام کو انجام دیتا ہے.

اس کے علاوہ، کی خرابی کا پتہ لگانے اپتنتر مینیجر اور علامت میزیں کے استعمال.

لغوی تجزیہ (سکیننگ)

اسکینر ٹوکن، کو ہٹا سفید فاصلہ، تبصروں اور توسیع میکروز کی ایک ندی میں ندی ذریعہ حروف بدل دیتا ہے.

سکینر اکثر اس طرح کے طور پر اکاؤنٹ میں کیس، مارجن، لائن بریک اور ایمبیڈڈ تبصروں لے کرنے یا نہ کرنے کے مسائل کا سامنا.

سکیننگ کے دوران ہو سکتا ہے کہ غلطیاں، لغوی کہا جاتا ہے اور شامل ہیں:

  • حروف کہ حروف تہجی میں نہیں ہیں؛
  • ایک لفظ یا لائن میں حروف کی تعداد سے زیادہ؛
  • نہیں ایک بند نشانی یا لغوی ایک تار؛
  • تبصرہ میں فائل کا اختتام.

تصریف (تصریف)

تجزیہ کار ایک خلاصہ نحو درخت میں ٹوکن کا تسلسل بدلتا ہے. درخت میں ہر نوڈ نامی شعبوں، جن میں سے اکثر خود درخت نوڈس ہیں کے ساتھ کسی چیز کے طور پر محفوظ کیا جاتا ہے. اس مرحلے پر کوئی چکروں سے ہیں. آپ کو بنانے کے جب ایک تجزیہ کار گرائمر (LL یا LR) کی پیچیدگی کی سطح پر توجہ دینے اور کسی بھی قوانین دسمبگاشن موجود ہیں یا باہر تلاش کرنے کے لئے ضروری ہے. کچھ زبانوں لسانی تجزیہ کی ضرورت ہے.

اس مرحلے پر پایا نقائص نحو کہا جاتا ہے. مثال کے طور پر:

  • K = 5 * (7 - Y؛
  • J = / 5؛
  • 56 = X * 4.

لسانی تجزیہ

دوران لسانی تجزیہ تصریف درخت کے قوانین اور ایسوسی ایٹ حصوں کی اباحت کی جانچ کرنا (انترنہیت قسم کے تبادلوں کے لئے آپریشن ڈالنے ریفرنس ناموں کی اجازت دی ہے، اور اسی طرح کی. D.) لسانی گراف کے قیام کے لیے.

ظاہر ہے، مختلف مختلف زبانوں میں قواعد کی admissibility کی سیٹ. آپ کو جاوا نما زبانوں مرتب تو، compilers کے تلاش کر سکتے ہیں:

  • اس کے دائرہ کار کے اندر اندر ایک سے زیادہ متغیر اعلان؛
  • اس اعلان سے پہلے ایک متغیر کے لئے ایک ریفرنس؛
  • اگھوشیت کے نام کا حوالہ؛
  • پیٹنٹ حقوق کی خلاف ورزی کی.
  • ایک طریقہ کال میں دلائل کی ضرورت سے زیادہ یا ناکافی تعداد؛
  • قسم بیمیل.

نسل

انٹرمیڈیٹ کوڈ نسل tuples مشتمل بہاؤ گراف، بنیادی بلاکس میں تقسیم پیدا کرتی ہے.

کوڈ نسل ایک حقیقی مشین کوڈ پیدا. پہلا قدم پر RISC-مشینوں کے لئے روایتی مدونین میں، آپ کو مجازی کے رجسٹر کا ایک لامحدود تعداد کے ساتھ ایک کوڈانترک تخلیق کرتے ہیں. CISC-مشینوں کے لئے شاید نہیں ہو گا.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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