یادگیری زبان C – راهی که من رفتم

یادگیری زبان C

برای برنامه نویسی میکروکنترلرهای STM32 می‌توان از زبان‌های سی، سی پلاس پلاس، اسمبلی و … استفاده کرد. که البته در بین این گزینه‌ها، زبان C متداولترین گزینه میان امبددکارهاست. به نظر من، یادگیری زبان C از واجباب کار با میکروکنترلرها است. داشتن مهارت در برنامه‌نویسی با زبان C از اصول و پایه‌های کار، به حساب می‌آید. به طوری که اگر این مهارت را داشته باشید، کار با میکروهای شرکت‌های مختلف برایتان سختی خاصی ندارد و براحتی می‌توانید نوع میکرویی که با آن کار می‌کنید را عوض کنید.  در ادامه می‌خواهم از راهی که خودم در این مسیر طی کردم، بگویم. ‌

گام نخست – منابع یادگیریِ مفاهیم و سینتکس:

در قدم اول این سوال احتمالاً مطرح می‌شود که از چه منبعی شروع به یادگیری کنیم؟

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

گر مرد رهی میان خون باید رفت                     وز پای  فتاده سرنگون  باید  رفت

تو پای به راه در نه و هیچ مپرس                     خود راه بگویدت که چون باید رفت

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

کورس اصول برنامه نویسی C و ++C استاد کیارش بازرگان:

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

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

کتاب برنامه نویسی به زبان C – نوشته جفرنژاد قمی:

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

اگر برای شروع برنامه‌نویسی بیایید با این کتاب به صورت خودآموز شروع کنید، شاید فهم مطالب کمی سخت و خسته کننده به نظر بیاید. اما توصیه می‌کنم در کنار یادگیری یک مبحث از مثلاً ویدیوهای کیارش بازرگان، به مطالب اون بحث در این کتاب هم نگاهی بیندازید. اگر کامل متوجه نشدید نگران نشوید. بر حسب نیازتان در آینده شاید بارها لازم شود باز به این کتاب مراجعه کنید و آن مبحث را بار دیگر مطالعه کنید.

گام بعدی – بعد از یادگیری این منابع چه کار کنیم؟

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

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

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

در این مسئله، قرار بود تا بازی Snake معروف آن زمان را با دات ماتریکس و 4 کلید شبیه سازی کنیم. اعتراف می‌کنم که خیلی دوست داشتم این چالش را حل کنم و به جمع آن معدود افراد استاد بپیوندم 🙂 از همین رو کل تعطیلات سال نو، کوچکترین فرصت آزادم را برای حل این چالش صرف کردم. پایان تعطیلات فوق العاده بود. دیدن حاصل کار بعد از کلی کلنجار رفتن با مسئله بسیار لذت بخش است. من خودم آن مسئله و حل آن را نقطه عطفی در مهارت برنامه‌نویسی‌ام می‌دانم و به همین خاطر اگر قرار باشد توصیه‌ای در این زمینه بکنم. پیشنهاد می‌کنم برای خودتان مسئله تعریف کنید. این مسئله می‌تواند موضوع پروژه کارشناسی یا یک پروژه که دوست دارید آن را بسازید باشد. برای آن وقت بگذارید و آن را تا حد ممکن بهبود بدهید. این کار شاید به سال هم بکشد اما قطعاً بعد از انجام موفقیت آمیز آن با امروزتان بسیار متفاوت خواهید بود. این نکته را هم توجه داشته باشید که سختی این پروژه را با توجه به سطح مهارتتان تعیین کنید. بیش از حد ساده بودن آن کمکی به افزایش مهارت شما نمی‌کند و سختی بیش از حد آن، ممکن است شما را خسته کند. پس ترجیحاً هدفی انتخاب نکنید که بیش از یکسال رسیدن به آن طول بکشد.

پی‌نوشت:

– بازی snake در آن سال‌ها به واسطه گوشی‌های نوکیا(قبل از انقراض توسط گوشی‌های هوشمند) بسیار متداول بود. اگر هیچ تجربه‌ای از این بازی ندارید یا دوست دارید حس آن دوران را دوباره برای خودتان تکرار کنید، کلمه‌ی snake را گوگل کنید. در اولین گزینه(به شکل ) به شما پیشنهاد انجام این بازی به صورت آنلاین می‌دهد.

– در دوره رایگان آموزش میکروکنترلر STM32 قصد دارم با استفاده از همین بازی snake آموزش میکروکنترلر STM32 را جلو ببرم. واقعیتش نمی‌دونم حاصل قراره خوب از کار دربیاد یا نه. اما امیدوارم با نظرات و پیشنهاداتتون مسیر رو بهتر و موثرتر طی کنیم.

15+

10
Leave a Reply

5 Comment threads
5 Thread replies
4 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
  Subscribe  
newest oldest most voted
Notify of
محمد جلوخانی

سلام دوست عزیز
ممنون از توضیحات خوبتون
خیلی هم عالیه و خداپسندانه
احساس میکنم نیتتون خیره پی مطمئن باشید ثمر میده

حداقل دعای خیری پشت سرتون هست
منم برنامه نویسم ولی خیلی دوست دارم این آموزش شما رو دنبال کنم

لطفا با امید ادامه بدید ، مطمئن باشید بعد از پایان شوق سرشار ببینندگان رو خواهید دید

1+

بسیار عالی استاد
پروژه های اسنکی ادامه دار باد *آمین*

0
ali

سلام استاد من از سرچ گ.گل به سایت و نوشته شما رسیدم واقعیتش خیلی خودمانی و تودل برو نوشتید چند وقتی است که میخواهم به زبانهای برنامه نویسی htmlوcssو phpو علاقه مند شدم شاید نمیخواهم یک برنامه نویس حرفه ای بشم اما دوست دارم لا اقل این زبانها را در حد خودم بفهممم واقعا الان چند مدتی است سرگردانم و نمیدانم از کجا شروع کنم ؟افسرده و نا امید شدم از بس فیلم های اموزشی دان کردم واقعا کلافه شدم و در این بین وقتم هم تلف شده و نیجه ای نگرفته ام !!! باور کنید خیلی دلم میخواهد بصورت… Read more »

amirreza

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

0
Mohsen

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

0
عضویت در خبرنامه هفتگیِ دیجیلاگیست

عضویت در خبرنامه هفتگیِ دیجیلاگیست

سلام

دوشنبه هر هفته، یک ایمیل از طرف دیجیلاگیست برای کسانی که آدرس ایمیل خودشون رو ثبت کردن ارسال میشه و توی اون در خصوص آخرین مطالب و اخبار دیجیلاگیست گزارش داده میشه.

اگه شما هم دوست داری این خبرنامه براتون ارسال بشه، تو کادر زیر آدرس ایمیل خودتون رو وارد کنید و دکمه "مشترک شوید!" را بزنید.

اشتراک شما ایجاد شد