تفاوت بین کامپایلرهای پاسکال ، سی و سی ++ چیست؟


پاسخ 1:

پاسکال ، سی و سی ++ زبانهای مختلفی هستند. زبان های مختلف بسیار شبیه به انگلیسی ، اسپانیایی و ژاپنی است. شما می توانید یکی از آنها را برای حل هر مشکلی استفاده کنید ، درست همانطور که می توانید آن را به زبان های انگلیسی ، اسپانیایی و ژاپنی بیان کنید.

پردازنده Pascal ، C یا C ++ را نمی فهمد. این فقط یک زبان بسیار ساده ، زبان ماشین را می فهمد. یک برنامه به زبان ماشین فقط شامل یک سری دستورالعمل های بسیار ساده است که پردازنده یکی پس از دیگری آن را اجرا می کند. این دستورالعمل ها به قدری ساده هستند که برای رسیدن به موارد ساده باید دستورالعمل های زیادی را ارائه دهید. تصور کنید که به کسی آشپزی آموزش دهید و به جای اینکه به آنها بگویید تخم مرغ ها را جدا کنید ، به آنها بگویید که با دست چپ خود تخم مرغ را بگیرید ، آن را 10 سانتی متر بلند کنید ، آنرا بکشید کاسه ، با دست راست خود یک چنگال بگیرید ، دست راست خود را به 90 درجه برسانید ، تخم مرغ را با چنگال با سرعت 1 متر در ثانیه و غیره ضرب کنید. غیر قابل تحمل خواهد بود

بنابراین ما زبانهایی را اختراع کردیم که درک ما راحت تر باشد. پاسکال ، سی و سی ++ فقط سه زبان نمونه هستند. ما برنامه هایی نوشتیم که این زبان ها را می خوانند و آنها را به زبان ماشین ترجمه می کنند تا کامپیوتر بتواند آنچه را که ما می گوییم بفهمد. ما این مترجمان را "کامپایلر" می نامیم.

از آنجا که Pascal ، C و C ++ زبانهای مختلفی هستند ، آنها به کامپایلرهای مختلفی احتیاج دارند. این تفاوت بین آنها است.

این 3 زبان طراحی مشابه دارند ، همه آنها زبانهای کامپایل شده ای ضروری ، ساختاری ، کاملاً تایپ شده هستند. پاسکال و سی نحو متفاوتی دارند ، اما طراحی کلی آنها بسیار قابل مقایسه است. C ++ زبانی است که هدف آن مجموعه ای فوق العاده از C است. این بدان معنی است که تقریباً تمام برنامه های C نیز دارای برنامه های معتبر C ++ هستند. با این حال ، C ++ برخی از ویژگی های دیگر ، مانند برنامه نویسی شی گرا را نیز اضافه کرد ، که به مردم امکان می دهد برخی موارد را دقیق تر بیان کنند. به آن فکر کنید به عنوان انگلیسی به علاوه emoji.

اگر تعجب می کنید که کدام یک را یاد بگیرید ، C و C ++ بسیار محبوب تر از پاسکال هستند و پتانسیل شغلی بسیار بیشتری را ارائه می دهند. من این را در نظر می گیرم.


پاسخ 2:

بسیاری از کامپایلرهای مدرن دارای معماری جلویی ، میانه و پشتی هستند. تنها بخشی از کامپایلر که زبان را می داند قسمت جلویی است.

وظیفه خط مقدم ترجمه زبان به صورت واسطه ای است که تا انتهای میانه پردازش و بهینه می شود. نتایج این مرحله به قسمت انتهایی ارسال می شود که اشیاء کامپایل شده نهایی را تولید می کند.

در اینجا یک نمودار معماری از GCC وجود دارد که از C ، C ++ ، Pascal ، Fortran و چند زبان دیگر پشتیبانی می کند. زبان واسط متوسط ​​GCC GIMPLE نامیده می شود:

سایر مجموعه های کامپایلر مدرن مانند LLVM و کامپایلر مایکروسافت از طراحی مشابهی برخوردار هستند.

با استفاده از این طراحی ، تمام کاری که شما باید انجام دهید ایجاد یک ماژول پشتیبان جدید برای معماری جدید شما برای استقرار مجموعه کامپایلر بر روی معماری دستگاه جدید است. اینها نوعی طراحی پلاگین دارند که به راحتی می توانید موارد جدیدی را به آن اضافه کنید. پس از آماده شدن ماژول پشتیبان ، تمام زبانهای پشتیبانی شده توسط مجموعه کامپایلر در معماری جدید در دسترس هستند.

هنگامی که شما یک زبان جدید ایجاد می کنید ، تمام آنچه شما نیاز دارید یک ماژول مترجم است -> نوشتن ، و زبان جدید شما در تمام معماری های رایانه ای که توسط مجموعه کامپایلر پشتیبانی می شوند در دسترس است.

در این معماریها ، زبانهای C ، C ++ و Pascal به عنوان مترجمان جلویی رفتار می شوند ، بنابراین اکثر مجموعه کامپایلر برای این زبانها یکسان است.