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

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱:
{{سرص|زبان برنامه نویسی سی|زبان برنامه نویسی سی/آشنایی با زبان های برنامه نویسی}}
امروزه بیشتر امور ، به صورت خودکار انجام میشودمی‌شوند . بعد از انقلاب رنسانس و صنعتی در اروپا ، جهان به سمت ماشینی و روتین شدن پیش رفت . اما علم الکترونیک باعث شد تا کارها با دقت و کلیت و سرعت بیشتری انجام پذیرند . اختراع ترانزیستور و در نهایت مدار های میکروسکوپی و کوانتومی ، منجر به اختراع کامپیوتر یا همان رایانه و پیشرفت در ساخت آن شد که. رایانه قابل برنامهبرنامه‌ریزی ریزی بوداست . اما این برنامه ریزیبرنامه‌ریزی در ابتدا با ورق هاییورق‌هایی پر از حفره انجام میشد که می توانست به پردازشگر بفهماند که باید چه کاری انجام دهد ( به این ورقه‌ها punch card گفته می‌شد )
 
برخلاف یک دستگاه دی‌وی‌دی که تنها می‌تواند کارهایی را که از پیش برای آن در نظر گرفته شده انجام دهد ؛ یک رایانه که امروز شامل تبلت‌ها و گوشی‌های همراه هوشمند و بسیاری دیگر از دستگاه‌های الکترونیکی میدیگر شودمی‌شود می‌تواند مدام برنامه‌های مختلفی را دریافت کند و بر اساس آنها عمل کند . همان طور که گفته شد در ابتدای امر ، کار برنامه دادن به رایانه ، بسیار مشکل بود ، گرچه کارهایی که در آن زمان انجام می‌شدند آنقدر ساده بودند که به هیچ وجه قابل مقایسه با پردازش‌هایی که رایانه‌ها و برنامه‌های امروزی انجام می‌دهند نیستند . اما این حفره ها به مثابه 0 و 1 بودند !
اما 0 و 1 چیستند ؟
رایانه ، یک دستگاه دیجیتالی است ؛ بر خلاف دستگاه‌های الکترونیکیِ قدیمی ، که آنالوگ بودند و سیگنال‌ها از طریق موج‌هایی که بر روی جریان الکتریکی ایجاد می‌شدند ، رفت و آمد می‌کردند ؛ در دستگاه‌های الکترونیکی دیجیتالی ، سیگنال‌ها با قطع و وصلِ جریان ، رفت و آمد می‌کنند . وجود جریان نماینده عدد ۱ و عدم وجود جریان نماینده عدد ۰ می‌باشند و بدین‌ترتیب با جریان الکتریکی که مرتب قطع-و-وصل می‌شود که تحت استانداردها و پروتکل‌های الکترونیکی است ، سیگنال‌ها رفت و آمد می‌کنند ( سیگنال به معنی پیام است که در علوم برق و الکترونیک به جریان الکتریکی یا امواج الکترومغناطیسی‌ای گفته می‌شود که دارای معنای خاصی باشد ) . بنابراین زبان واقعی ماشین و از جمله رایانه یا کامپیوتر ، زبان 0 و 1 می باشد که جهت سهولت در کار ، سیگنال ها را که همان 0 و 1 می باشند و در مبنای دو۲ هستند ( دودویی ) به مبناهای دیگری همچون ۴ ، ۸ ، ۱۰ و ۱۶ تبدیل می نمایند . اما این کار باز هم باعث سهولت مطلوبی نمی گردد . برنامه نویسی به زبان ماشین فوق العادهفوق‌العاده امری دشوار و وقت گیروقت‌گیر است . اما فراموش نکنید که برای نوشتن هسته ( کرنل ) یک سیستم عامل ( که مجموعه ای از نرم افزارها و میان افزارها جهت مدیریت سخت‌افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) یا درایور یک دستگاه الکترونیکی ، مطمئناً باید از زبان‌های سطح پائین استفاده نمائید و با سخت‌افزار ارتباط برقرار نمائید
 
در دهه های دور ، زبانی برای تلفیق با زبان ماشین و سهولت در برنامه‌نویسی ابداع شد که زبان اسمبلی ( Assembly ) نام دارد و هنوز هم به کار می‌رود و این زبان دارای کدهایی می باشد که که هر کد نماینده یک عمل پردازنده رایانه ( واحد پردازشگر مرکزی Central Processing Unit - CPU ) می باشد و بدین ترتیب کار تا حدی آسان شد . بعد از گذشت زمان ، مهندسین دانش رایانه زبان های بسیار زیادی را ارائه کردند که همگی جزء زبان های سطح بالا ( زبان‌های نزدیک به زبان و فهم انسان ) به شمار میمی‌روند و کار نوشتن برنامه و برنامه دادن به رایانه را تا حد زیادی روندآسان .می‌نمایند
رایانه یک دستگاه دیجیتالی است ؛ بر خلاف دستگاه‌های الکترونیکیِ قدیمی ، که آنالوگ بودند و سیگنال‌ها از طریق موج‌هایی که بر روی جریان الکتریکی ایجاد می‌شدند ، رفت و آمد می‌کردند ؛ در دستگاه‌های الکترونیکی دیجیتالی ، سیگنال‌ها با قطع و وصلِ جریان ، رفت و آمد می‌کنند . وجود جریان نماینده عدد ۱ و عدم وجود جریان نماینده عدد ۰ می‌باشند و بدین‌ترتیب با جریان الکتریکی که مرتب قطع-و-وصل می‌شود که تحت استانداردها و پروتکل‌های الکترونیکی است ، سیگنال‌ها رفت و آمد می‌کنند ( سیگنال به معنی پیام است که در علوم برق و الکترونیک به جریان الکتریکی یا امواج الکترومغناطیسی‌ای گفته می‌شود که دارای معنای خاصی باشد ) . بنابراین زبان واقعی ماشین و از جمله رایانه یا کامپیوتر ، زبان 0 و 1 می باشد که جهت سهولت در کار ، سیگنال ها را که همان 0 و 1 می باشند و در مبنای دو هستند ( دودویی ) به مبناهای دیگری همچون ۴ ، ۸ ، ۱۰ و ۱۶ تبدیل می نمایند . اما این کار باز هم باعث سهولت مطلوبی نمی گردد . برنامه نویسی به زبان ماشین فوق العاده امری دشوار و وقت گیر است . اما فراموش نکنید که برای نوشتن یک سیستم عامل یا درایور یک دستگاه الکترونیکی ، مطمئناً باید از زبان‌های سطح پائین استفاده نمائید و با سخت‌افزار ارتباط برقرار نمائید
 
این نکته را فراموش نکنید که زبان ماشین برای هر پردازنده مجزا می باشد . به دنبال آن نیز زبان اسمبلی سی‌پی‌یو ( و نه اسمبلیاسمبلیِ سطح بالا ) نیز برای هر پردازنده جدا می باشد . به غیر از این دو زبان ، تمامی زبان‌ها ، سطح بالا به شمار می روند و اینکه گفته می شود زبانی سطح میانی دارد از منظر دانش رایانه ناصحیح می باشد ، شاید تنها بتوان اسمبلی های سطح بالا را سطح میانی پنداشت . مزیت زبان‌های سطح پائین این است که شما هیچ گونه محدودیتی در نوشتن برنامه ندارید و از کرنل سیستم عامل گرفته تا برنامه های جانبی ، خدماتی ، کاربردی و ... همه را می توانید بنویسید . اما این نکته مهم ، همچنان وجود دارد که اگر برنامه ای را بخواهید برای ماشین های مختلف بنویسید باید برای هر کدام از نو برنامه را نوشته و سپس اجرا کنید . از طرفی اگر اشتباهی مرتکب شوید ممکن است به سیستم آسیب وارد کنید . از زبان‌های سطح پائین ، معمولاً فقط در نوشتن میان‌افزار و کرنل سیستم عامل استفاده می‌شود
در دهه های دور ، زبانی برای تلفیق با زبان ماشین و سهولت در برنامه‌نویسی ابداع شد که زبان اسمبلی ( Assembly ) نام دارد و هنوز هم به کار می‌رود و این زبان دارای کدهایی می باشد که که هر کد نماینده یک عمل پردازنده رایانه ( واحد پردازشگر مرکزی Central Processing Unit - CPU ) می باشد و بدین ترتیب کار تا حدی آسان شد . بعد از گذشت زمان ، مهندسین دانش رایانه زبان های بسیار زیادی را ارائه کردند که همگی جزء زبان های سطح بالا به شمار می روند .
 
ربان برنامه‌نویسی ، زبانی برای نوشتن کدهایی است که در چارچوب خاصی نوشته می‌شوند تا ترجمه آن به زبان ماشین امکان‌پذیر باشد و سپس توسط به کارگیرنده زبان ( مثلاً کامپایلر Compiler ) به زبان ماشین یا زبان سیستم عامل ترجمه می‌شوند و یا توسط مفسر ( interpreter ) بدون ترجمه به زبان ماشین ، تفسیر شده و به اجرا در می‌آیند . هر چه زبان ، سطح پائین‌تری داشته باشد ، در نوشتن برنامه وظیفه بیشتری به شما واگذار می‌شود و حتی برای نوشتن برنامه‌های ساده نیز باید مدت‌های طولانی‌تری نسبت به زبان‌های سطح بالا کدنویسی کنید
این نکته را فراموش نکنید که زبان ماشین برای هر پردازنده مجزا می باشد . به دنبال آن نیز زبان اسمبلی سی‌پی‌یو ( و نه اسمبلی سطح بالا ) نیز برای هر پردازنده جدا می باشد . به غیر از این دو زبان ، تمامی زبان‌ها ، سطح بالا به شمار می روند و اینکه گفته می شود زبانی سطح میانی دارد از منظر دانش رایانه ناصحیح می باشد ، شاید تنها بتوان اسمبلی های سطح بالا را سطح میانی پنداشت . مزیت زبان‌های سطح پائین این است که شما هیچ گونه محدودیتی در نوشتن برنامه ندارید و از سیستم عامل گرفته تا برنامه های جانبی ، خدماتی ، کاربردی و ... همه را می توانید بنویسید . اما این نکته مهم همچنان وجود دارد که اگر برنامه ای را بخواهید برای ماشین های مختلف بنویسید باید برای هر کدام از نو برنامه را نوشته و سپس اجرا کنید . از طرفی اگر اشتباهی مرتکب شوید ممکن است به سیستم آسیب وارد کنید . از زبان‌های سطح پائین ، معمولاً فقط در نوشتن میان‌افزار و کرنل سیستم عامل استفاده می‌شود
زبان های سطح بالا و خیلی سطح بالا ، زبان هایی هستند که مجموعه ایمجموعه‌ای از نیاز های یکبرنامه‌نویسی برنامهرا که به صورت متداول در برنامه‌نوسی به کار نویسمی‌روند را مهیابا میزبان‌های کنندسطح پائین نوشته‌اند تا برنامه‌نویس به راحتی و در کم‌ترین زمان ، برنامه مورد نیاز خود را بنویسد و بدون نیاز به تغییر کد ( یا با کم‌ترین تغییر در کد ) آن را روی هر ماشینی پیاده سازی نماید . زبان هایی همچون Pascal ، ALGOL 68 ، Ada و در نهایت زبان C و خانواده آن که شامل Objective-C و ++C می شود و بسیاری از زبان ها که تأثیر گرفته از سی هستند همگی زبان های سطح بالا هستند و زبان هایی همچون COBOL ( کوبول ) یا Python ( پایتون ) زبان های خیلی سطح بالا محسوب می شوند . با نوشتن برنامه ، شما قابلیت این را به رایانه می دهید تا کارهای مورد نیاز یا مد نظر شما را به صورت روتین انجام دهد
 
زبان‌های برنامه‌نویسی با کمک دستورها و، عملگرها و داده‌ها ، امکاناتی را نظیر پردازش بر روی اعداد ، حروف و متون ، برقراری ارتباط با سخت افزار و ارتباط با ورودی‌ها و خروجی‌های سیستم را فراهم می نمایند . ضمن اینکه خطا در زبان های سطح بالا توسط مجموعه برنامه های به کارگیرنده رفع می گردد و به عبارتی Debug ( رفع اشکال ) می‌شود . نباید فراموش کنید که به کارگیرنده های زبان‌های خیلی سطح بالا و بسیاری از زبان‌های سطح بالا تنها با سیستم عامل ( که مجموعه ای از نرم افزار ها و میان افزار ها جهت مدیریت سخت افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) ارتباط دارند و آنچه خروجی شما از برنامه می‌باشد ، زبان ماشین نیست . بلکه زبانی نزدیک به زبان ماشین می‌باشد که مختص سیستم عامل بوده و کدهای خروجی را با توجه به شرایط ، اجرا می‌نماید
زبان های سطح بالا و خیلی سطح بالا ، زبان هایی هستند که مجموعه ای از نیاز های یک برنامه نویس را مهیا می کنند تا به راحتی و در کم‌ترین زمان ، برنامه مورد نیاز خود را بنویسد و بدون نیاز به تغییر کد ( یا با کم‌ترین تغییر در کد ) آن را روی هر ماشینی پیاده سازی نماید . زبان هایی همچون Pascal ، ALGOL 68 ، Ada و در نهایت زبان C و خانواده آن که شامل Objective-C و ++C می شود و بسیاری از زبان ها که تأثیر گرفته از سی هستند همگی زبان های سطح بالا هستند و زبان هایی همچون COBOL ( کوبول ) یا Python ( پایتون ) زبان های خیلی سطح بالا محسوب می شوند . با نوشتن برنامه ، شما قابلیت این را به رایانه می دهید تا کارهای مورد نیاز یا مد نظر شما را به صورت روتین انجام دهد
 
زبان‌های برنامه‌نویسی با کمک دستورها و عملگرها و داده‌ها ، امکاناتی را نظیر پردازش بر روی اعداد ، حروف و متون ، برقراری ارتباط با سخت افزار و ارتباط با ورودی‌ها و خروجی‌های سیستم را فراهم می نمایند . خطا در زبان های سطح بالا توسط مجموعه برنامه های به کارگیرنده رفع می گردد و به عبارتی Debug ( رفع اشکال ) می‌شود . نباید فراموش کنید که به کارگیرنده های زبان‌های خیلی سطح بالا و بسیاری از زبان‌های سطح بالا تنها با سیستم عامل ( که مجموعه ای از نرم افزار ها و میان افزار ها جهت مدیریت سخت افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) ارتباط دارند و آنچه خروجی شما از برنامه می‌باشد ، زبان ماشین نیست . بلکه زبانی نزدیک به زبان ماشین می‌باشد که مختص سیستم عامل بوده و کدهای خروجی را با توجه به شرایط ، اجرا می‌نماید
[[رده:زبان برنامه نویسی سی]]