من میخواستم وارد حوزه ی هوش مصنوعی در یکی از زیر شاخههای هوش مصنوعی، یادگیری عمیق و یا یادگیری ماشین بشم. تا اونجایی که تحقیق کردم لازم هستش پیشٰنیازهایی داشته باشم مثل آمار و ریاضی اما حالا یه مشکلی که دارم میخواستم قبل از اینکه یادگیری ماشین را یاد بگیرم، از سایرین بپرسم: برای یادگیری برنامهنویسی پایتون از کدوم کورسها استفاده کنم؟
اینم بگم که من تجربهی هیچ گونه برنامهنویسی ندارم. واقییعتش اینکه من زبان برنامهنویسی نمیدونم یعنی هیچ کدوم از زبانهای برنامه نویسی رو بلد نیستم. میدونم مثلا چطوری بکار میرن مثلا میدونم حلقه ی for یا while و… چطوری تعریف میشه یا چطوری تابع تعریف میشه ولی حالا اگر بخوام یک پروژه یا سوالی رو انجام بدهم میمونم چیکار باید بکنم. بعضی از سوالات ساده مثل چاپ اعداد دو رقمی رو انجام میدم ولی وقتی سوال یه خرده سختتر میشه نمیتونم یا سوال حالت واقعی پیدا میکنه نمیتونم اون سوال رو حل کنم یا اصلا براش الگوریتم به ذهنم برسه تفکر الگوریتمی خوبی نداره هر چقدر تمرین کردم بازم نتونستم یاد بگیرم.
برنامه نویسی جدای از زبان برنامه نویسی هست. زبان یه ابزار هستش که انواع مختلف هم داره. برای هر کاری زبان برنامه نویسی مخصوص به اون وجود داره. برای وب جاوااسکریپت، برای اندروید جاوا یا کاتلین، برای همش مصنوعی و یادگیری ماشین زبانهای زیادی هست که پایتون از خوباشون هست.
مهارت برنامه نویسی و حل مسأله جدای از زبان هست و کسی که این مهارت رو کسب کنه با هر زبانی میتونه برنامه نویسی کنه. همه کتاب ها و دوره های برنامه نویسی به هر زبانی که باشه قسمتی از این مهارت ها رو یاد میده. نمیشه گفت که شروع از کجا صحیح تر هستش. از هر جایی شروع کنی کم کم با بقیه مسائل آشنا میشی. بعضی هاشونم پیشرفته تر هستن و ممکنه تا مدت ها میاری بهشون نداشته باشی. مثلاً design pattern ها رو خیلی از برنامه نویسی ها اصلا نمیشناسن ولی سال هاست که دارن برنامه نویسی میکنن (تو همه سطوح).
برنامه نویسی یه عمل منطقی هست و جبری. همه چیزش منطقی و با دلیله. هر چی ذهن منطقی خودت رو تقویت کنی تو برنامه نویسی موفق تر میشی. البته نیازی نیست که بری مستقیماً منطق ریاضی بخونی! همین که برنامه نویسی کنی تقویت میشه. خیلی ها ذاتی و یا بخاطر محیطشون ذهن منطقی پیدا کردن و تو برنامه نویسی راحت هستن. بقیه با تمرین میتونن این مهارت رو تقویت کنن. مثل ریاضی. برای بعضی ها راحت تر هست و بعضی ها باید تلاش و تمرین بیشتری کنن تا موفق بشن توش. ولی هیچ محدودیتی وجود نداره.
تمرین، راز موفقیت در برنامهنویسی
تمرین تمرین تمرین. رمز موفقیت توی هر چیزی تمرین کردنه. Practice makes perfect. میگن برای نویسنده شدن باید قبلش خواننده خوبی باشی. هرچی بیشتر نمونه کد ببینی بیشتر با تکنیک های مختلف آشنا میشی. یه مسأله رو تلاش کن حل کنی. کلی بهش فکر کن. خسته نشو اگه زود به جواب نرسیدی. برنامه نویس های موفق خیلی سمج هستن و تا حل مشکل بیخیال نمیشن. اوایل سخته. کمکم عادت میکنی. همه چیزهای که به ذهنت میرسه رو تست کن. از خرابکاری نترس. همه کدهای که میخونی رو یه بار تایپ کن و اجرا کن (کپی پیست نکن. خیلی بده). بعدی که درست اجرا شد یکم تغییرش بده و باز اجرا کن. همه چیزش رو تغییر بده و خروجی کارت رو ببین. جوری مسلط شو به کد که ذهنی بتونی نتیجه هر تغییری رو حدس بزنی.
چند منبع برای یادگیری پایتون
انگیزه خیلی مهمه. اگه هدف داشته باشی و انگیزه برای رسیدن به هدفت خیلی کمکت میکنه. میتونی یه برنامه کوچیک و کاربردی رو بعنوان هدف قرار بدی و در مسیر یادگیری کم کم تکمیلش کن.
من خودم پایتون رو توی مترو تو مسیر کار خوندم. چون چنتا زبان برنامه نویسی رو بلد بودم برام ساده بود. و توی شرکت هم پروژه پایتون بهم دادن و موقع انجام دادنش تئوریم رو تبدیل به تجربه کردم. کتاب a byte of Python رو خوندم. کتاب بدی نبود ولی خیلی هم خوب نبود. ولی خب برای شروع خوب بود. من همیشه اعتقاد دارم که آدم باید مستندات اصلی یه زبان رو آشنا باشه و بتونه مشکلاتش رو اونجا پیدا کنه. ولی برای شروع سخته. داکیومنت پایتون https://docs.python.org/3/ یه tutorial هم داره. یکم برای مبتدی ها سخته ولی اگه قبلا برنامه نویسی کار کرده باشی خیلی سریع رات میندازه.
فیلم آموزشی سریع ترین و کم تاثیر ترین روش آموزش هست. زود یه مطلب رو آشنا میشی و به همون نسبت زود فراموشش میکنی.
کتاب کند هست و تاثیر بیشتری داره. تمرین کردن در کنار همه این متد ها باعث کند شدن فرایند یادگیری و عمیق شدن یادگیری میشه. هر چی بیشتر تمرین کنی یادگیری عمیق تری پیدا میکنی. سایت stackoverflow.com جواب همه سوالات رو داره. تا مدتها نیاز به پرسیدن سوال نداری. همه سوالات رو پرسیدن! پایتون ۳ رو شروع کن. ۲ رو هم داری اگه ۳ رو بگیری. برعکسش هم غلط نیست.
ممنونم از توضیحاتون مشکل دقیقا اینجاست من تفکر الگوریتمی ندارم یعنی الان بهم بگی برو فلان مسئله ی مثلا 50 امین عدد اول رو بهم بگو یا غیره نمیدونم باید چطوری انجامش بدهم انگار مغزم هنگ میکنه واقعا گیج میشم یا اگر برنامه های کاربردی تر در دنیای واقعی هم بدهن همینطور همانطوری که گفتم میدونم زبان برنامه نویسی مثل پایتون حلقه ی for و while و… چطوری نوشته میشه و چطوری استفاده میشه ولی وقتی اینها را میخوام برای یک مسئله ی ای استفاده کنم نمیتونم چرا چون الگوریتم یا راه حل اون مسئله را نمیتونم پیاده کنم تا الگوریتمش رو بنویسم شاید یه چیزی به ذهنمبیاد ولی نمیتونم بیانش کنم مثلا اگر کسی ازت سوالی بکنه و تو پاسخش رو میدونی ولی نوک زبونت هستش ولی نمیتونی بیانش کنی یا اینکه مطلبی را نمیتونی برای کسی توضیح بدهید من مثلا میدونم مشتق یا انتگرال چیه ولی همین رو بخوام به یک دانش اموز دوم دبستان توضیح بدهم سخته و…چون اون مقدمات و…رو بلد نیست شاید منم اینطوری باشم نمیدونم کلا الان مشکلم اینه نمیتونمراه حلی برای یک مسئله ای پیدا کنم
سجاد گرامی @Gerami نکات خیلی مهمی را مطرح کرد. مهمتریناش به نظر من این است که:
برنامهنویسی یک مهارت است که در طول عمر به دست میآید. هیچ کسی را ندیدم که یک یا دو ساله برنامهنویس شده باشد و بتواند ادعای بزرگی داشته باشد. تمرین، تمرین و تمرین در طول سالیان طولانی از شما یک برنامهنویس میسازد.
راهحل من این است:
اول هدف خود را مشخص کنید.
هدف بزرگی انتخاب نکنید که مایوس نشوید. شما همزمان میخواهید زبان برنامهنویسی، هوش مصنوعی و الگوریتم بیاموزید. هر کدام از اینها یک دنیای بزرگ است که یادگیریاش چند سالی طول میکشد.
فقط به یک منبع یا کتاب بچسبید و آن را تا آخر بخوانید. این را به عنوان یک تمرین در نظر بگیرید که حتما باید کتاب را تا آخر بخوانید حتی اگر سخت و دشوار باشد.
همه ما با چاپ اعداد و پرینت کردن اسم خودمان شروع کردهایم. در طول سالها مهارتهای مختلف را آموختهایم و با ترکیب آنها برنامهنویسی را تا حدی یاد گرفتهایم. در مورد خودم، بعد از این همه سال هنوز نمیتوانم ادعا کنم که از سطح مبتدی فراتر رفتهام.
من برنامهنویسی را شبیه نویسندگی میبینم. همه ما زبان فارسی را میدانیم اما همه ما نویسندههای خوبی نیستیم. این که زبان را بدانیم از ما نویسنده نمیسازد بلکه تمرین و تلاش است که یک نفر را نویسنده بهتری میکند.
پایتون رو که به 2 ساعت میشه یاد گرفت.
پایتون حالتی داره که باید درون نرم افزار هدف یادش بگیری چون کتاب خانه های اون نرم افزار مهمه.
باید بگی پایتون رو برای چه چیزی می خوای یاد بگیری
ممنونم مشکلم دقیقا اینجاست الان نمیدونم پیش نیازها چیه تا به اون هدفم برسم من میخوام یادگیری ماشین رو یاد بگیریم ولی قبلش لازمه برنامه نویسی و الگوریتم فکر میکنم بدونم خوب حالا برنامهنویسی پایتون و الگوریتم شامل چه منابعی هستش یا چه منابعی خوب هستش رو نمیدونم اگر کتابی یا ویدئویی برای قوی شدن الگوریتم یا …میشناسید معرفی کنید