شاید از خود بپرسید استاندارد به چه معناست ؟ از زمانی که زبان سی تعریف و اختراع شد قابلیتهای بسیار زیادی به رایانه افزوده شدند. برای همین در طول زمان ، ارائه دهندههای بستههای نرمافزاری پیادهساز زبان سی ، همواره هر کدام برای خود کلید واژه هایی را اضافه یا کم میکردند و یا عملکرد دلخواه خود را برای آن به کار میبستند . هر کدام کتابخانه مجزای خود را ایجاد میکردند . استانداردهای ISO در طول این مدت بیشتر نیازهای برنامهنویسی را پوشش میدادند و میدهند اما باز هم برخی از کامپایلرها از استانداردهای قدیمی C98 و یا C99 استفاده میکنند یا با اینکه سازگار با C11 یا C18 هستند به صورت کامل استاندارد را پشتیبانی نمیکنند ، مثلاً برخی کامپایلرها هنوز اجازه استفاده از متون Unicode ( مثل UTF-16 ) را در داخل متن منبع برنامه ( Program Source Code ) نمیدهند
اما چرا C ؟ برخی زبانها خیلی سطح بالا هستند ، مثل Python یا COBOL که با آنها نمیتوانید خیلی از کارها را انجام بدهید ، چون دسترسی به CPU و سختافزار را ندارید ؛ برخی زبانها ، همترازِ زبان C هستند ، اما کارایی و قدرت زبان C را ندارند مثل پاسکال Pascal . در خانواده زبان C و زبانهایی که از آن الگو گرفتهاند ، مثلاً زبان مشهوری همچون جاوا Java از شرکت Sun Microsystems باز هم قدرت زبان C را ندارند . با جاوا نمیتوان یک کرنل نوشت ، مخصوصاً با تغییراتی که پس از فروخته شدن Sun به Oracle پیش آمد ( که قدرت زبان جاوا ، بسیار ضعیفترکاهش شدیافت ) ؛ همین طور خیلی از ابزارهای قدرتمند ( Tools ) که با سختافزار ارتباط برقرار میکنند و سطح پائین نوشته میشوند یا مثلاً Daemon ها و ... که امکان نوشته شدن در زبانهای سطح بالا را ندارند . در این بین میماند زبان ++C که با کامپایلر C نوشته شد تا کارهایی را سهولت بخشد و قابلیت شیئگرائی را به C اضافه کند و رقیب سرسخت زبان C میباشد . اما اول اینکه زبان C قدرت بیهمتایی دارد و دارای کامپایلرها و پیادهسازهای قدرتمندی بوده و هست که قابلیتهای اضافهتر از زبان استاندارد C را به آن داده و میدهند که با کمک آنها میتوان از ترفندهایی استفاده کرد که به عنوان مثال ، شیئگرایی را در C تقلید کرد ؛ همچنین با قابلیتهایی که در استانداردهای جدید به زبان C اضافه شد برنامهنویسی سطح بالا بسیار راحتتر از قبل شده است ؛ ضمن اینکه پروژههای زیادی در دنیای GNU / Linux و با پروانههای انتشار آزاد GPL یا BSD به زبان C عرضه شدند که تقریباً تمام کارهایی که بخواهید انجام بدهید را از قبل نوشتهاند و شما با مجموعه کتابخانههای بسیار بزرگ و کاملی مواجه هستید ؛ که در صورتی که بخواهید برنامه خود را آزاد و رایگان ارائه دهید ( Free and Open Source ) متن منبع برنامه را استفاده کرده و یا ویرایش میکنید و سپس از آن در برنامه خود استفاده میکنید و یا در صورتی بخواهید برنامه خود را تجاری یا متن بسته ارائه دهید ؛ در صورتی که پروانه ( License ) انتشار BSD را داشته باشد به راحتی میتوانید از آنها در برنامه تجاری و یا متن بسته خود ( Closed Source ) استفاده کنید و ممنوعیتی نداردندارید و در صورتی نیز که برنامه نوشته شده پروانه انتشار عمومی گنیو را داشته باشد ( GNU GPL ) شما میتوانید برنامه کامپایل شده آن را در برنامه خودتان استفاده کنید ولی فقط به صورت کامپایل شده ( و از متن منبع آن در برنامه خود استفاده نکنید ) . شما در زبان C میتوانید از کدهای Assembly نیز استفاده کنید ؛ شاید بگوئید در ++C هم میشود ولی فراموش نکنید که به تازگی پیادهسازهای ++C به وضعیت مطلوبی در مورد پردازندههای ARM رسیدند و از قدیمالایام تا به کنون فقط برای پردازندههای x86 کامپایل میشوند در حالی که زبان C تقریباً برای هر پردازنده و دستگاه الکترونیکی ( Device ) ـی دارای کامپایلر است ؛ چه به صورت عمومی در کامپیوترهای خانگی و چه به صورت خصوصی در کمپانیها و شرکتها و کارخانجات که استخدام شوید که البته برای برنامهنویسی سطح پائین ، باید به الکترونیک نیز تسلط داشته باشید . همین طور که میبینید ، قابلیتها و قدرت C باعث محبوبیت بیهمتای آن در بین برنامهنویسان قدر و قهار و مهندسان سختافزار و نرمافزار شده است . ضمن اینکه پروژه GNOME از GNU زبانی را به نام والا Vala طراحی کرد تا سطح بالاتر از #C از مایکروسافت و Java از Sun و Oracle ، کد بزنید و سپس کدهای بسیار سطح بالای شما را به کدهای زبان C ترجمه کند که سپس با نگاه انداختن به آن و رفع اشکالهای ( Debug ) برنامه نوشته شده به Vala را که حالا به زبان C ترجمه شده است ، میتوانید برنامه را به زبان C برای سیستمعاملها کامپایل کنید که کار نوشتن برنامههای کاربردی Applications که با C ممکن است کمی زمان بر باشند را برطرف میکند در کنار رابطکاربری GTK که توسط GNU به زبان سی برای لینوکس ، سری سیستمعاملهای BSD ، ویندوز ، سولاریس ، مکینتاش و حتی هایکو و هر سیستمعاملی که فکرش را بکنید عرضه میشود
برای نوشتن برنامههای سی نیاز به مجموعهای از نرم افزارها خواهید داشت . که در صفحه بعدی می توانید آنها را پیدا کرده و مهیّا نمائید . به صورت اختصار ، اول باید یک ویرایشگر متن داشته باشید. در ویندوز برنامه Notepad و در سیستم عامل مک TextEdit و در نسخ مختلف لینوکس ویرایشگرهای متن به همراه سیستم عامل وجود دارند ( نظیر gEdit ) . اما ویرایشگر های متنی همچون ++Notepad یا Geany ، GNU Emacs ، JuffEd ، Programmer's Notepad ، Scribus ، SuperEdi ، Vim ، WinVi یا خیلی از ویرایشگرهای دیگر امکاناتی دارند که سهولت نوشتن و کامپایل برنامه را فراهم مینمایند . امکاناتی نظیر تفکیک قسمتهای برنامه با رنگی کردن ، کلفت کردن ، ایتالیک کردن و از همه مهمتر جمع کردن قسمتهای آن که میتوانید قسمتها و بلوکهای متن خود را مدیریت کنید ؛ جستجو و جایگزین کردنهای پیچیده و کامل ، کدنویسی خودکار و ... که کار را راحتتر میکنند