برنامه نویسی را از کجا و چگونه شروع کنیم؟
اگه این سوال واسه شما پیش اومده نشونه ی این هست که شما به دنیای برنامه نویسی علاقه مند شدین یا علاقه مند بودین اما حالا میخواین به طور جدی در اون قدم بزارین.
خانوم رابین سیلبر (اگه اسمش رو درست گفته باشم :)) که یکی از اساتید رشته ی کامپیوتر در دانشگاه واشنتگن هستن یه مقاله در این زمینه درسایت Medium منتشر کردن و عنوان مقاله این هست:
«من میخوام شروع به برنامه نویسی کنم اما نمیدونم باید از کجا شروع کنم»
من خلاصه ای از این مقاله ی بسیار عالی از mrbios رو تو این نوشته میارم و بعضی جاها اگه خودم برداشتی داشته باشم، داخل پرانتز بیان میکنم.
ایشون تو این مقاله اینطور میگن:
هدف این مقاله اینه که یادگیری برنامه نویسی رو واسه هر فردی ممکن کنه.
سوالات متداول
از من به عنوان یه استاد خیلیا این سوالا رو میپرسن:
«من توی برنامه نویسی تازه کارم کدوم زبان برنامه نویسی رو باید یاد بگیرم ؟»
«بازار کار کدوم زبان برنامه نویسی بهتره ؟»
«کدوم زبان برنامه نویسی محبوبیت بیشتری داره؟»
برترین زبان های برنامه نویسی
اگه دنبال یه منبع رسمی واسه معرفی برترین زبان های برنامه نویسی میگردین میتونین لینک زیر رو ببینین :
این لینک واسه اینکه ببینین کدوم زبان برنامه نویسی الان توی دنیا روی بورسه خیلی خوبه ولی اگه شما توی برنامه نویسی تازه کارهستین اصلا پیشنهاد نمی کنم که از روی یه لیست زبان برنامه نویسی رو انتخاب کنین(منظور ایشون اینه که معیارها و نکات دیگه رو باید در نظر بگیرین که در ادامه ی مقاله به اون ها اشاره می کنن).
بر چه اساسی زبان برنامه نویسی رو انتخاب کنیم ؟
دانش رایانه یا bios یه دانش کاملا تجمعی و روی هم انباشته هست و معنی این حرف اینه که هر چیزی که بعد میخواین یاد بگیرین باید مفاهیم قبلی و وابسته ی به اون رو درک کرده باشین و این موضوع جدید موضوع قبلی رو کامل میکنه.
اگه شما توی مدرسه یا دانشگاه سعی کردین که برنامه نویسی یا STEM رویاد بگیرین اما نتونستین، نمیشه به طور قطع بگیم مشکل از شما بوده بلکه یه استاد خوب وقتی میبینه که موضوعات تجمعی هستن باید یه برنامه ریزی دقیق تر واسه درس ها داشته باشه و برنامه ی درسی هم باید کاملا ترتیبش رعایت بشه چرا که موضوعات به همدیگه به شدت وابسته هستن.
بنابراین زبان برنامه نویسی رو بر اساس یه لیست از برترین زبان ها انتخاب نکنین بلکه زبانی رو انتخاب کنین که به مسیر کامل یادگیری اون زبان دسترسی دارین. (من خیلی از دوستان رو میبینم که میگن الان دنیا رفته به سمت یادگیری پایتون و خیلی از تازه کارها رو تشویق می کنن به یادگیری این زبان اما واقعا واسه من قابل درک نیست که آیا لازم نیست از این دوستی که از ما راهنمایی میخواد بپرسیم که چقدر به زبان انگلیسی آشنایی داره ؟ چون واقعا منبع کاملی واسه یادگیری کامل زبان پایتون به زبان فارسی موجود نیست، البته فعلا)
یک مشاوره به شما:
من میخوام که این جمله ای که بالا گفتم واسه شما کاملا جا بیفته و اون این که همه چیز در علوم رایانه تجمعی هستن و تاکیدم روی این جمله به این خاطر هست که بزرگترین اشتباه یه برنامه نویس مشتاق که ممکنه اون رو از ادامه ی مسیر منصرف کنه این هست که فکر کنه واسه ی برنامه نویسی به اندازه ی کافی باهوش نیست در حالی که یادگیری کدنویسی اصلا به این بستگی نداره که شما باهوش هستین یا نه ؟
بله یادگیری برنامه نویسی سخت هست اما سختیش به خاطر باهوش نبودن شما نیست بلکه به خاطر اینه که موضوعات زیادی در برنامه نویسی باید یاد بگیرین.
اولین قاعده mrbios.com که باید اون رو بپذیرین این هست که یه سناریو اتفاق میفته و اون اینه : شما هر از چند گاهی با مطلبی جدید مواجه میشین که هیچ مفهومی ازش ندارین و موفقیت شما کاملا به این بستگی داره که عکس العمل شما در برخورد با این سناریو چیه.
اگه موضوعی که الان دارین یاد میگیرین رو درک نمی کنین نباید سراغ موضوع بعدی برین بلکه همین موضوع رو اونقد تکرار کنین تا براتون قابل درک بشه اگه مطلبی رو یاد نگیرین و پرش بزنین به مطلب بعدی مثل این هست که سقف خونه رو بخواین بزارین بدون اینکه اون خونه دیوار یا پایه ای داشته باشه.
من خودم این وضعیت رو خیلی تجربه کردم گاهی یه ویدیوی آموزشی یا سخنرانی رو باید بارها تکرار کنم تا درکش کنم و شما هم اگه خودتون رو توی کفش من دیدین دلسرد نشین (این قسمت حرف ایشون کنایه هست به اون جمله ای که میگه قبل از اینکه در مورد من قضاوتی کنی کمی با کفش های من قدم بزن و با کفش های من مسیر زندگی رو تا اون جایی که من هستم برو اون وقت میبینی که چقدر قوی بودم، منظور اینکه اگه می بینین کسی امروز موفق هست یعنی یک عمر تلاش و پشتکار وسختی پشت این موفقیت بوده و اگه می بینین نیاز به تکرار مطالب دارین خیلی از افراد دیگه هم مثل شما بودن و سعی کردن و ناامید نشدن:))
اگه شما از یه دوره ی آموزشی یا یه کتاب دارین استفاده می کنین و به موضوعی میرسین که می بینین کامل توضیح داده نشده، از منابع دیگه توی فهم اون موضوع کمک بگیرین.
هدف این هست که شما مطلب رو درک کنین و در مسیر یادگیری نیاز به این دارین که خودتون رو ارزیابی کنین.
پس هر موضوعی رو که یاد میگیرین این سوالات رو از خودتون بپرسین:
- آیا من واقعا این موضوع رو فهمیدم ؟
- آیا اصطلاح جدیدی تو این موضوع وجود داشت ؟ اگه وجود داشت، آیا تعریفی واسه این اصطلاح ارائه شد؟
- آیا مهارت جدیدی پیدا کردم ؟ آیا من میدونم چطوری از این مهارت توی نرم افزار استفاده کنم؟ و این که آیا من توان این رو دارم که تمرین هایی رو با مشکلات مختلف حل کنم تا نشون بدم و اثبات کنم که این مهارت رو کامل فهمیدم؟
- من فردا به یاد میارم که چه چیزی یاد گرفتم ؟ روزای بعدی چطور؟ اگه جواب منفیه، چی کار کنم که بتونم مفاهیم و موضوعات رو به ذهنم بسپارم ؟
آخرین توصیه ی من :
هرگز قدرت حافظه رو دست کم نگیرین.
درسته که تو یادگیری هدف نهایی درک مطلب هست و حفظ کردن مطالب یه رویکرد نامناسبه اما درک مطلب ممکنه زمان بر باشه .
اگه واقعا دنبال فهمیدن مطلب هستین (برای راحتی درک مطلب) اون رو قسمت قسمت کنین و اصطلاحات مهم هر قسمت رو هم (همراه با یادگیری) به ذهن بسپارین.
و اگه دیدین درک موضوع هنوز هم واستون سخت هست، زمان رو از دست ندین و فعلا اون موضوع رو حفظ کنین (بعضی از مطالب هست که فهمشون نیاز به این داره که شخص مقداری در یادگیری پیش بره تا مقداری اطلاعاتش بیش تر بشه و ذهنش واسه فهم اون مطلب آماده بشه اونوقته که میبینه چقدر بهتر میتونه اون مساله رو درک کنه و واسه خود من بارها اتفاق افتاده)
اگه در مورد این که چطوری میتونین راحت ترموضوعات رو حفظ کنین، نیاز به راهنمایی دارین بهتون استفاده از تکنیک کارت مطالعه رو پیشنهاد میدم .
اولین قدم یادگیری مبانی علوم رایانه هست که من مقاله ی «معرفی اصطلاحات علم رایانه» رو در این زمینه نوشتم. (واسه مطالعه ی ترجمه ی این مقاله روی اسمش کلیک کنین