زبان برنامه نویسی سی/آشنایی با زبان های برنامه‌نویسی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
برچسب: واگردانی دستی
جزبدون خلاصۀ ویرایش
خط ۱:
{{سرص|زبان برنامه نویسی سی/پیش درآمدی بر برنامه نویسی|زبان برنامه نویسی سی/آشنایی با زبان سی C}}
همان طور که گفتیم زبان های برنامه نویسیبرنامه‌نویسی به سه دسته سطح پائین ، سطح بالا و خیلی سطح بالا تقسیم می شوند . زبان های سطح پائین به زبان ماشین و زبان اسمبلی تقسیم می شوند و زبان اسمبلی نیز خود به دو سطح پائین ( اصلی ) و بالا تقسیم بندی میشود .
 
زبان های سطح بالا ، بی شمار هستند اما بر اساس خصیصه های مختلفی شناسایی می شوند . زبان های '''دستورگرا''' یا خط-به-خط یا بهتر بگوئیم : کد-به-کد ، زبان هایی هستند که از اسمبلی الگو گرفته و هر کدی که نوشته شده را خط به خط و کد به کد ، دستور می دهند که در نهایت اجرا خواهد شد که مشمول زبان C نیز می‌شود . درست در خلاف جهت زبان های دستوری ، زبان های '''موضوعی''' یا هدف گرا هستند که طی آن ، شما آن چه را که قرار است به عنوان خروجی صادر شود برای کامپایلر شرح می دهید ، کامپایلر ابتدا کل متن شما را میخواند و سپسس خروجی مورد نظر شما را صادر می کند . خصیصه های دیگری نیز در زبان های برنامه نویسیبرنامه‌نویسی وجود دارند ، همچون ساختار گراییساختارگرایی که کدها را داخل بلوک‌ها می نویسید تا بتوانید آنها را از یک دیگر متمایز کرده و هر کدام را هر موقع که خواستید به کار بگیرید ( زبان C ساختار گراست ) یا مثلاً شیئ گرایی ، یکی دیگر از قابلیت های برنامه نویسی است که زبان سی شیئ گراسی‌ِشیئ‌گرا Objective-C را شامل می شود ، اما نه زبان سی را ؛ شیئ گرایی قابلیتی از برنامه‌نویسی است که شما یک الگوی کامل از مجموعه‌ای از بلوک‌های تابع‌ها و یا داده‌ها را تعریف می‌کند و می‌توانید الگو را توسعه دهید و سپس از روی الگو نمونه‌هایی می‌سازید که هر نمونه ، یک « شیئ » نامیده می‌شود و خواص الگوی خود را دارد که البته می‌توانید آنها را کم یا زیاد کنید و یا مقادیر داخل نمونه را تغییر دهید . این قابلیت ( شیئ‌گرایی ) باعث جلوگیری از اتلاف وقت می‌شود و به جای اینکه هر داده‌ای را که بخواهید بر روی آن پردازش انجام دهید ، یک به یک تعریف کنید ؛ یک بار یک الگوی کامل با خصیصه‌هایی تعریف می‌کنید و سپس از روی آن الگو نمونه‌ها یا همان شیئ‌ها را می‌سازید . زبان C شیئ‌گرا نیست و نزدیک به اسمبلی سطح بالا است ، اما با زبان سی به تمام ورودی‌ها و خروجی‌ها و گذرگاه‌های سیستم دسترسی دارید ، مخصوصاً که بیشتر عرضه کننده‌های کامپایلرها قابلیت ترکیب کردن زبان سی با زبان اسمبلی را فراهم می‌آورند . می توان گفت که تمام خصلت هاییخصلت‌هایی که برای برنامه نویسی های سطح بالا شمرده می شودمی‌شود تنها کمک به راحت ترراحت‌تر نوشته شدن ( و البته فهم آسان ترآسان‌تر آن برای برنامه نویس ) و صرفه جوییصرفه‌جویی در وقت است .
هر برنامه ای که با زبان سطح بالا نوشته شود را می توان با زبان سطح پائین نیز نوشت ، اما هر برنامه ای که در زبان سطح پائین نوشته شده را نمی تواننمی‌توان در زبان سطح بالا نوشت . اما وقتی زبان ها در سطح هم هستند به احتمال زیاد می توان آنها را به یکدیگر ترجمه نمود . شاید از عبارت ترجمه کمی تعجب کرده باشید ، بله ؛ زبان های برنامهزبان‌های نویسیبرنامه‌نویسی را می توان توسط مبدل‌ها به یکدیگر ترجمه نمود . اما از آنجایی که ما در این کتاب قصد داریم تنها با زبان C کار کنیم به همین زبان می پردازیم ، جز اینکه در فصل ابتدایی مقدماتی را برای مبتدیان می‌نویسیم تا آماده یاد گیری زبان C شده باشند
 
چند بار از کلمه کامپایلر استفاده نمودیم . یک برنامه در یک فایل متنی با پسوند متناسب زبان خود نوشته و ذخیره می شود و سپس توسط کامپایلر Compiler به کدهای قابل ترجمه توسط پردازشگر ماشین ( CPU ) و یا کرنل سیستم عاملسیستم‌عامل ( Kernel ) تبدیل میشود . در اکثر مواقع ، ما در هنگام برنامه نویسی کدها را در چند فایل متنی می نویسیم . وقتی همه آنها را کامپایل نمودیم ، زمان آن می رسدمی‌رسد تا توسط پیوند دهندهپیونددهنده یا لینکر Linker به صورت یکپارچه در آورده شده و یک خروجی قابل اجرا به وجود بیاوریم . در ویندوز حتماً فایل های exe یا dll را دیده ایددیده‌اید . همه این برنامه هابرنامه‌ها توسط زبان‌های برنامه‌نویسی نوشته شده و سپس توسط کامپایلر و لینکر تبدیل به برنامه قابل اجرا شده‌اند . همچنین ممکن است شما در برنامه خود خطای مهلک یا خطای فاحش داشته باشید یا خطاهایی که می توانند برنامه شما را نامطلوب نمایند Bug ، در صورتی که قوانین استاندارد C را راعایت نکرده باشید ، کامپایلر ، برنامه شما را کامپایل یا ترجمه نخواهد نمود . در اینجا برنامه ای به نام اشکال‌زدا یا دیباگر Debugger برنامه ای که شما نوشته‌اید را میخواند و سپس به شما می گوید که در کدام قسمت‌های آن اشکال‌هایی وجود دارند که جلوی کامپایل شدن آن را میگیرند تا آنها را اشکال زدایی یا Debug نمائید . از طرفی ، گاهی اینکه مدام بنویسید و صبر کنید تا برنامه کامپایل و لینک شود و مدام اشکال زدایی کنید وقت گیر باشد ؛ برنامه هایی به نام مفسّر InterpretorInterpreter وجود دارند که امکان اجرای متن برنامه شما را بدون تبدیل به کد سیستم عاملسیستم‌عامل می دهند و در این صورت به سرعت هر تغییری که بخواهید اعمال می کنید و نتیجه آن را ارزیابی می نمائید. . زبان هایی مثل پرل Perl برای کامپایل شدن تعبیه نشده‌اند ، از همین روی برنامه های مفسّر ، فایل‌های متنی این گونه زبان ها را می خوانند و به اجرا می گذارند و اگر بخواهید که از این زبان‌ها برای نوشتن برنامه خود استفاده کنید باید این شرط برقرار گردد که کاربری که قصد استفاده از برنامه نوشته‌شده شما را دارد نیز محیط اجرای کد شما را داشته باشد ( یعنی برنامه مفسّر Interpreter زبان پرل را )
 
زمانی که شما برنامه ای را که نوشته ایدنوشته‌اید را با موفقیت به خروجی رساندید ، برنامه شما تحت همان سیستم عاملی که نوشته‌اید قابل اجرا خواهد بود . بنابراین همان طور که قبلاً نیز گفتیم ، بسیاری از کامپایلر‌ها ، تحت سیستم عامل هستند و متن برنامه شما را به 0 و 1 ماشین تبدیل نمی کنند ، بلکه به کد های تحت سیستم عامل ترجمه می کنند تا در همان سیستم عامل ، مثلاً ویندوز اجرا گردند . بنابراین فایل های exe را سیستم عامل‌های مکمکینتاش Mac OS XmacOS به رسمیت نمی شناسند و ویندوز Microsoft Windows نیز فایل های dmg را به اجرا در نمی آورد . البته کامپایلرهای قدرتمند زبان C مثل Visual Studio از Microsoft و GCC از GNU قابلیت ترجمه به زبان ماشین را دارند و پروژه GCC ( GNU Compiler Collection ) قابلیت ترجمه برنامه شما به معماری‌های مختلف پردازشگرها ( مثل MIPS و ARM و PowerPC و Sparc و z390 و Itanium و ... ) را برای سیستم عامل‌های مختلف سری BSD ، سیستم عامل‌های مکینتاش macOS یا iOS ، ویندوز و حتی سولاریس را دارد
زبان هایی مثل پرل Perl برای کامپایل شدن تعبیه نشده اند ، از همین روی برنامه های مفسّر ، فایل‌های متنی این گونه زبان ها را می خوانند و به اجرا می گذارند و اگر بخواهید که از این زبان‌ها برای نوشتن برنامه خود استفاده کنید باید این شرط برقرار گردد که کاربری که قصد استفاده از برنامه نوشته‌شده شما را دارد نیز محیط اجرای کد شما را داشته باشد
 
سیستم عامل‌ها ، امکانات زیادی در جهت سهولت در ایجاد برنامه فراهم می کنند که همواره در حال به روز شدن هستند ؛ به همین علت است که یک برنامه در ویندوز ایکس پیایکس‌پی Windows XP اجرا می شود اما در ویندوز ۷ نه ؛ چون برنامه نویس‌ها برای کم شدن حجم برنامه خود و آسان‌تر شدن برنامه‌نویسی از منابع سیستم‌عامل استفاده می کنند که این منابع ، خود یا دستورهایی که می گیرند و می دهندمی‌دهند در هر به روز رسانی مایکروسافت تغییر می‌کنند . گرچه سازمان‌های فناوری رایانه و الکترونیک در تلاش هستند تا استانداردهایی را ایجاد کنند که مورد حمایت کمپانی های بزرگ همچون مایکروسافت ، اپل مکینتاش ، آی‌بی‌ام و ... برای سیستم عامل‌ها و از طرفی دیگر ، ارائه کنندگان کامپایلرها ، قرار گیرد تا در نهایت ، برنامه‌نویس با سهولت هر چه تمام‌تر بعد از نوشتن برنامه خود آن را برای تمام سیستم‌ها عرضه کند
زمانی که شما برنامه ای را که نوشته اید را با موفقیت به خروجی رساندید ، برنامه شما تحت همان سیستم عاملی که نوشته‌اید قابل اجرا خواهد بود . بنابراین همان طور که قبلاً نیز گفتیم ، بسیاری از کامپایلر‌ها ، تحت سیستم عامل هستند و متن برنامه شما را به 0 و 1 ماشین تبدیل نمی کنند ، بلکه به کد های تحت سیستم عامل ترجمه می کنند تا در همان سیستم عامل ، مثلاً ویندوز اجرا گردند . بنابراین فایل های exe را سیستم عامل‌های مک Mac OS X به رسمیت نمی شناسند و ویندوز Microsoft Windows نیز فایل های dmg را به اجرا در نمی آورد . البته کامپایلرهای قدرتمند زبان C مثل Visual Studio از Microsoft و GCC از GNU قابلیت ترجمه به زبان ماشین را دارند و پروژه GCC (GNU Compiler Collection) قابلیت ترجمه برنامه شما به معماری‌های مختلف پردازشگرها ( مثل MIPS و ARM و PowerPC و Sparc و z390 و Itanium و ... ) را برای سیستم عامل‌های مختلف سری BSD ، سیستم عامل‌های مکینتاش macOS ، ویندوز و حتی سولاریس را دارد
 
بیان این نکته نیز خالی از لطف نیست که عبارت '''پیاده‌ساز''' ( Implement )به در مجموع به کامپایلر ( Compiler ) ، لینکر ( Linker ) ، دیباگر ( Debugger ) و مفسرمفسّر ( Interpreter ) گفته میشود
سیستم عامل‌ها ، امکانات زیادی در جهت سهولت در ایجاد برنامه فراهم می کنند که همواره در حال به روز شدن هستند ؛ به همین علت است که یک برنامه در ویندوز ایکس پی Windows XP اجرا می شود اما در ویندوز ۷ نه ؛ چون برنامه نویس‌ها برای کم شدن حجم برنامه خود و آسان‌تر شدن برنامه‌نویسی از منابع سیستم‌عامل استفاده می کنند که این منابع ، خود یا دستورهایی که می گیرند و می دهند در هر به روز رسانی مایکروسافت تغییر می‌کنند . گرچه سازمان‌های فناوری رایانه و الکترونیک در تلاش هستند تا استانداردهایی را ایجاد کنند که مورد حمایت کمپانی های بزرگ همچون مایکروسافت ، اپل مکینتاش ، آی‌بی‌ام و ... برای سیستم عامل‌ها و از طرفی دیگر ، ارائه کنندگان کامپایلرها ، قرار گیرد تا در نهایت ، برنامه‌نویس با سهولت هر چه تمام‌تر بعد از نوشتن برنامه خود آن را برای تمام سیستم‌ها عرضه کند
 
بیان این نکته نیز خالی از لطف نیست که عبارت '''پیاده‌ساز''' ( Implement )به مجموع کامپایلر ( Compiler ) ، لینکر ( Linker ) ، دیباگر ( Debugger ) و مفسر ( Interpreter ) گفته میشود
[[رده:زبان برنامه نویسی سی]]