جستجو برای:
  • صفحه اصلی
  • لیست کامل دوره ها
  • مگامگ (محتوا رایگان)
    • Javascript
    • UX
    • HTML/CSS
    • UI
  • حساب کاربری شما
    • داشبورد
    • دوره های خریداری شده
    • ویرایش پروفایل کاربری
 
مگادمی
  • صفحه اصلی
  • لیست کامل دوره ها
  • مگامگ (محتوا رایگان)
    • Javascript
    • UX
    • HTML/CSS
    • UI
  • حساب کاربری شما
    • داشبورد
    • دوره های خریداری شده
    • ویرایش پروفایل کاربری
0
ورود / عضویت

مگادمیمگامگمقالاتبرنامه نویسیکامپایلر چیست و چگونه کار می کند؟

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

22 دی 1402
ارسال شده توسط فرهاد احمدی
برنامه نویسی
933 بازدید
compiler کامپایلر چیست

آنچه خواهید دید :

Toggle
  • کامپایلر (Compiler) چیست؟
  • کامپایل کردن (Compilation) چیست؟
  • انواع کامپایلر ها
    • زبان های میانه
  • تفاوت های کامپایلر و مفسر
    • تفاوت مفسر و کامپایلر در پیاده سازی برنامه چیست؟
    • تفاوت کامپایلر و مفسر در نیاز به حافظه
    • تفاوت مفسر و کامپایلر در میزان محبوبیتشان برای برنامه نویسی
  • مراحل کامپایلر
    • Scanning – اسکن کردن
    • Lexial – تحلیل واژه‌ای
    • Syntactic – تحلیل نحوی
    • Semantic – تحلیل معناشناسی
  • مزایای کامپایلر
  • زبان های کامپایلری
  • زبان های مفسری
  • حرف اخر

کامپایلر (Compiler) چیست؟

compileProcess 1

زبان های برنامه نویسی، زبان هایی هستند که ما متوجه آن ها می شویم و اگر بخواهم ساده تر بگویم به زبان انسان نزدیکتر هستند مثل پایتون (Python)، به این نوع زبان ها، زبان های سطح بالا گفته میشود اما شما برای اجرای کد های خود باید آنها را برای ماشین تعریف کنید که بتواند آن ها را بخواند و اجرا کند. مشکلی که هست ماشین فقط زبان باینری (0 و 1) را متوجه می شود، اما کدهای ما به زبان های سطح بالا هستند و کاری که ما باید انجام دهیم تبدیل آنها به 0 و 1 است تا ماشین ان ها را متوجه شود.

به این تبدیل کامپایل کردن گفته و به ابزار هایی که این تبدیل را برای ما انجام میدهد کامپایلر گفته می شود.

کامپایل کردن (Compilation) چیست؟

به همان عملیات تبدیل کامپایل کردن (Compilation) گفته می شود. پس به ابزاری که تبدیل را انجام میدهد کامپایلر و به آن فرایند تبدیل کامپایل کردن گفته می شود.

انواع کامپایلر ها

  1. (Ahead Of Time) AOT: در اینجا جلوتر از زمان، به منظور زمانی است که داریم نرم افزار را اجرا میکنیم. قبل از اجرای نرم افزار کل کد ها را ترجمه میکند و بعد در اختیار سی پی یو قرار میدهد. به دلیل اینکه جلو تر از زمان اجرا، ترجمه صورت گرفته بهش میگن جلو تر از زمان.
    زبان هایی مثل C++, C, Pascal از این نوع استفاده می کنند.
  2. (Just In Time) JIT : دقیقا زمانی که نرم افزار در حال اجرا شدن است در همان لحظه کامپایل هم میشود، کامپایلر های JIT ترکیبی از aot و مفسر (interpreter) هستند. ترکیب این 2 با هم کامپایلر های JIT را به وجود آورده یعنی کل کد ها را میگیرد و به یک زبان میانه تبدیل میکند و بعد این کد ها را تیکه تیکه میاد اجرا میکند.
    زبان هایی مثل #JAVA, c از این نوع استفاده می کنند.


اگر بخواهم یک توضح کوتاه درباره مفسر ها بگم، مفسر ها میان خط به خط کد ها را می خوانند و اجرا میکنند. در واقع اینطوری نیستند که کل کد را بگیرد و بعد اجرا کند.

  • زبان های میانه

compiled-vs-interpreted

زبان میانه زبان ماشین نیست به همین دلیل برای تبدیل کد ها به زبان سطح پایین نیازمند استفاده از ابزاری مثل JVM (Java Virtual Machine) است.

JVM یک برنامه است که کامپیوتر را مستقل از سیستم عاملی که روی آن نصب است، قادر می‌سازد تا برنامه‌های جاوا و همچنین برنامه‌های نوشته شده به زبان‌های دیگر را که در بایت‌کد جاوا نیز کامپایل شده‌اند، اجرا کند.

 

تفاوت های کامپایلر و مفسر

  • تفاوت مفسر و کامپایلر در پیاده سازی برنامه چیست؟

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

  • تفاوت کامپایلر و مفسر در نیاز به حافظه

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

  • تفاوت مفسر و کامپایلر در میزان محبوبیتشان برای برنامه نویسی

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

مراحل کامپایلر

  • Scanning – اسکن کردن

در این مرحله خط به خط تمامی کارکتر های ما را اسکن می کند، که مشکل نداشته باشند، کارکتر غیر مجازی وجود نداشته باشد و نکته حایز اهمیت هم این است که یادش می ماند که این کارکتر در کجا و در کدام خط بوده.

  • Lexial – تحلیل واژه‌ای

در این مرحله کارکتر ها را به هم میچسباند که به اصطلاح به آنها توکن گفته میشود و سپس آن ها را بررسی می کند که توکن غیر مجازی وجود نداشته باشد. { در مرحله اول حرف حرف جدا می کرد اما در این مرحله حرف ها را بر می دارد و کلمه های آن ها را بررسی میکند }

  • Syntactic – تحلیل نحوی

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

  • Semantic – تحلیل معناشناسی

در این مرحله میاد و به معنی آن توجه میکند، آیا معنی سینتکس درست است و یا خیر؟  مثلا به جمله “ساعت پنج شنبه است” دقت داشته باشید که جمله از لحاظ ساختاری درست است اما معنی نمیدهد، پس در نتیجه کامپایل صورت نمیگیرد و اروری زیبا مشاهده میکنید.

مزایای کامپایلر

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

زبان های کامپایلری

  • C
  • C++
  • Java
  • C#
  • Swift
  • Fortran
  • Ada
  • Rust
  • Go
  • Pascal

زبان های مفسری

  • Python
  • Ruby
  • JavaScript
  • PHP
  • Perl
  • Lua
  • Shell Scripting languages (مثل Bash)
  • MATLAB
  • R

توجه داشته باشید که برخی از زبان‌ها ممکن است همزمان امکانات کامپایل و مفسر را داشته باشند (مانند Python که می‌تواند به صورت تفسیری یا با استفاده از ماژول‌های کامپایلی مانند Cython کار کند).

حرف اخر

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

با سپاس ;-)

 

 

 

اشتراک گذاری:
برچسب ها: CompilationCompilerبرنامه نویسیکامپایلکامپایلر
درباره فرهاد احمدی

فرهاد هستم از نوع طراح و برنامه نویسش.

نوشته های بیشتر از فرهاد احمدی

مطالب زیر را حتما مطالعه کنید

حرفه ای 1
استاندارد های فنی حرفه ای برای حوزه وب
سازمان فنی و حرفه‌ای یکی از معتبرترین مراکز ارائه‌دهنده مدارک حرفه‌ای در ایران هست. بیشتر...
Object in JavaScript
2 روش ساخت آبجکت (object) در جاوا اسکریپت
object چیست؟ آبجکت یک نوع داده کلید و مقدار (key-value) هست. در نظر بگیرید که...
array
آرایه (array) در جاوا اسکریپت و 4 روش تغییر عضو های آرایه
آرایه (array) چیست؟ بیاید به زبان ساده و یک مثال دنیای واقعی بهش نگاه کنیم....
numbers
عدد (number) در جاوا اسکریپت و 2 نوع اصلی و مهم اعداد
عدد (number) در برنامه نویسی چیست؟ اعداد در برنامه نویسی، یکی از مهمترین انواع داده...
string
رشته (string) چیست و 3 روش پیاده سازی آنها
رشته (string) چیست؟     string یک نوع داده در برنامه نویسی هست. این نوع...
جاوا اسکریپت
جاوا اسکریپت چیست و 3 روش استفاده از آن در HTML
جاوا اسکریپت (JavaScript) چیست؟ جاوا اسکریپت یک زبان برنامه نویسی اسکریپتی هست. مقالات زیادی راجب...

11 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • مجید کارگر گفت:
    8 خرداد 1403 در 8:09 ق.ظ

    خیلی جالب و عالی بود. اینکه بدونیم با زبان هایی که کار می کنیم در واقع دارن چیکار میکنن و چجوری اجرا میشن میتونه تو خیلی از موارد جلوی بعضی از مشکلات مارو بگیره. دمت گرم عالی بود

    پاسخ
  • ناشناس گفت:
    29 دی 1402 در 1:46 ق.ظ

    کامل بود فرهاد جون

    پاسخ
  • Sh3yda Mousavi گفت:
    23 دی 1402 در 9:40 ب.ظ

    چه مرتب و جامع و سازماندهی شده نوشتی .خیلی خوب بود 🌹 اگر مثلا زبان های مفسری و کامپایلری رو به میتونستید به صورت تصویری هم بذارید جذاب تر میشد.

    پاسخ
    • فرهاد احمدی گفت:
      24 دی 1402 در 12:43 ق.ظ

      خیلی ممنون مرسی از اینکه مطالب رو با دقت خوندی و دیدگاهت رو گفتی

  • Sh3yda Mousavi گفت:
    23 دی 1402 در 9:40 ب.ظ

    چه مرتب و جامع و سازماندهی شده نوشتی . خیلی خوب بود 🌹 اگر مثلا زبان های مفسری و کامپایلری رو به میتونستید به صورت تصویری هم بذارید جذاب تر میشد.

    پاسخ
  • Nilo گفت:
    23 دی 1402 در 12:30 ق.ظ

    عالی آقای احمدی 🌹

    پاسخ
    • فرهاد احمدی گفت:
      23 دی 1402 در 3:07 ق.ظ

      مرسی خیلی ممنون

  • میلاد واقف نژاد گفت:
    22 دی 1402 در 6:26 ب.ظ

    خیلی کامل و تمیز بود
    عالی فرهاد

    پاسخ
    • فرهاد احمدی گفت:
      22 دی 1402 در 6:46 ب.ظ

      مرسی ممنون

  • Amirali گفت:
    22 دی 1402 در 4:36 ب.ظ

    بسیار عالی و مفید
    ممنون ☺️

    پاسخ
    • فرهاد احمدی گفت:
      22 دی 1402 در 6:47 ب.ظ

      خواهش میکنم خیلی ممنون

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
نوشته‌های تازه
  • استاندارد های فنی حرفه ای برای حوزه وب
  • 2 روش ساخت آبجکت (object) در جاوا اسکریپت
  • آرایه (array) در جاوا اسکریپت و 4 روش تغییر عضو های آرایه
  • عدد (number) در جاوا اسکریپت و 2 نوع اصلی و مهم اعداد
  • رشته (string) چیست و 3 روش پیاده سازی آنها
اطلاعات تماس
  • 02191030701
  • khateri.amirhossein@yahoo.com
فهرست سفارشی
  • صفحه اصلی
  • تماس با ما
  • حساب کاربری من
  • درباره ما
  • سبد خرید
  • لیست دوره های مگادمی

تمامی حقوق برای آکادمی آنلاین مگادمی محفوظ می باشد.
ورود ×
ورود با کد تایید
ارسال مجدد کد تایید(00:60)
حساب کاربری ندارید؟
عضویت

ارسال مجدد کد تایید (00:60)
بازگشت به صفحه ورود

ورود

رمز عبور را فراموش کرده اید؟

ارسال مجدد کد تایید (00:60)

هنوز عضو نشده اید؟ عضویت در سایت