برنامه نویسی را از کجا شروع کنیم؟
اگه این سوال واسه شما پیش اومده نشونه ی این هست که شما به دنیای برنامه نویسی علاقه مند شدین یا علاقه مند بودین اما حالا میخواین به طور جدی در اون قدم بزارین.
خانوم رابین سیلبر (اگه اسمش رو درست گفته باشم :)) که یکی از اساتید رشته ی کامپیوتر در دانشگاه واشنتگن هستن یه مقاله در این زمینه درسایت Medium منتشر کردن و عنوان مقاله این هست:
«من میخوام شروع به برنامه نویسی کنم اما نمیدونم باید از کجا شروع کنم»
من خلاصه ای از این مقاله ی بسیار عالی از mrbios رو تو این نوشته میارم و بعضی جاها اگه خودم برداشتی داشته باشم، داخل پرانتز بیان میکنم.
ایشون تو این مقاله اینطور میگن:
هدف این مقاله اینه که یادگیری برنامه نویسی رو واسه هر فردی ممکن کنه.
سوالات متداول
از من به عنوان یه استاد خیلیا این سوالا رو میپرسن:
«من توی برنامه نویسی تازه کارم کدوم زبان برنامه نویسی رو باید یاد بگیرم ؟»
«بازار کار کدوم زبان برنامه نویسی بهتره ؟»
«کدوم زبان برنامه نویسی محبوبیت بیشتری داره؟»
برترین زبان های برنامه نویسی
اگه دنبال یه منبع رسمی واسه معرفی برترین زبان های برنامه نویسی میگردین میتونین لینک زیر رو ببینین :
این لینک واسه اینکه ببینین کدوم زبان برنامه نویسی الان توی دنیا روی بورسه خیلی خوبه ولی اگه شما توی برنامه نویسی تازه کارهستین اصلا پیشنهاد نمی کنم که از روی یه لیست زبان برنامه نویسی رو انتخاب کنین(منظور ایشون اینه که معیارها و نکات دیگه رو باید در نظر بگیرین که در ادامه ی مقاله به اون ها اشاره می کنن).
بر چه اساسی زبان برنامه نویسی رو انتخاب کنیم ؟
دانش رایانه یا bios یه دانش کاملا تجمعی و روی هم انباشته هست و معنی این حرف اینه که هر چیزی که بعد میخواین یاد بگیرین باید مفاهیم قبلی و وابسته ی به اون رو درک کرده باشین و این موضوع جدید موضوع قبلی رو کامل میکنه.
اگه شما توی مدرسه یا دانشگاه سعی کردین که برنامه نویسی یا STEM رویاد بگیرین اما نتونستین، نمیشه به طور قطع بگیم مشکل از شما بوده بلکه یه استاد خوب وقتی میبینه که موضوعات تجمعی هستن باید یه برنامه ریزی دقیق تر واسه درس ها داشته باشه و برنامه ی درسی هم باید کاملا ترتیبش رعایت بشه چرا که موضوعات به همدیگه به شدت وابسته هستن.
بنابراین زبان برنامه نویسی رو بر اساس یه لیست از برترین زبان ها انتخاب نکنین بلکه زبانی رو انتخاب کنین که به مسیر کامل یادگیری اون زبان دسترسی دارین. (من خیلی از دوستان رو میبینم که میگن الان دنیا رفته به سمت یادگیری پایتون و خیلی از تازه کارها رو تشویق می کنن به یادگیری این زبان اما واقعا واسه من قابل درک نیست که آیا لازم نیست از این دوستی که از ما راهنمایی میخواد بپرسیم که چقدر به زبان انگلیسی آشنایی داره ؟ چون واقعا منبع کاملی واسه یادگیری کامل زبان پایتون به زبان فارسی موجود نیست، البته فعلا)
یک مشاوره به شما:
من میخوام که این جمله ای که بالا گفتم واسه شما کاملا جا بیفته و اون این که همه چیز در علوم رایانه تجمعی هستن و تاکیدم روی این جمله به این خاطر هست که بزرگترین اشتباه یه برنامه نویس مشتاق که ممکنه اون رو از ادامه ی مسیر منصرف کنه این هست که فکر کنه واسه ی برنامه نویسی به اندازه ی کافی باهوش نیست در حالی که یادگیری کدنویسی اصلا به این بستگی نداره که شما باهوش هستین یا نه ؟
بله یادگیری برنامه نویسی سخت هست اما سختیش به خاطر باهوش نبودن شما نیست بلکه به خاطر اینه که موضوعات زیادی در برنامه نویسی باید یاد بگیرین.
اولین قاعده mrbios.com که باید اون رو بپذیرین این هست که یه سناریو اتفاق میفته و اون اینه : شما هر از چند گاهی با مطلبی جدید مواجه میشین که هیچ مفهومی ازش ندارین و موفقیت شما کاملا به این بستگی داره که عکس العمل شما در برخورد با این سناریو چیه.
اگه موضوعی که الان دارین یاد میگیرین رو درک نمی کنین نباید سراغ موضوع بعدی برین بلکه همین موضوع رو اونقد تکرار کنین تا براتون قابل درک بشه اگه مطلبی رو یاد نگیرین و پرش بزنین به مطلب بعدی مثل این هست که سقف خونه رو بخواین بزارین بدون اینکه اون خونه دیوار یا پایه ای داشته باشه.
من خودم این وضعیت رو خیلی تجربه کردم گاهی یه ویدیوی آموزشی یا سخنرانی رو باید بارها تکرار کنم تا درکش کنم و شما هم اگه خودتون رو توی کفش من دیدین دلسرد نشین (این قسمت حرف ایشون کنایه هست به اون جمله ای که میگه قبل از اینکه در مورد من قضاوتی کنی کمی با کفش های من قدم بزن و با کفش های من مسیر زندگی رو تا اون جایی که من هستم برو اون وقت میبینی که چقدر قوی بودم، منظور اینکه اگه می بینین کسی امروز موفق هست یعنی یک عمر تلاش و پشتکار وسختی پشت این موفقیت بوده و اگه می بینین نیاز به تکرار مطالب دارین خیلی از افراد دیگه هم مثل شما بودن و سعی کردن و ناامید نشدن:))
اگه شما از یه دوره ی آموزشی یا یه کتاب دارین استفاده می کنین و به موضوعی میرسین که می بینین کامل توضیح داده نشده، از منابع دیگه توی فهم اون موضوع کمک بگیرین.
هدف این هست که شما مطلب رو درک کنین و در مسیر یادگیری نیاز به این دارین که خودتون رو ارزیابی کنین.
پس هر موضوعی رو که یاد میگیرین این سوالات رو از خودتون بپرسین:
- آیا من واقعا این موضوع رو فهمیدم ؟
- آیا اصطلاح جدیدی تو این موضوع وجود داشت ؟ اگه وجود داشت، آیا تعریفی واسه این اصطلاح ارائه شد؟
- آیا مهارت جدیدی پیدا کردم ؟ آیا من میدونم چطوری از این مهارت توی نرم افزار استفاده کنم؟ و این که آیا من توان این رو دارم که تمرین هایی رو با مشکلات مختلف حل کنم تا نشون بدم و اثبات کنم که این مهارت رو کامل فهمیدم؟
- من فردا به یاد میارم که چه چیزی یاد گرفتم ؟ روزای بعدی چطور؟ اگه جواب منفیه، چی کار کنم که بتونم مفاهیم و موضوعات رو به ذهنم بسپارم ؟
آخرین توصیه ی من :
هرگز قدرت حافظه رو دست کم نگیرین.
درسته که تو یادگیری هدف نهایی درک مطلب هست و حفظ کردن مطالب یه رویکرد نامناسبه اما درک مطلب ممکنه زمان بر باشه .
اگه واقعا دنبال فهمیدن مطلب هستین (برای راحتی درک مطلب) اون رو قسمت قسمت کنین و اصطلاحات مهم هر قسمت رو هم (همراه با یادگیری) به ذهن بسپارین.
و اگه دیدین درک موضوع هنوز هم واستون سخت هست، زمان رو از دست ندین و فعلا اون موضوع رو حفظ کنین (بعضی از مطالب هست که فهمشون نیاز به این داره که شخص مقداری در یادگیری پیش بره تا مقداری اطلاعاتش بیش تر بشه و ذهنش واسه فهم اون مطلب آماده بشه اونوقته که میبینه چقدر بهتر میتونه اون مساله رو درک کنه و واسه خود من بارها اتفاق افتاده)
اگه در مورد این که چطوری میتونین راحت ترموضوعات رو حفظ کنین، نیاز به راهنمایی دارین بهتون استفاده از تکنیک کارت مطالعه رو پیشنهاد میدم .
اولین قدم یادگیری مبانی علوم رایانه هست که من مقاله ی «معرفی اصطلاحات علم رایانه» رو در این زمینه نوشتم. (واسه مطالعه ی ترجمه ی این مقاله روی اسمش کلیک کنین ?? )
من اون مقاله رو طوری نوشتم که هر کسی بتونه اونو بفهمه حتی افرادی که هیچ پیش زمینه ای در مورد کامپیوتر ندارن.
اغلب مفاهیمی که در مقاله هستن تعریف شدن و در این زمینه شما همین مقاله رو مطالعه کنین کافی هست فقط این که اصطلاحاتش رو به ذهنتون بسپارین و فرض کنین که در مدرسه هستین و میخوان این اصطلاحات رو ازتون امتحان بگیرن.
البته اگه دوست ندارین هم میتونین حفظشون نکنین ولی خب این اصطلاحات باعث میشن که موضوعات بعدی که میخواین یاد بگیرین واستون ساده تر باشن.
نه، برای برنامه نویسی نیازی نیست که شما در ریاضی قوی باشین البته مهارت های ریاضی مفید هست اما ضروری نیست.
اگه شما توی ریاضیات قوی نیستین بهتون پیشنهاد میکنم که منطق گزاره ای رو مطالعه کنین چرا که اصول این منطق بلوکه های برنامه نویسی هستن.(این منطق واقعا واسم جذاب بود این لینک در موردش توضیحات خوبی داده=> منطق گزاره ای)
بعد از این که اصول علم رایانه رو یاد گرفتین آمادگی این رو دارین که یه زبان برنامه نویسی رو شروع کنین.
من بعد از کلی فکر و تلاش یه مسیر رو برای یادگیری همه ی افراد طراحی کردم جدای از این که چه پیش زمینه ای دارن، توی این مسیر من از زبان برنامه نویسی جاوا استفاده کردم چون تجربه ی بیشتری توی این زبان دارم.
جاوا یک زبان بسیار مورد نیازی هست و به عنوان یه زبان شیء گرا طبقه بندی شده و واسه ساختن نرم افزارهای دسکتاپ و وب و تلفن همراه ازش استفاده میشه.
اگه ترجیح میدین که از یه کتاب واسه یادگیری این زبان استفاده کنین من بهتون مطالعه ی کتاب Head First Java رو پیشنهاد میدم.
- الگوریتم و ساختار داده ها
الگوریتم مجموعه دستورات یا قدم هایی هست که واسه انجام یک کار لازمه به طوری که این دستورات کاملا واضح باشن و قابل اجرا و این اجرا هم محدود باشه نه بی نهایت.
ساختار داده ها هم در این مورد هست: راه های سازماندهی اطلاعاتی که میخوایم تو حافظه ذخیره بشه.
به نظر من یکی از جالب ترین نرم افزارها در برنامه نویسی جاوا نرم افزارهای اندروید هست.
اغلب نرم افزارهای اندروید با جاوا نوشته شدن پس وقتی جاوا رو یاد گرفتین آماده ی یادگیری اندروید هستین.
اینجا یک دوره ی ویدیویی رایگان وجود داره که خیلی عالیه : Udacity-Android Development for Beginners. ( این دوره به زبان انگلیسی هست)
اگه شما مایلین که واسه یه کتاب عالی پول خرج کنین من به شدت بهتون این کتاب رو توصیه می کنم: Head First Android Development: A Brain-Friendly Guide.
این کتاب توضیحات مفصل و تصاویر مفیدی داره که شما رو تو درک مفاهیم اساسی کمک میکنه.
در هر فصل یه نرم افزار رو به عنوان مثال پیاده سازی می کنه و همه چیز رو با نمودارها و کلمات توضیح داده تا واسه هر فردی قابل فهم باشه.
منابع مفید
Stack Overflow یک وب سایت که برنامه نویسا بوسیله ی کدهاشون همدیگه رو رایگان کمک میکنن.
اگه گیر کردین و میخواستین سوالی بپرسین قبلش یه جستجو انجام بدین و اگه سوالتون نبود یه حساب کاربری ایجاد کنین و سوالتون روارسال کنین!
کلی سایت های آموزشی هم هست که می تونین ازشون آموزش های مختلف برنامه نویسی رو پیدا کنین.
برای مشاهده مقاله کامل به سایت مستر بایوس مراجعه کنید: http://mrbios.parsiblog.com/