دلایل اهمیت زبان C + مقایسه با سایر زبانها(جلسه ۱)
این مقاله در مورد دلایل اهمیت زبان C توضیح داده و شما را با برخی از کاربردهای زبان C آشنا می کند. C یک زبان کارامد و همه منظوره است که در سال های ۱۹۶۹ تا ۱۹۷۳ به وسیله دنیس ریچی در آزمایشگاه های بل طراحی شد. نسخه اولیه این زبان به نوعی تکامل یافته و جایگزین زبان B بود که قبلا در آزمایشگاه های بل ابداع شده بود.
ریچی و همکارش برایان کرنیگن در سال ۱۹۸۷ کتابی منتشر کردند که سال ها به عنوان استاندارد غیر رسمی مرجع برنامه نویسان C بود اما سازمان ANSI در سال ۱۹۸۹ استاندار C را منتشر کرد؛ به این دلیل معمولا نسخه اولیه این زبان را ANSI C خطاب می کنند. زبان C به عنوان ابزاری برای طراحی سیستم unix ایجاد شد، بنابراین هدف اصلی این بود که تا حد امکان کارا و توانمند باشد.
دلایل اهمیت زبان C
درست است که C در ابتدا برای طراحی سیستم ساخته شده بود اما چون قابلیت های زیادی داشت به سرعت در طراحی برنامه های کاربردی و یا برنامه نویسی سخت افزار و تراشه ها جای خود را پیدا کرد. دلایل اهمیت زبان C را می توان به صورت زیر بررسی کرد:
دسترسی به سخت افزار و حافظه
یکی از مهم ترین دلایل اهمیت زبان C امکان دسترسی به حافظه از طریق اشاره گر است. اشاره گر امکانات فراوانی به برنامه نویس می دهد که به وسیله آن می توان برخی عمیات مورد نیاز روی داده و برنامه را با حداقل سربار نرم افزاری انجام داد. اشاره گر امکان مفیدی است که در دستکاری رشته ها،دسترسی به آرایه ها، فراخوانی توابع، ارسال آرگومان به توابع، دسترسی به اعضای یک Structure، تخصیص حافظه و بساری موارد دیگر مفید واقع می شود.
امکان برنامه نویسی به سبک ماژولار
برنامه مناسب و صحیح به سبکی طراحی می شود که اشکال زدایی، ارتقا، استفاده مجدد و انتقال آن به تراشه های دیگر به ساده ترین شکل امکان پذیر باشد. استفاده از سبک برنامه نویسی ماژولار، شیوه ای مناسب برای طراحی این سیستم ها است که مزایای فراوانی را به همراه دارد. برای آشنایی با برنامه نویسی ماژولار می توانید از این مقاله استفاده کنید.
وجود استاندارد
اکثر شرکت های تولید کننده کامپایلر C، سعی می کنند در طراحی کامپایلر از استاندارد ANSI C پیروی کنند از این رو امکانات زبان سی، در اکثر کامپایلرها مشابه یکدیگر است. بنابراین با صرف زمان و هزینه می توان کد برنامه را به کامپایلرهای دیگر منتقل کرد. این ویژگی زمانی اهمیت پیدا می کند که طراح قصد داشته باشد، پروژه های پیشین را به قطعه ای دیگر منتقل کند.
بازدهی بالا
بازدهی یا کارایی کامپایلر شامل دو موضوع حجم کد تولیدی و سرعت اجرا می باشد. C یک زبان با بازدهی بالاست. برنامه های سی فشرده هستند و سریع اجرا می شوند. در صورتی که کامپایلر و زبان برنامه نویسی،به اندازه کافی کارا نباشد، طراح باید از قطعه با حافظه بیشترو سرعت بالاتر استفاده کند و این به معنای افزایش هزینه است. شرکت هایی که به صورت انبوه محصول را تولید می کنند باید کامپایلرهایی با بازدهی بالاتر استفاده کنند تا قیمت محصول نهایی مناسب و قابل رقابت باشد.
وجود سیستم عامل های بلادرنگ (RTOS)
بخش عمده ای از سیستم های میکروکنترلری دارای محدودیت های زمانی هستد و باید به صورت بی درنگ عمل کنند. در کاربردهای Real-time نیاز به استفاده از RTOS است که تقریبا RTOS های موجود به زبان C هستند.
RTOS = Real-Time Operating System
پشتیبانی از Structure و Union
زبان C از نوع داده های ساخت یافته مانند Structure پشتیبانی می کند. Structure، امکان بسیار مفیدی است که استفاده از آن موجب افزایش انسجام برنامه می شود. علاوه بر Structure ساختاری به نام Union در زبان سی موجود است که یکی از کاربردهای آن، تجزیه و ترکیب داده ها بدون سربار نرم افزاری است.
مقایسه C با زبان های دیگر
در دنیای فناوری، همه چیز به سرعت جایگزین می شود، ولی برای زبان سی این طور نبوده است. در طول دهه ها، زبان های برنامه نویسی بسیاری پدید آمده اند، که برخی از آنها منحصراً برای رقابت با C ایجاد شده اند، اما همانطور که می بینیم، این زبان هنوز پا برجاست.
اگرچه بسیاری از مردم معتقدند که زبان C باید بازنشسته شود، اما پس از گذشت این مدت طولانی، هیچ زبانی با کارایی بالا در حد C ایجاد نشده است. از سوی دیگر، بسیاری از زبانهای برنامهنویسی مدرن امروزی از زبان C مشتق شدهاند. در ادامه برای درک بهتر دلایل اهمیت زبان C مقایسه ای بین این زبان و چند زبان معروف انجام می دهیم.
زبان C در مقایسه با پایتون
امروزه نمی توان از توسعه نرم افزار صحبت کرد ولی پایتون را از یاد برد. دلایل زیادی برای همه گیری پایتون وجود دارد، اما به نظر می رسد انعطاف پذیری و قابلیت استفاده بالای پایتون از مهم ترین دلایل فراگیری و محبوبیت آن است.
نقطه مقابل پایتون و زبان C در زمان توسعه و اجراست. پایتون یک روال توسعه بسیار سریع دارد، اما در اجرا کند است. در مقابل، C روال توسعه کندی دارد اما در اجرا بسیار سریع است. از آنجایی که سخت افزارهای امروزی بسیار بهبود یافته اند، پایتون می تواند به راحتی و با سرعت بالا اجرا شود. بنابراین هیچ مشکلی در این مورد وجود ندارد. هم چنین در پایتون مدیریت حافظه و عملکرد برنامه به صورت خودکار انجام می شود. بنابراین توسعه دهنده به سطوح پایین سخت افزار دسترسی ندارد.
رابطه بین پایتون و C با زبان های دیگر تفاوت دارد، زیرا محیط اجرای پایتون در واقع به زبان C نوشته شده است. علاوه بر آن، بسیاری از کتابخانه های پایتون هم با زبان C توسعه یافته اند. از آنجایی که پایتون با زبان C توسعه یافته است، نیازی نیست بیشتر از این به اهمیت زبان سی برای توسعه پایتون اشاره کنیم.
زبان C در مقایسه با Go
Go یکی از شبیه ترین زبان ها به C است. به طوری که برنامه نویسانی که زبان C را می فهمند می توانند به راحتی زبان Go را فرا بگیرند. این بدان معنا نیست که Go از نظر عملکرد برابر با C است. Go ویژگی های سطح بالایی را ارائه می دهد که از جمله آنها می توان به سیستم مدیریت package و namespace اشاره کرد.
یکی از اهداف اصلی سازندگان Go این است که آن را تا حد امکان خوانا نگه دارند. کار با کدهای زبان C تا حدودی سخت است، اما Go این مشکل را حل کرده است. از طرفی بسیاری از ویژگی های Go مانند Concurrency در زبان C موجود نیستند و یا در صورت وجود، باید به صورت دستی پیاده سازی شوند.
Go نیز مانند سی شارپ از قابلیت های لازم برای دسترسی به حافظه برخوردار است. با وجود تمام ویژگیهای عالی که Go ارائه میکند، هنوز برای نوشتن کرنل، درایور و سایر کارهای سطح پایین نامناسب است. به همین دلیل هنوز هم کاستی هایی دارد که باعث می شود ادامه استفاده از زبان C منطقی تر باشد.
زبان C در مقایسه با Java
امروزه بسیاری از برنامه های مدرن با استفاده از جاوا ساخته می شوند. این زبان پس از چندین دهه به عنوان ابزار اصلی برای توسعه برنامه های کاربردی سازمانی جای خود را تثبیت کرده است. برای مثال، می توان به اکثر پروژه های بنیاد آپاچی اشاره کرد.
سینتکس جاوا به شدت از C مشتق شده است. برخلاف زبان C، جاوا به کدهای native تبدیل نمی شود. در عوض، جاوا از محیط اجرای خود به نام JVM استفاده می کند. با استفاده از ماشین مجازی جاوا می توانید کدهای جاوا را در هر مکانی اجرا کنید.
از طرف دیگر، برنامه های C برای اجرای کامل در سیستم عامل های مختلف به کمی تنظیم نیاز دارند. ترکیب قابلیت حمل (portability) و کارایی بالا، جاوا را به زبانی بسیار مناسب برای ایجاد اپلیکیشن های مختلف تبدیل کرده است.
اما با وجود تمام این مسائل، جاوا زبان مناسبی برای کارهای سطح پایین نیست زیرا دسترسی مستقیم به سخت افزار ندارد و برای اجرا از ماشین مجازی استفاده می کند.
بنابراین برنامه های نسبتا سنگین تری تولید می کند و نمی تواند برای کارهایی که به بیشترین سطح بهینه سازی نیاز دارند مناسب باشد. کدهای C مستقیماً به زبان ماشین تبدیل می شوند و به همین دلیل می توان از آنها برای نوشتن برنامه های بهینه تری برای کامپیوترها استفاده کرد.
نتیجه گیری
جلسه اول آموزش زبان سی تموم شد و تا حدودی با دلایل اهمیت زبان C آشنا شدیم. هم چنین با مقایسه ای که انجام دادیم الان درک بهتری از جایگاه زبان سی در دنیای امروز داریم و می تونیم دقیق تر بگیم آیا با توجه به اهداف ما زبان سی برای کاری که می خواهیم انجام بدیم گزینه ی مناسبی هست یا خیر.
در جلسه بعدی در مورد انواع دادهها و متغیرها در این زبان صحبت میکنیم. اگه دوس داشتی با یک دوره حرفهای و خیلی تخصصی زبان C را یاد بگیری روی عکس زیر کلیک کن.
درباره احسان عبداللهی
مدیر و موسس میکرولرن | برنامه نویسی پاسخی ظریف به یک نیاز در دنیای واقعی هست.
نوشته های بیشتر از احسان عبداللهیمطالب زیر را حتما مطالعه کنید
دوره های آموزشی مرتبط
آموزش جنگو
آموزش پایتون
آموزش الگوریتم و فلوچارت – تفکر برنامه نویسی
آموزش برنامه نویسی C برای میکروکنترلر
آموزش الکترونیک دیجیتال
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام مهندس عزیز من یه کی پد اسکن کردم برای یک پروژه واز پورت d برای کیپد استفاده کردم در برنامه پروتئوس همهدچی درسته ولی وقتی برد رو بستم در عمل یک ستون کیپد خوانده نمیشه
سلام
به آموزش کیپد مراجعه کنید.
سلام مهندس روش تدریس شما بی نظیره فقط ای کاش همین مطالب رو بصورت pdf هم قرار میدادی تا بشه اون رو پرینت بگیریم یا توی کامپیوتر ذخیره کنیم … اگه این کارو بکنی خیلی ممنونت میشم خدا خیرت بده
سلام جناب عبداللهی گرامی.
مطالب خیلی مفید فایده بود.من به کار تعمیرات بوردهای الکترونیکی علاقمندم،البته جایی خواندم چون دنیا داره به سمت استفاده اینترنتی از وسایل میره برنامه نویسی انواع میکروکنترلرها مسیر مناسبتر و بروزتری برای یادگیری هست.اگه میشه راهنمایی بفرمایید.تشکر
با سلام
لطفا با شماره ای که در پایین سایت هست تماس بگیرید.
دوست عزیز میشه بگید چی شد به این نتیجه رسیدید چون این سوال منم هست
خیلی طبیعیه که با رشد اینترنت تمام وسایل به شبکه وصل بشن و برای وصل شدن به شبکه حداقل یک برد لازمه که این کار را انجام بده. این جا دقیقا جایی هست که میکروکنترلرها پاشون میاد وسط. پس لازمه که شما بتونید برای اون ها برنامه نویسی انجام بدید.