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

محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۱:
{{سرص|زبان برنامه نویسی سی/پیش درآمدی بر برنامه نویسی|زبان برنامه نویسی سی/آشنایی با زبان سی C}}
همان طور که گفتیم زبان‌های برنامه‌نویسی به سه دسته سطح پائین ، سطح بالا و خیلی سطح بالا تقسیم می شوندمی‌شوند . زبان‌های سطح پائین به زبان ماشین و زبان اسمبلی تقسیم می شوندمی‌شوند و زبان اسمبلی نیز خود به دو سطح پائین ( یعنی اصلی و دستورالعمل‌های CPU یعنی Instruction Sets ) و سطح بالا تقسیم‌بندی میشودمی‌شود .
 
زبان‌های سطح بالا ، بی شمار هستند اما بر اساس خصیصه های مختلفی شناسایی می شوندمی‌شوند . زبان‌های '''دستورگرا''' یا خط-به-خط یا بهتر بگوئیم : کد-به-کد ، زبان‌هایی هستند که از اسمبلی الگو گرفته و هر کدی که نوشته شده را خط به خط و کد به کد ، دستور می دهندمی‌دهند که در نهایت اجرا خواهد شد که مشمول زبان C نیز می‌شود . درست در خلاف جهت زبان‌های دستوری ، زبان‌های '''موضوعی''' یا هدف‌گرا هستند که طی آن ، شما آن چه را که قرار است به عنوان خروجی صادر شود برای کامپایلر شرح می دهیدمی‌دهید ، کامپایلر ابتدا کل متن شما را میخواندمی‌خواند و سپس خروجی مورد نظر شما را صادر می کندمی‌کند . خصیصه های دیگری نیز در زبان‌های برنامه‌نویسی وجود دارند ، همچون ساختارگرایی که کدها را داخل بلوک‌ها می‌نویسید تا بتوانید آنها را از یک دیگر متمایز کرده و هر کدام را هر موقع که خواستید به کار بگیرید ( زبان C ساختار گراست ) یا مثلاً شیئ‌گرایی ، یکی دیگر از قابلیت های برنامه نویسیبرنامه‌نویسی است که زبان سی‌ِشیئ‌گرا Objective-C را شامل می شودمی‌شود ، اما نه زبان سی را ؛ شیئ‌گرایی قابلیتی از برنامه‌نویسی است که شما یک الگوی کامل از مجموعه‌ای از بلوک‌های تابع‌ها و یا داده‌ها را تعریف می‌کند و سپس از روی الگو نمونه‌هایی می‌سازید که هر نمونه ( که یک « شیئ » نامیده می‌شود ) خواص الگوی خود را دارد که می‌توانید آن را توسعه و تغییر دهید و آنها را کم یا زیاد کنید و یا مقادیر داخل نمونه را تغییر دهید . این قابلیت ( شیئ‌گرایی ) باعث جلوگیری از اتلاف وقت می‌شود و به جای اینکه هر داده‌ای را که بخواهید بر روی آن پردازش انجام دهید ، یک به یک تعریف کنید ؛ یک بار ، یک الگوی کامل با خصیصه‌هایی تعریف می‌کنید و سپس از روی آن الگو ، نمونه‌ها یا همان شیئ‌ها را می‌سازید . زبان C شیئ‌گرا نیست و نزدیک به اسمبلی سطح بالا است ، اما با زبان سی به تمام ورودی‌ها و خروجی‌ها و گذرگاه‌های سیستم دسترسی دارید ، مخصوصاً که بیشتر عرضه‌کننده‌های کامپایلرها قابلیت ترکیب کردن زبان سی با زبان اسمبلی را فراهم می‌آورند . می توانمی‌توان گفت که تمام خصلت‌هایی که برای برنامه نویسیبرنامه‌نویسی های سطح بالا شمرده می‌شود تنها کمک به راحت‌تر نوشته شدن ( و البته فهم آسان‌تر آن برای برنامه نویسبرنامه‌نویس ) و صرفه‌جویی در وقت است .<br>
هر برنامه‌ای که با زبان سطح بالا نوشته شود را می‌توان با زبان سطح پائین نیز نوشت ، اما هر برنامه‌ای که در زبان سطح پائین نوشته شده را نمی‌توان در زبان سطح بالا نوشت . اما وقتی زبان‌ها در سطح هم هستند به احتمال زیاد می توانمی‌توان آنها را به یکدیگر ترجمه نمود . شاید از عبارت ترجمه کمی تعجب کرده باشید ، بله ؛ زبان‌های برنامه‌نویسی را می توانمی‌توان توسط مبدل‌ها به یکدیگر ترجمه نمود . اما از آنجایی که ما در این کتاب قصد داریم تنها با زبان C کار کنیم به همین زبان می پردازیممی‌پردازیم ، جز اینکه در فصل ابتدایی مقدماتی را برای مبتدیان می‌نویسیم تا آماده یادگیری زبان C شده باشند
 
چند بار از کلمه کامپایلر استفاده نمودیم . یک برنامه در زبان‌های قابل کامپایل و ترجمه به Binary ماشین و یا codebyte کدبایت‌های قابل ترجمه توسط کرنل ، در یک فایل متنی با پسوند متناسب زبان خود نوشته و ذخیره می شودمی‌شود و سپس توسط کامپایلر Compiler به کدهای قابل ترجمه توسط پردازشگر ماشین ( CPU ) که همان 0 و 1 که پیشتر گفته شد و یا کرنل سیستم‌عامل ( Kernel ) و اجزاء کمکی سیستم‌عامل و کرنل ( کامپوننت‌ها Components ) تبدیل شده و بر روی حافظه نوشته می‌شوند . در اکثر مواقع ، ما در هنگام برنامه‌نویسی کدها را در چند فایل متنی می‌نویسیم . وقتی همه آنها را کامپایل نمودیم ، زمان آن می‌رسد تا توسط پیونددهنده یا لینکر Linker به صورت یکپارچه در آورده شده و یک خروجی قابل اجرا به وجود بیاوریم . در ویندوز حتماً فایل های exe یا dll را دیده‌اید . همه این برنامه‌ها توسط زبان‌های برنامه‌نویسی نوشته شده و سپس توسط کامپایلر و لینکر تبدیل به برنامه قابل اجرا شده‌اند . همچنین ممکن است شما در برنامه خود خطای مهلک یا خطای فاحش داشته باشید ( مثل Fatal Error ها ) یا خطاهایی که می توانندمی‌توانند برنامه شما را نامطلوب نمایند Bug ، در صورتی که قوانین استاندارد C را راعایت نکرده باشید ، کامپایلر ، برنامه شما را کامپایل یا ترجمه نخواهد نمود . در اینجا برنامه ای به نام اشکال‌زدا یا دیباگر Debugger برنامه ای که شما نوشته‌اید را میخواندمی‌خواند و سپس به شما می گویدمی‌گوید که در کدام قسمت‌های آن اشکال‌هایی وجود دارند که جلوی کامپایل شدن آن را میگیرندمی‌گیرند تا آنها را اشکال زداییاشکال‌زدایی یا Debug نمائید . از طرفی ، گاهی اینکه مدام بنویسید و صبر کنید تا برنامه کامپایل و لینک شود و مدام اشکال زدایی کنید وقت گیر باشد ؛ برنامه هاییبرنامه‌هایی به نام مفسّر Interpreter وجود دارند ( البته زبان C دارای دیباگرهای قدرتمندی مثل GDB از GNU و LLDB از پروژه LLVM که از پروژه GNU مشتق شده است می‌باشد که همانند مفسر عمل می‌کنند ) که امکان اجرای متن برنامه شما را بدون تبدیل به کد سیستم‌عامل یا ماشین ، می‌دهند و در این صورت به سرعت هر تغییری که بخواهید اعمال می‌کنید و نتیجه آن را ارزیابی می‌نمائید. . زبان‌هایی مثل پرل Perl برای کامپایل شدن تعبیه نشده‌اند ، از همین روی برنامه هایبرنامه‌های مفسّر ، فایل‌های متنی این گونه زبان‌ها را می‌خوانند و به اجرا می‌گذارند و اگر بخواهید که از این زبان‌ها برای نوشتن برنامه خود استفاده کنید باید این شرط برقرار گردد که کاربری که قصد استفاده از برنامه نوشته‌شدهنوشته شده شما را دارد نیز محیط اجرای کد شما را داشته باشد ( یعنی دست‌کم برنامه مفسّر Interpreter زبان پرل را که نسخه Version سازگار با برنامه نوشته شما باشد و البته ممکن است نیاز به برنامه‌های کمکی دیگر و کتابخانه‌هایی هم داشته باشد )
 
زمانی که شما برنامه‌ای را که نوشته‌اید را با کامپایلر سیستم‌عامل خود با موفقیت به خروجی رساندید ، برنامه شما تحت همان سیستم عاملیسیستم‌عاملی که نوشته‌اید قابل اجرا خواهد بود . بنابراین همان طور که قبلاً نیز گفتیم ، بسیاری از کامپایلر‌ها ، تحت سیستم‌عامل هستند و متن برنامه شما را به 0 و 1 ماشین تبدیل نمی کنند ، بلکه به کد های تحت سیستم‌عامل ترجمه می‌کنند تا در همان سیستم عاملسیستم‌عامل ، مثلاً ویندوز اجرا گردند . بنابراین فایل های exe را سیستم عامل‌هایسیستم‌عامل‌های مکینتاش macOS به رسمیت نمی شناسند و ویندوز Microsoft Windows نیز فایل های dmg را به اجرا در نمی آورد . البته کامپایلرهای قدرتمند زبان C مثل ++Visual Studio C از Microsoft و GCC از GNU قابلیت ترجمه به زبان ماشین را دارند و پروژه GCC ( GNU Compiler Collection ) قابلیت ترجمه برنامه شما به معماری‌های مختلف پردازشگرها ( مثل x86 و MIPS و ARM و PowerPC و Sparc و z390 و Itanium و ... ) را برای سیستم‌عامل‌های مختلف سری BSD ، سیستم عامل‌هایسیستم‌عامل‌های مکینتاش macOS یا iOS ، ویندوز و حتی سولاریس و بسیاری از سیستم‌عامل‌های دیگر را دارد
 
سیستم عامل‌هاسیستم‌عامل‌ها ، امکانات زیادی در جهت سهولت در ایجاد برنامه فراهم می‌کنند که همواره در حال به روز شدن هستند ؛ به همین علت است که یک برنامه در ویندوز اکس‌پی Windows XP اجرا می‌شود اما در ویندوز ۷ نه ؛ چون برنامه‌نویس‌ها برای کم شدن حجم برنامه خود و آسان‌تر شدن برنامه‌نویسی ، تمام برنامه خود را و منابع مورد نیازش را نمی‌نویسند ، بلکه از منابع سیستم‌عامل استفاده می‌کنند که این منابع ، خود یا دستورهایی که می‌گیرند و می‌دهند در هر به روز رسانی مایکروسافت ( و یا حتی سیستم‌عامل‌های دیگر ) تغییر می‌کنند . گرچه سازمان‌های فناوری رایانه و الکترونیک در تلاش هستند تا استانداردهایی را ایجاد کنند که مورد حمایت کمپانی های بزرگ همچون مایکروسافت ، اپل مکینتاش ، آی‌بی‌ام و ... برای سیستم عامل‌هاسیستم‌عامل‌ها و از طرفی دیگر ، ارائه کنندگان کامپایلرها ، قرار گیرد تا در نهایت ، برنامه‌نویس با سهولت هر چه تمام‌تر بعد از نوشتن برنامه خود آن را برای تمام سیستم‌ها عرضه کند
 
بیان این نکته نیز خالی از لطف نیست که عبارت '''پیاده‌ساز''' ( Implementation ) در مجموع به کامپایلر ( Compiler ) ، لینکر یا پیونددهنده ( Linker ) ، دیباگر ( Debugger ) و مفسّر ( Interpreter ) گفته میشودمی‌شود
[[رده:زبان برنامه نویسی سی]]