آیا واقعا با وجود زبان‌های پیشرفته، نیازی به یادگیری زبان C هست؟

  زبان C جز زبان‌هایی است که یادگیری‌اش مشکل است؛ اگر این‌گونه است، پس چرا باید زحمت یادگیری آن را به خودمان بدهیم؟ با نگاه کردن به شاخص TIOBE، که هر ماه زبان‌های برنامه‌نویسی محبوب را معرفی می‌کند، می‌توان به این نکته پی برد که زبان‌های گو، دارت و پرل روند صعودی داشته‌اند و این در حالی است که زبان برنامه‌نویسی C در این جدول نزول شدیدی داشته است و در سال‌های اخیر محبوبیت خود را تا حد زیادی از دست داده است! در دنیای امروز، اپلیکیشن‌های موبایل و نرم‌افزارهای تحت وب بسیار پرطرفدار هستند و افراد برای توسعهٔ آن‌ها ترجیح می‌دهند به جای استفاده از زبانی قدیمی مانند C که تقریبا از رده خارج نیز محسوب می‌شود، از زبانی استفاده کنند که هم یادگیری‌اش راحت‌تر باشد و هم دیباگ کردنش. آیا این بدان معنی است که زبان C دیگر ارزش یادگیری ندارد؟ جواب این سوال آنقدرها هم ساده نیست اما برای یافتن پاسخ به این سوال، در ادامه با سکان آکادمی همراه باشید. 

پیش از هرچیز، بهتر است با خواندن مقالهٔ آیا می‌دانستید وجه تسمیهٔ زبان برنامه‌نویسی C چیست؟ ببینیم که چرا سومین حرف الفبای انگلیسی به عنوان نام این زبان انتخاب شده است!

عرضه و تقاضای زبان‌های برنامه‌نویسی
زبان سی در صنعت آی‌تی هنوز هم پرطرفدار است اما این روند ممکن است در آینده‌ای نزدیک تغییر کند؛‌ به گفتهٔ مارک درایور، مدیر تحقیقات شرکت Gartner، زبان‌های سی و سی‌پلاس‌پلاس هنوز هم جزو زبان‌های مورد استفاده در برنامه‌نویسی System Level هستند و می‌توانید با داشتن این دو زبان در رزومهٔ خود، متفاوت بودن خود را به رخ کارفرمایان و سایر برنامه‌نویسان بکشید، اما حتما به خاطر داشته باشید که در آینده‌ای نه چندان دور، جای خود را به زبان‌های دیگری همچون Go و یا D خواهند داد (در مقالهٔ چرا زبان برنامه‌نویسی C در حال از دست دادن محبوبیت‌اش است؟ با تفصیل بیشتری در مورد دلایل از دست رفتن محبوبیت این زبان صحبت کرده‌ایم.)

به گفتهٔ آقای درایور، در حال حاضر هیچ تقاضایی از سوی مشتریان برای زبان‌های سی وسی‌پلاس‌پلاس وجود ندارد و زبان جاوا چیزی است که اکثر مشتریان به دنبال آن هستند (برای یادگیری این زبان، به دوره‌ٔ آموزش رایگان زبان جاوا در سکان آکادمی مراجعه نمایید.) شاید دلیل چنین رویکردی این باشد که با استفاده از آن‌ها، امکان بهره بردن از فیچرهای مدرن وجود ندارد و این در حالی است که زبان‌هایی همچون جاوا، سی‌شارپ و غیره، این کمبود را تا حد زیادی جبران کرده‌اند. وی همچنین ادعا می‌کند که در حیطهٔ IoT یا همان «اینترنت اشیاء» برای زبان سی و برنامه نویسانی که به این زبان مسلط هستند تقاضای رو به رشدی وجود دارد. با رونق گرفتن IoT نیاز به زبان‌هایی که بیشترین نزدیکی را با سخت‌افزار دارند بیشتر می‌شود و این  نیاز مرتفع نمی‌گردد مگر با استفاده از زبان C. برای اپلیکیشن‌های قدیمی، شمردن بیت‌ها چندان اهمیتی نداشت اما زمانی که پای اینترنت اشیاء به میان می‌آید، داستان متفاوت است و زبان سی بازهم خودی نشان خواهد داد.

با C یا بدون C، مساله این است!
در بررسی زبان‌های برنامه‌نویسی، یادگیری زبان سی را شبیه به زبان لاتین می‌دانند؛ ممکن است شما زبان لاتین را یاد بگیرید و هیچ‌گاه از آن استفاده نکنید، اما بدون شک این زبان به شما کمک می‌کند تا در فراگیری زبان‌های دیگر به مشکلات کمتری بربخورید؛ یک مدرس زبان جاوااسکریپت به نام آزریل فاستن بر این باور است که این زبان بدون شک راه را برای یادگیری‌های بعدی هموار می‌کند. او می‌گوید:

همون‌طور که یک مدرک در تاریخ یا هنر میتونه شما رو قوی‌تر کنه و روزی به کارتون بیاد، زبان سی رو هم باید یاد گرفت چون یه روزی در یه جایی می‌تونه به شما کمک کنه!

به گفتهٔ آقای فاستن، این زبان لزوما پیش‌نیازی برای سایر زبان‌ها محسوب نمی‌شود؛ استدلال فاستن این است که از آنجایی که زبان‌های دیگر باگ‌های خود را تا حد زیادی رفع کرده‌اند و جلوی خطای شما را تا حدود 80 درصد گرفته‌اند، قدرت تفکر الگوریتمی و حل مساله را نیز از شما می‌گیرند، درحالی‌که زبان سی این فرصت را برای یادگیرنده فراهم کرده است که با رفع باگ‌ها، ذهنی قوی‌تر برای خود بسازد.

افرادی که بدون داشتن علم کافی در زمینهٔ برنامه‌نویسی علاقه‌مند به وارد شدن به این حیطه هستند، همواره به دنبال راهی برای فرار از زبان سی می‌باشند بنابراین در تلاش هستند تا در زمینهٔ وب یا تولید اپلیکیشن موبایل فعالیت کنند در‌حالی‌که زبان سی بیشتر برای اپلیکیشن‌های پیشرفته‌ای مانند داده‌پردازها و یا کرنل‌ها و درایورهای سیستم‌عامل‌ها مورد استفاده قرار می‌گیرد.

یکی از افرادی که معتقد است زبان سی بدون شک در تبدیل او به یک برنامه‌نویس حرفه‌ای نقش بزرگی بازی کرده است، میگول موالز است؛ وی مهندس نرم‌افزار است و تا‌کنون در شرکت‌های معتبری چون At&T،HPE و Cisco موقعیت‌های شغلی خوبی داشته است. او بر این باور است که دانستن سی به طور غیرمستقیم او را به برنامه‌نویس بهتری تبدیل کرده است چراکه حتی اگر از سی استفاده نکنید، دانستن این‌که یک سیستم چگونه کار می‌کند و یا به چه شکل داده‌ها را ذخیره می‌کند، می‌تواند کمک بزرگی برای شما باشد.

اما چگونه؟ شما نسبت به متغیرهای تولید شده متعهدتر می‌شوید، سعی می‌کنید از بهترین الگوریتم‌های موجود استفاده کنید و به کارگیری کامندهای مناسب را در راس کار خود قرار می‌دهید. بدون تردید زبان‌های برنامه‌نویسی جدید فیچرهای مدرن و کارآمدتری همراه خود دارند اما آنچه شما را نسبت داشتن کدهای تمیزتر و باکیفیت‌تر، متعهدتر می‌کند زیان سی است.

با این تفاسیر به نظر می‌رسد که یادگیری زبان سی هنوز هم ارزش یادگیری دارد اما فقط به عنوان یک زبان جانبی. ریموند فان، مهندس کامپیوتر شرکت Zebra Technologies، کسی است که باور دارد بهتر است زبان مورد نظر خود را یاد بگیرید و سپس برای بهره بردن از ذهن الگوریتمیک و درک عمیق‌تر، یادگیری سی را در اولویت دوم خود قرار دهیم.

آقای فان هم شباهت زبان سی به لاتین را تایید می‌کند و بر این باور است که یادگیری این زبان به مدیریت حافظهٔ ما کمک می‌کند اما اگر زیاد از حد در این زبان غرق شوید، ممکن است شما را گیج کند! به اعتقاد وی، با این‌که دانستن این زبان می‌تواند نقطهٔ قوت یک رزومهٔ کاری باشد، اما لزوما منجر به استخدام شما نخواهد (برای آشنایی با تکنیک‌های نوشتن یک رزومهٔ خود به عنوان یک برنامه‌نویس، به مقالهٔ چگونه یک روزمهٔ خوب به عنوان برنامه‌نویس یا توسعه‌دهنده بنویسیم؟ مراجعه نمایید.)

در عین حال فراموش نکنیم که این زبان دستاورهای ارزشمندی را به صنعت فناوری دنیا تقدیم کرده است به طوری‌که در مقالهٔ اگر زبان برنامه‌نویسی C نبود، چه بلایی سر دنیای نرم‌افزار می‌آمد! توضیح داده‌ایم که اگر این زبان نبود، صنعت آی‌تی با چه چالش‌هایی مواجه می‌شد.

حال نوبت به نظرات شما‌ می‌رسد؛ آیا با زبان C آشنایی دارید و اگر این‌طور است، آیا با این جمله که «یادگیری زبان C ذهن شما را الگوریتمیک می‌کند» موافقید؟ نظرات و دیدگاه‌های خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.

What is the point of learning C?

0


فرنوش فهیم

تحصیلات آکادمیک‌ام رو در مقطع کارشناسی در دانشگاه علامه طباطبائی در رشتهٔ ادبیات انگلیسی شروع کردم و سپس در همون دانشگاه مقطع کارشناسی ارشد رو در رشتهٔ آموزش زبان انگلیسی به اتمام رسوندم. اگرچه ترجمه بیش از اون‌که علم باشه، یک مهارته، اما ما در سکان آکادمی به فرایند ترجمه به شکلی علمی نگاه می‌کنیم. من با تسلط به ترجمه از انگلیسی به فارسی و همچنین از فارسی به انگلیسی، عهده‌دار ترجمه و ویرایش بخشی از مقالات وبلاگ سکان آکادمی هستم.






  • علی در تاریخ: 1395/12/18

    خیلی ممنون از مقاله خوبتون
    زبان سی و سی پلاس پلاس باعث میشه دید سطح پایین خیلی خوبی بدست بیاری
    یادمه توی یه مقاله خوندم که اگه اشتباه نکنم ریچارد استالمن گفته بود زبان سی پلاس خوب نیست
    من نظری ندارم در باره این حرف و فکر میکنم درست هم باشه
    ولی اقای استالمن منظورشون این بود که برای تولید نرم افزار زبان مناسبی نیست
    ولی به نظر من برای یادگیری خیلی خوبه چون
    خیلی از مفاهیم سطح پایینی که در زبان سی یاد گرفته میشه در زبان سی پلاس پلاس مرور میشه و همچنین با عمق بیشتری فهمیده میشه
    مثلا شما وقتی توی سی پلاس پلاس operator overloading
    رو یادمیگیرین باعث میشه خیلی عمیق تر مفهوم اشاره گر ها رو یاد بگیرین

    شاید خیلی ها این سوال براشون پیش بیاد که دید سطح پایین به چه کاری میاد
    در جواب باید بگم دید سطح پایین باعث مشه \\\"دقت\\\" خیلی زیاد بشه
    دقت خیلی مهمه چون دقت باعث میشه سریع تر کد بزنین و باگ کمتری هم تولید کنین
    هر چقدر وقت بزارین برای دقت روی کدی که مینویسین
    چند برابر اون وقت توی دیباگ کردن صرفه جویی میشه

    در نتیجه باعث میشه زمان توسعه نرم افزار از نصف هم شاید کمتر بشه

    در آخر به دوستانی که میخوان زبان سی رو یاد بگیرن
    چه کسانی که اصلا برنامه نویسی بلد نیستن و چه کسانی که بلدن
    فیلم برنامه نویسی مقدماتی دکتر کیارش بازرگان از دانشگاه صنعتی اصفهان رو پیدا کنن و نگاه کنن (فرمت swf کیفیت بهتری از فرمت mp4 داره)
    دکتر کیارش بازرگان استاد دانشگاه مینسوتای امریکا هستن و طبق نظر سنجی اینترنتی یکی از بهترین استاد های اون دانشگاه بودن
    چند بار در دانشگاه صنعتی اصفهان مدعو بودن

    موفق باشین
    در پناه حق

    فرنوش فهیم در تاریخ: 1395/12/18

    با سلام به شما کاربر گرامی ،
    ممنون از کامنت خوب و به جای شما.

  • saeedx4 در تاریخ: 1395/12/20

    زبان سی به خاطر اینکه در سطح سیستمی کار می کنه باعث میشه که برنامه نویس دید بهتری از کامپیوتر داشته باشه و خوب به طبع وقتی با سی برنامه می نویسی یادگیری زبانهای دیگه مثل آب خوردن میشه.
    اما در مورد اینکه زبان سی باعث تقویت ذهن الگوریتمیک میشه یا نه شک دارم. ممکنه به خاطر اینکه همه کارها در سی به صورت دستی انجام میشه برنامه نویس رو مجبور کنه که کد بهتر تمیزتر و سریع تری بنویسه. از طرف دیگه به خاطر سریع شدن سخت افزار شاید همیشه این موضوع اهمیت نداشته باشه.
    الان بیشتر دانشمندان از زبان پایتون برای پیاده سازی الگوریتم های خودشون استفاده می کنن چون الگوریتم ربطی به زبان برنامه نویسی نداره و هیچ دانشمند شیمی یا نجوم حوصله ور رفتن با سینتکس پیچیده ی سی نداره.
    در نتیجه سی باعث دید عمیق از کامپیوتر میشه که به شما کمک می کنه کد بهتر و سریعتری بنویسید اما الگوریتم ربطی به زبان برنامه نویسی نداره و به شخص برای پیاده سازی یک الگوریتم ترجیح می دم از پایتون استفاده کنم.

    فرنوش فهیم در تاریخ: 1395/12/20

    با سلام خدمت شما کاربر گرامی،
    ممنون از اینکه زمان گذاشتید مطالعه کردید و تجربیات خود را با ما به اشتراک گذاشتید.

  • ubuntulove در تاریخ: 1395/12/23

    در جواب آقا علی که ایشون گفتن \\\"ریچارد استالمن گفته بود زبان سی پلاس خوب نیست\\\"
    اینو آقای لینوس توروالدز گفته بود نه آقای استالمن و اینکه آقای توروالدز نگفته بود که زبان سی پلاس خوب نیست گفته بودن زبان سی پلاس جایگزین مناسبی واسه سی نیست ، بد ترجمه کرده بودن
    در جواب مقاله باید بگم که پیش از golang نیازی به یادگیری سی برای کار های سیستمی و ... احساس میشد ولی با ظهور زبان گو لنگ من فکر نمی کنم که استفاده از زبان سی کار عاقلانه ای باشه
    الان توزیع های گنو/لینوکسی کم کم دارن به سمت golang میان
    به نظرم روزی میرسه که چند درصد هسته لینوکس رو گو به جای سی تشکیل بده

  • فرنوش فهیم در تاریخ: 1395/12/27

    با سلام ،
    ممنون از شما کاربر گرامی بابت اینکه زمان گذاشتین، هم برای مطالعه و هم برای نوشتن نظر و دادن اطلاعات.

  • FONQRI در تاریخ: 1396/01/10

    با سلام خدمت شما و همه ی دوستان گرامی
    نظر من به عنوان کسی که تجربه برنامه نویسی با زبان های مختلفی رو دارم اینه که
    1 - سی با سی پلاس پلاس کاملا فرق میکنه مخصوصا از سی پلاس پلاس مدرن به بعد یعنی از سال 2011 که خط کلی این دو زبان از هم جدا شد (هر گردی گردو نیست ) هر زبانی که سی اولشه صرفا با سی یکی نیست
    2 - هنوز هم توی دنیای واقعی سی پلاس پلاس اولین انتخاب برای نوشتن برنامه‌های ارزشمند هست اگر از برنامه های بزرگ دنیا که توی گذشته توسعه پیدا کردند بخوام بگم میشه به فتوشاپ، مایا ، ide معروف مایکروسافت یا همون visual studio ، مایکروسافت افیس و موتور های بازی سازی مثل انریل ، کرای انجین ، و موتوی های اختصاصی بازی سازی شرکت هایی مثل راک استار و کلی نرم افزار دیگه که روزانه ازشون استفاده میکنید اشاره کنم اگرم بخوام نرم افزار های تازه توسعه داده شده باهاش رو نام ببرم بازم زیادند نمونه بارزش تلگرام نسخه دسکتاپ با همین زبان و فریم ورک کیوت توسعه داده شده پس این زبان هنوز کاربرد گسترده ای داره و در آینده با رشد iot به دلیل نیاز به پرفورمنس بالاتر باز هم رو به رشد حرکت خواهد کرد .
    3 - دوستانی که فکر میکنند سی پلاس پلاس فقط هون برنامه های کنسولی باهاش نوشته میشه باید بگم دانش شما از سی پلاس پلاس مثل قطره ای در برابر اقیانوسه با فریم‌ورک‌های قدرتمندی که برای سی پلاس پلاس توسعه داده شده الان امکان گرفتن خروجی از نرم افزار های نوشته شده با این زبان برای تمامی دیوایس های موبایل وجود داره یکی از شاخص ترین این فریم ورک ها هم کیوت هست میتونید در موردش بخونید و اما در مورد استفاده از این زبان برای توسعه برنامه های موبایل بهتره به نظر سنجی استیک اور فلو رجوع کنید که توی زبان های برنامه نویسی برای موبایل سی پلاس پلاس رتبه 9 ام رو داره با توجه به شروع دیر هنگامش به نظر من رتبه ی خوبیه و با پیشرفت این فریم ورک های کراس پلتفرم توی حوزه‌ی موبایل روز به روز این رتبه بهتر میشه
    در کل اگر دنبال زبانی میگردید که بشه باهاش هم روی سرور کد زد هم روی دسکتاپ هم روی موبایل و هم روی دیوایس‌های امبدد بهترین انتخاب سی پلاس پلاس هست
    اگر میخواید یک برنامه ی بزرگ و با قابلیت رشد و نگهداری طولانی مدت توسعه بدید بهترین انتخاب سی پلاس پلاسه
    اگرم میخواید برنامه ای بنویسید که از حد اکثر توان سخت افزارتون استفاده کنه و در کنارش دید شی گرایی عالی رو براتون فراهم کنه بازم بهترین گزینه سی پلاس پلاس هست
    اگر دنبال یک زبان میگردید که کتابخانه های اوپن سورس موجودش راه انداز کارتون توی مشکلات سنگین باشه بازم بهترین گزینه سی پلاس پلاسه
    نکته :: من به برنامه نویس با زبان های
    1 - c++
    2 - python
    3 - php
    4 - javascript
    5 - qml
    6 - java (تا حدودی)
    7 - c# (تا حدودی)
    تسلط دارم پس به هیچ وجه فکر نکنید این حرف هایی که زدم حرف های یه بچه دبیرستانیه که میخواد از تنها چیزی که بلده دفاع کنه یه سری از این حرف‌ها از تجربیات خودمه و مطالعاتی که دارم یه سری هم ترجبیات دوستان برنامه نویسم که بزرگان برنامه نویسی ایران هستند و یه سری ها هم از تجربیات اساتید غیر ایرانی که در بعضی موارد سابقه‌ی برنامه نویسیشون به 20 سال هم میرسه و پستی و بلندی های این حوزه رو به خوبی میشناسند
    اگر مخالفطی با حرفای من توی استفاده روز افزون سی پلاس پلاس دارید به یک سوال من جواب بدید
    چرا شرکت‌های بزرگی مثل گوگل و مایکروسافت تمامی برنامه‌های مهم و سوداورشون رو با این زبان توسعه میدند ؟(گوگل برای اجرای تمامی الگوریتم های موتور جستجوش که بزرگترین دستاوردش هست از این زبان استفاده میکنه با یه گوگل کردن میتونید خیلی راحت به این قضیه پی ببرید و مایکروسافت هم که تمامی محصولاتش با همین زبانه علیرقم این که زبان سیشارپ رو خودش توسعه داده هنوز ازش به عنووان زبان بیس هیچ محصول تجاری استفاده نمیکنه)

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