mrbios

گرافيك

آموزش برنامه نويسي از صفر

۲۴ بازديد

آموزش برنامه نويسي از صفر

اگه اين سوال واسه شما پيش اومده نشونه ي اين هست كه شما به دنياي برنامه نويسي علاقه مند شدين يا علاقه مند بودين اما حالا ميخواين به طور جدي در اون قدم بزارين.

خانوم رابين سيلبر (اگه اسمش رو درست گفته باشم :)) كه يكي از اساتيد رشته ي كامپيوتر در دانشگاه واشنتگن هستن يه مقاله در اين زمينه درسايت 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/