این ضمیمه به عنوان کمکی به برنامهنویسان C با شناسایی جنبههای مختلف زبان تهیه شده است. به این طریق، این ضمیمه به عنوان یک راهنما است و آموزشی نیست.
سرمنشاءهای [برنامه] C
زبان برنامهنویس C در اولین بار به وسیله دنیس ریتج (Dennis Ritch) بر روی یک DEC.PDP-11 که از سیستمعامل UNIX استفاده میکرد. اختراع گردید. زبان C دنباله زبانی با نام BCPL است که هنوز در اروپا بیشترین استفاده از آن میشود. BEPL به وسیله مارتین ریچارد (Martin Richard) به وجود آمد و به وسیله زبان B تحت تأثیر قرار گرفت. که توسط کن تامپسون (Ken Thompson) اختراع شد و به ایجاد زبان C منجر گردید.
برای سالهای متمادی استاندارد دی فاکتور (de factor) برای C، استانداردی بود که به وسیله ورژن ۵ سیستم عامل UNIX پشتیبانی میشد و در برنامهنویسی C که به وسیله برایان کرنافن (Brian Kernighan) و دنیس ریچ (Dennis Ritch) نوشته شده بود توضیح داده میشد و به وسیله (Englewood cliffs: Prentice-Hall.Inc.,1978) [منتشر گردید]. در هنگامی که محبوبیت کامپیوترهای کوچک افزایش یافت تعداد زیادی از کارکردهای C خلق شد. اکثریت این کارکردها در سطح کد با یکدیگر قابل تعویض بودند بنابراین چون استانداردی وجود نداشت اختلاف به وجود میآمد.
برای تصحیح این وضعیت کمیتهای در تابستان ۱۹۸۳ به منظور کار بر روی تولید یک ANSI استاندارد تشکیل شد تا اینکه زبان C را توصیف کند. با این نوشته، استاندارد مورد نظر کامل بوده و سازگاری آن با ANSI بسیار زود مورد قبول واقع شد.
زبان C به عنوان یک زبان استاندارد
زبان C عموماً به عنوان یک زبان ساختاری در نظر گرفته شد، با برخی تشابهات با ALGOL و پاسکال. اگرچه کلمه ساختار بلوکی مستقیماً برای زبان C در حالت آکادمیک به کار نمیرود، زبان C به صورت غیر رسمی بخشی از آن گروه زبان است، مشخصه بارز زبان ساختاری جداسازی کد و اطلاعات از یکدیگر است. این مطلب به این معنی است که زبان میتواند همه اطلاعات و دستورالعملهای ضروری برای انجام یک کار مشخص را از بقیه برنامه حذف و پنهان کند. به طور کلی، جداسازی با مراحل فرعی با انواع عمومیای که دائماند، به دست میآید. به این طریق، احتمال دارد که مراحل فرعی نوشته شوند تا اینکه وقایعی که در آن اتفاق میافتد باعث تأثیرات فرعی در قسمتهای دیگر برنامه نشود. استفاده بیش از حد از انواع جهانی (انواعی که در کل برنامه شناخته میشوند) ممکن است باعث نفوذ عوامل به درون برنامه شود با مجاز شناختن تأثیرات ناخواسته در برنامه، در برنامه C همه مراحل فرعی عملکردهای مجزا هستند.
عملکردها بلوکهای سازههای Cاند که در آن همه فعالیتها اتفاق میافتند. آنها کارهای بخصوص را در برنامه به منظور کدگذاری و تشخیص جداگانه انجام میدهند. پس از debugging یک عملکرد که فقط انواع عمومی را به کار میگیرد، شما میتوانید بر عملکردی تکیه کنید که در همه موقعیتهای متنوع بدون به وجود آوردن تأثیرات جانبی در بخشهای دیگر برنامه، کار کند. همه انواع نشان داده شده در این عملکرد بخصوص فقط با آن عملکرد شناخته خواهند شد.
همچنین استفاده از بلوکهای کد در برنامه C ساختار برنامه را به وجود میآورد. یک بلوک کد عبارتهایی از یک گروه برنامه منطقی متصل است که میتواند به عنوان یک واحد در نظر گرفته شود. و با قرار گرفتن خطوط کد مابین ابروها بسته و باز مانند زیر قرار میگیرند.