خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش زبان ++C : مقدمه ای بر زبان های برنامه نویسی

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

سیستم یکپارچۀ سازمانی راهکار



زبان ماشین (Machine Language)


پردازنده (CPU) یک کامپیوتر قادر نیست تا با زبان ++C صحبت کند. دستورات خیلی محدودی که یک پردازنده می تواند آن ها را درک کند، کد ماشین (machine code) یا زبان ماشین (machine language) نامیده می شود. این که چگونه این دستورات سازماندهی شده اند، فراتر از محدوده این مقدمه است، اما جالب است که دو نکته را بدانید :

  • هر دستور قابل درک توسط کامپیوتر از یک عدد دو دویی (باینری) تشکیل شده است که می توانند 0 یا 1 باشند. این اعداد باینری بیت (bit) نامیده می شوند که مخفف واژه عدد باینری (binary digit) می باشد. برای مثال مجموعه دستورات معماری MIPS (این معماری یک واحد برای محاسبه سرعت دستورات در واحد میلیون در ثانیه می باشد.) همیشه 32 بیت طول دارند. سایر معماری ها مانند معماری X86 دارای طول دستورات متغیر می باشند. دستور زیر یک مثال از دستورات زبان ماشین در معماری X86 می باشد.

    10110000 01100001

  • هر مجموعه از دستورات باینری، توسط پردازنده به یک دستور مشخص ترجمه می شود که کار خاصی را انجام بدهد. مثلاً این دو عدد را با هم مقایسه کن، این عدد را در آن قسمت از حافظه قرار بده و دستوراتی از این قبیل. پردازنده های مختلف معمولاً مجموعه دستورات متفاوتی دارند، به عنوان مثال دستوراتی که در یک پردازنده Pentium 4 اجرا می شود، نمی تواند روی پردازنده یک کامپیوتر مبتنی بر Macintosh اجرا گردد. در اوایل اختراع کامپیوتر، برنامه نویسان مجبور بودند تا برنامه هایشان را مستقیماً به زبان ماشین (machine language) بنویسند که کار خیلی سخت و زمان بری نیز بود.

زبان اسمبلی (Assembly Language)


از آنجا که برنامه نویسی به زبان ماشین کار بسیار سختی بود، زبان اسمبلی (assembly language) اختراع شد. در زبان اسمبلی، هر دستور با یک نام کوتاه شناسایی می شود و دیگر از مجموعه ای از بیت ها (مشابه زبان ماشین) برای دستورات استفاده نخواهد شد، و متغیرها را نیز می توان به جای اعداد با نام معرفی کرد. این موضوع باعث می شود تا خواندن و نوشتن کدها ساده تر گردد. با این حال پردازنده نمی تواند به صورت مستقیم دستورات زبان اسمبلی را درک کند. به جای آن از یک مترجم میانی استفاده می شود تا دستورات زبان اسمبلی را به زبان ماشین ترجمه کند، در مورد زبان اسمبلی این مترجم اسمبلر (assembler) نامیده می شود. زبان اسمبلی بسیار سریع می باشد و هنوز هم در جاهایی که سرعت یک مساله مهم باشد از آن استفاده می گردد. دلیل این که زبان اسمبلی خیلی سریع می باشد، اینست که این زبان مخصوص پردازنده های خاصی می باشد. یعنی هر پردازنده زبان اسمبلی خاص خودش را دارد. برنامه های اسمبلی که برای یک پردازنده نوشته می شوند، نمی توانند روی پردازنده دیگری اجرا شوند. علاوه بر این، زبان اسمبلی، هنوز نیاز به نوشتن دستورات زیادی دارد، حتی برای انجام کارهای خیلی ساده نیز باید دستورات زیادی را به زبان اسمبلی نوشت، خواندن زبان اسمبلی اگر چه از خواندن زبان ماشین به مراتب آسانتر می باشد، اما هنوز هم خواندن آن بسیار سخت است. دستور زیر یک دستور نوشته شده با زبان اسمبلی می باشد.

mov al, 061h


زبان های سطح بالا (High-level Languages)


برای رفع مشکلات زبان اسمبلی، زبان های سطح بالا اختراع شدند. زبان C، زبان ++C ، پاسکال (Pascal)، جاوا (Java)، جاوا اسکریپت (Javascript) و زبان پرل (Perl) همه جزء زبان های برنامه نویسی سطح بالا می باشند. زبان های سطح بالا به برنامه نویسان اجازه می دهند تا برنامه هایشان را بدون نگرانی در مورد نوع کامپیوتری (نوع پردازنده) که قرار است این برنامه ها روی آن ها اجرا گردد، بنویسند. طبیعتاً برنامه هایی که با زبان های سطح بالا نوشته می شوند، باید به زبان ماشین ترجمه گردند تا پردازنده بتواند آن ها درک کرده و همینطور اجرا کند. برای ترجمه زبان های سطح بالا به زبان ماشین دو روش اصلی وجود دارد :

  • ترجمه کردن (compiling)
  • تفسیر کردن (interpreting)

یک کامپایلر (compiler) برنامه ای است که کد نوشته شده به زبان سطح بالا را می خواند و از روی آن یک فایل اجرایی که توسط پردازنده قابل اجرا باشد، می سازد. وقتی کد شما به یک فایل اجرایی تبدیل شد، دیگر برای اجرای آن نیازی با کامپایلر (compiler) نخواهید داشت. اگر چه در ظاهر به نظر می رسد که وقتی یک برنامه نوشته شده در زبان سطح بالا توسط کامپایلر به زبان ماشین ترجمه می شود، کار آیی و سرعتش از برنامه نوشته شده به زبان اسمبلی کمتر می باشد، اما کامپایلرهای مدرن این کار را آنقدر خوب انجام می دهند که حتی بعضی وقتها از کدهایی که مستقیماً به زبان اسمبلی نوشته اید، بهتر به زبان ماشین ترجمه می شوند و کارآیی و سرعت آنها نیز بیشتر می باشد.

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

تصویر زیر، به صورت ساده فرآیند تفسیر (interpretation) را به شما نشان می دهد.
آموزش زبان ++C : مقدمه ای بر زبان های برنامه نویسی
هر زبان برنامه نویسی می تواند کامپایل (compile) یا تفسیر (interprete) شود. اگر چه، معمولاً به طور سنتی زبان هایی مانند زبان C، زبان ++C و زبان پاسکال (Pascal) کامپایل می شوند، در مقابل، زبان های اسکریپتی (scripting languages) مانند زبان پرل (Perl) و زبان جاوااسکریپت (Javascript) تفسیر می شوند. بعضی زبان های برنامه نویسی مانند جاوا (Java) از یک روش ترکیبی کامپایل و تفسیر استفاده می کنند.

زبان های برنامه نویسی سطح بالا (High level languages) چند ویژگی مطلوب دارند :

اول اینکه نوشتن برنامه های با این زبان ها و همینطور خواندن برنامه های نوشته شده به این زبان ها، آسان تر می باشد. به عنوان مثال دستور زیر یک دستور به زبان C می باشد :

a = 97;


دوم اینکه، نسبت به زبان های سطح پایین تر نیازمند نوشتن دستورات کمتری می باشند. به عنوان مثال در زبان برنامه نویسی ++C شما می توانید دستور زیر را در یک خط بنویسید :

a = b * 2 + 5;

در مقابل، نوشتن همین دستور در زبان اسمبلی مشتمل بر 5 یا 6 خط می شود.

سوم اینکه، در مورد خیلی از مفاهیم سطح ماشین دیگر نیاز نیست نگرانی داشته باشید، به عنوان مثال در زبان های سطح پایین شما درگیر این موضوع خواهید شد که چگونه مقادیر متغیرها را در ثبات های پردازنده (CPU registers) بار گذاری کنید، اما در هنگام استفاده از زبان های سطح بالا، کامپایلر (compiler) یا مفسر (interpreter) این کارها را صورت می دهد.

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

تصویر زیر قابلیت انتقال پذیری برنامه های نوشته شده با زبان های سطح بالا در معماری های مختلف را به شما نشان می دهد.
آموزش زبان ++C : مقدمه ای بر زبان های برنامه نویسی
برای مشاهده فهرست آموزش های این دوره آموزشی بر روی لینک زیر کلیک کنید :


آموزش قبلی : آموزش زبان ++C : مقدمه ای بر این دوره آموزشی

آموزش بعدی : آموزش زبان ++C : مقدمه ای بر زبان های C و ++C



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.