کنکور کامپیوتر

کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟

کامپایلر (Compiler) یک برنامه‌ی خاص برای ترجمه سورس کد‌های (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است

کامپایلر یک برنامه‌ی خاص برای ترجمه سورس کد‌های (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است. سورس کد معمولا توسط یک زبان برنامه نویسی سطح بالا و نزدیک به زبان انسان مانند جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است یا سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده نوشته می‌شود. برنامه نویسان معمولا این سورس کد‌ها را داخل یک ادیتور کد نویسی و یا یک IDE  یا Integrated Development Environment می‌نویسند. IDE دارای یک ادیتور کد نویسی است و سورس کد‌ها را در قالب یک یا چند فایل ذخیره می‌کند. کامپایلری که زبان برنامه نویسی سورس کد را پشتیبانی می‌کند، فایل سورس را می‌خواند، تجزیه و تحلیل می‌کند و سپس آن را با فرمتی مناسب برای پلفترم هدف ترجمه می‌کند. 

کامپایلر‌هایی که سورس کد را به کد ماشین ترجمه می‌کنند، پلتفرم هدف آنها در واقع سیستم عامل‌ها و یا معماری‌های کامپیوتری (سخت افزاری) هستند. این نوع هدف، بعضی وقت‌ها با عنوان آبجکت کد (Object code) شناخته می‌شود ( که البته ربطی به قضیه‌ی برنامه نویسی شی گرا یا Object-Oriented Programming ندارد). خروجی ترجمه شده‌ی کد برای ماشین، تماما کد های دودویی یا باینری هستند. یعنی تنها از 0 و 1 تشکیل شده‌اند. بنابراین پردازنده‌ی کامپیوتر‌های هدف، قادر به اجرای این کد‌ها می‌باشند. به عنوان ذکر یک نمونه، خروجی می‌تواند برای پلتفرم Linux x64 و یا پلفترم Linux ARM 64-bit باشد.

بعضی کامپایلرها می‌توانند سورس کد‌ها را به جای کد‌های ماشین، به بایت کد (Byte Code) تبدیل کنند. بایت کد نخستین بار توسط زبان برنامه نویسی جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است معرفی شد. بایت کد یک زبان میانی (بین زبان سطح بالا و زبان ماشین) است که می‌تواند توسط تمامی سیستم‌هایی که به وسیله‌ی ماشین مجازی جاوا یا Java virtual machine (JVM) کار می‌کند، اجرا شود. JVM یک مفسر یا Interpreter است که می‌تواند بایت کد‌ها را به دستوراتی تبدیل کند که قابل اجرا توسط پردازنده‌های سخت افزاری است.

همچنین بعضی از کامپایلر‌ها می‌توانند سورس کد‌ها را به جای تبدیل به کد‌های ماشین یا بایت کد، به یک زبان سطح بالای دیگر ترجمه کنند. این کامپایلر‌ها معمولا با اصطلاحاتی نظیر ترنسپایلر (Transpiler)، ترنسکامپایلر (Transcompiler) و یا Soruce-To-Source Translator شناخته می‌شوند. به عنوان مثال، یک توسعه دهنده می‌تواند از این ترانسپایلر‌ها برای تبدیل کد از زبان برنامه نویسی COBOL  به زبان Java  استفاده کند.

صرف نظر از اینکه برنامه نویس از چه زبان برنامه نویسی استفاده می‌کند و خروجی کدش قرار است روی کدام پلتفرم باشد، کامپایلر باید از صحیح بودن منطق کد ورودی و مطابقت آن با کد خروجی، اطمینان حاصل کند. هنگام تبدیل کد ورودی، هیچ چیز نباید از بین برود. در غیر این صورت در منطق برنامه مشکل بوجود می‌آید. یک کامپایلر مثل یک مترجم عمل می‌کند و باید مطمئن باشد هیچ منطقی در خروجی حذف نمی‌شود و تغییر نمی‌کند.+

کامپایلر چگونه کار می کند؟ 

در این تصویر عملکرد کامپایلر را می‌توان دید.

کامپایلر‌ها متفاوت هستند و از متد‌های گوناگونی برای تجزیه و تحلیل و تبدیل سورس کد به کد خروجی استفاده می‌کنند. اما صرف نظر از این تفاوت‌ها، اکثر کامپایلر‌ها از یکسری مراحل خاص پیروی می‌کنند که در زیر لیست شده‌اند:

نکته‌ی آخر مربوط به مبحث در مورد کامپایلر و مفسر می‌شود. بسیاری از افراد این دو برنامه را با هم اشتباه می‌گیرند. اگرچه هدف این دو برنامه شبیه به هم است، اما یک تفاوت مهم بین آنها وجود دارد. کامپایلر، سورس کدهایی را که با زبان‌هایی مثل ++Java، C#، C و یا Swift نوشته شده‌اند را تجزیه و تحلیل کرده و سپس آنها را با کمک کد‌های IR، به کد‌های زبان ماشین یا بایت کد‌ها تبدیل می‌کند. این کد ها قادر به اجرا بر روی سیستم میزبان پلفترم خروجی هستند.

اما مفسر‌ها کد های IR و میانی تولید نمی‌کنند. همچنین کد‌های ماشین تولید شده را نیز ذخیره نمی‌کنند (برای کمک در کامپایل مجدد به صورت سریع، کامپایلرها اینکار را انجام می‌دهند).  بلکه مفسر‌ها، کد‌ها را به صورت خط به خط در زمان اجرا، پردازش می‌کنند. همچنین این کد‌ها مرحله‌ی آماده سازی یا Pre-Converting برای پلتفرم نهایی را ندارند. مفسر‌ها برای زبان های اسکریپتی مثل زبان‌های Perl، PHP، Ruby، و یا Python مورد استفاده قرار می‌گیرند.

کامپایلر چیست؟

کامپایلر یک برنامه خاص برای ترجمه‌ی سورس کد زبان‌های برنامه نویسی مانند Java و ++C به کد های ماشین و بایت کد ها است. زبان های برنامه نویسی ترجمه شده توسط کامپایلر، معمولا زبان‌های سطح بالا و نزدیک به زبان انسان است و کد‌های تولید شده‌ی نهایی توسط کامپایلر، بایت کد‌ها یا کد‌های ماشین است که توسط پردازشگر‌های سیستم خروجی، قابل اجرا می‌باشد.

آیا کامپایلر همان مفسر است؟

خیر، هدف از این دو برنامه تقریبا شبیه به هم می‌باشد، اما تفاوت‌های اساسی بین این دو برنامه وجود دارد. کامپایلر کد‌های زبان های برنامه نویسی را به کد‌های میانی یا IR تبدیل می‌کند و سپس از روی این کد‌ها، خروجی نهایی را برای یک هدف یا پلتفرم مشخص تولید می‌کند. اما مفسر مخصوص زبان‌های اسکریپتی است و سورس کد‌ها را در زمان اجرا به صورت خط به خط اجرا می‌کند. همچنین یک مفسر، کد‌ها را به زبان IR تبدیل نمی‌کند.

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (5 رای)
بارگذاری نظرات