زبان برنامه نویسی سی/مقدمه + پیش درآمدی بر برنامه نویسی

ویکی‎کتاب، کتابخانهٔ آزاد
پرش به ناوبری پرش به جستجو
Gnome-go-last.svg
Gnome-go-first.svg

این کتاب را تقدیم می‌کنم به سرکار علّیه خانم شقایق جعفری جوزانی


امروزه بیشتر امور ، به صورت خودکار انجام می‌شوند . بعد از انقلاب رنسانس و صنعتی در اروپا ، جهان به سمت ماشینی و روتین شدن پیش رفت . اما علم الکترونیک باعث شد تا کارها با دقت و کلیت و سرعت بیشتری انجام پذیرند . اختراع ترانزیستورها و در نهایت مدار های میکروسکوپی و کوانتومی ، منجر به پیشرفت چشمگیر علم الکترونیک شد و در نهایت کامپیوتر یا همان رایانه اختراع شد و پا به عرصه وجود گذاشت . رایانه برخلاف دستگاه‌های الکترونیکی دیگر ، قابل برنامه‌ریزی است . اما این برنامه‌ریزی در ابتدا با ورق‌هایی پر از حفره انجام میشد که می‌توانست به پردازشگر بفهماند که باید چه کاری انجام دهد ( به این ورقه‌ها punch card گفته می‌شد )

برخلاف یک دستگاه دی‌وی‌دی که تنها می‌تواند کارهایی را که از پیش برای آن در نظر گرفته شده انجام دهد ؛ یک رایانه که امروزه شامل تبلت‌ها و گوشی‌های همراه هوشمند و بسیاری دیگر از دستگاه‌های الکترونیکی دیگر می‌شود می‌تواند مدام برنامه‌های مختلفی را دریافت کند و بر اساس آنها عمل کند . همان طور که گفته شد در ابتدای امر ، کار برنامه دادن به رایانه ، بسیار مشکل بود ، گرچه کارهایی که در آن زمان انجام می‌شدند آنقدر ساده بودند که به هیچ وجه با پردازش‌هایی که رایانه‌ها و برنامه‌های امروزی انجام می‌دهند قابل مقایسه نیستند . اما این حفره ها به مثابه 0 و 1 بودند ! اما 0 و 1 چیستند ؟ رایانه ، یک دستگاه دیجیتالی است ؛ بر خلاف دستگاه‌های الکترونیکیِ قدیمی که آنالوگ بودند و سیگنال‌ها از طریق موج‌هایی که بر روی جریان الکتریکی ایجاد می‌شدند ، رفت و آمد می‌کردند ؛ در دستگاه‌های الکترونیکی دیجیتالی ، سیگنال‌ها با قطع و وصلِ جریان ، رفت و آمد می‌کنند . وجود جریان ( یا وجود بار ) نماینده عدد « ۱ » و عدم وجود جریان ( یا عدم وجود بار ) نماینده عدد « ۰ » می‌باشند و بدین‌ترتیب با جریان الکتریکی که مرتب قطع-و-وصل می‌شود که تحت استانداردها و پروتکل‌های الکترونیکی است ، سیگنال‌ها رفت و آمد می‌کنند ( سیگنال به معنی پیام است که در علوم برق و الکترونیک به جریان الکتریکی یا امواج الکترومغناطیسی‌ای گفته می‌شود که دارای معنای خاصی باشد ) بنابراین زبان واقعی ماشین و از جمله رایانه یا کامپیوتر ، زبان 0 و 1 می باشد که جهت سهولت در کار ، سیگنال ها را که همان 0 و 1 می باشند و در مبنای ۲ هستند ( دودویی ) به مبناهای دیگری همچون ۴ ، ۸ ، ۱۰ و ۱۶ تبدیل می نمایند . اما این کار باز هم باعث سهولت مطلوبی نمی گردد . برنامه نویسی به زبان ماشین فوق‌العاده امری دشوار و وقت‌گیر است . اما فراموش نکنید که برای نوشتن هسته ( کرنل ) یک سیستم عامل ( که مجموعه ای از نرم افزارها و میان افزارها جهت مدیریت سخت‌افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) یا درایور یک دستگاه الکترونیکی ، مطمئناً باید از زبان‌های سطح پائین استفاده نمائید و با سخت‌افزار ارتباط برقرار نمائید

در دهه های دور ، زبانی برای تلفیق با زبان ماشین و سهولت در برنامه‌نویسی ابداع شد که زبان اسمبلی ( Assembly ) نام دارد و هنوز هم به کار می‌رود و این زبان دارای کدهایی می باشد که که هر کد ، نماینده یک عمل پردازنده رایانه ( واحد پردازشگر مرکزی Central Processing Unit - CPU ) می‌باشد و بدین ترتیب کار تا حدی آسان شد . بعد از گذشت زمان ، مهندسین دانش رایانه زبان های بسیار زیادی را ارائه کردند که همگی جزء زبان های سطح بالا ( زبان‌های نزدیک به زبان و فهم انسان ) به شمار می‌روند و کار نوشتن برنامه و برنامه دادن به رایانه را تا حد زیادی آسان می‌نمایند

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

ربان برنامه‌نویسی ، زبانی برای نوشتن کدهایی است که در چارچوب خاصی نوشته می‌شوند تا ترجمه آن به زبان ماشین امکان‌پذیر باشد و سپس توسط به کارگیرنده زبان ( مثلاً کامپایلر Compiler ) به زبان ماشین یا زبان سیستم عامل ترجمه می‌شوند و یا توسط مفسر ( interpreter ) بدون ترجمه به زبان ماشین ، تفسیر شده و به اجرا در می‌آیند . هر چه زبان ، سطح پائین‌تری داشته باشد ، در نوشتن برنامه وظیفه بیشتری به شما واگذار می‌شود و حتی برای نوشتن برنامه‌های ساده نیز باید مدت‌های طولانی‌تری نسبت به زبان‌های سطح بالا کدنویسی کنید زبان های سطح بالا ، زبان هایی هستند که مجموعه‌ای از نیاز های برنامه‌نویسی را که به صورت متداول در برنامه‌نوسی به کار می‌روند را با زبان‌های سطح پائین نوشته‌اند تا برنامه‌نویس به راحتی و در کم‌ترین زمان ، برنامه مورد نیاز خود را بنویسد و بدون نیاز به تغییر کد ( یا با کم‌ترین تغییر در کد ) آن را روی هر ماشینی پیاده سازی نماید . زبان هایی همچون Pascal ، ALGOL 68 ، Ada و در نهایت زبان C و خانواده آن که شامل Objective-C و ++C می شود و بسیاری از زبان ها که تأثیر گرفته از سی هستند همگی زبان های سطح بالا هستند و زبان هایی همچون COBOL ( کوبول ) یا Python ( پایتون ) زبان های خیلی سطح بالا محسوب می شوند . با نوشتن برنامه ، شما این قابلیت را به رایانه می دهید تا کارهای مورد نیاز یا مد نظر شما را به صورت روتین انجام دهد

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