🔸به نام آنکه وبلاگم هم از اوست🔸
درود بر شما که بزرگ می اندیشید
اول از هر چیز باید پیش نیازهای شروع یادگیری برنامه نویسی را خدمتتان لیست کنم :
1- . 🤣 بله! پیش نیاز منفی یکم !! ( به یاد قانون صفرم ترمودینامیک که مثل همین مورد ما در دقیقه 90 به فکر مرحوم سعدی کارنو افتاد😂) 👈👈 دانلود و نصب VPN Psiphon یا نصب VPN extension
0. فراهم بودن امکانات خارجی اعم از لپ تاپ، دسکتاپ، گوشی هوشمند و صد البته دسترسی به اینترنت پر سرعت
1.برخورداری از هوش منطقی و ریاضیاتی بالا برای درک مفاهیم ریاضی مقدماتی ولی پرکاربرد در برنامه نویسی مانند ( دنباله، تابع، رابطه، بردار، ماتریس، مفاهیم پرکاربرد در نظریه اعداد مانند ب.م.م و ک.م.م و مبناها و گراف ها و ...) و نیز آشنایی کلی با مفاهیم بنیادین علوم کامپیوتر مانند ( مفهوم دیتا و اطلاعات، ساختار کلی کامپیوترها، انواع حافظه و ساز و کار آنها، مفهوم سیستم و شبکه و انواع روش های ارتباطی میان کامپیوترها، انواع شبکه و..) که همه این ها را میتوانید به راحتی از کتاب انفورماتیک سوم ریاضی فرا بگیرید
🔸 نکته مهم 👈🏻 علاوه بر مفاهیم فوق که یادگیری آنها الزامی و پیش نیاز برنامه نویسی است، آشنایی با مفاهیم ویژه برنامه نویسی ( مانند API ، Frame work ، Infrastructure و Script) را نیز در حین یادگیری برنامه نویسی مقدماتی در برنامه روزانه خود قرار دهید
2. تسلط کافی بر مهارت های شنیداری و درک متن به زبان انگلیسی
3. تعیین هدف شخصی از یادگیری برنامه نویسی :
یعنی اینکه به کدام حوزه های برنامه نویسی علاقه مند هستید ؟
صنعت گیم ، امنیت ، وب ، اپلیکیشن ( نرم افزارهای کاربردی) ، ساخت زبان های برنامه نویسی ، طراحی سخت افزار و ...
همانطور که ملاحظه میفرمایید، در سطح تخصصی، برنامه نویس بودن به تنهایی معنا ندارد مگر اینکه دقیقن تعیین کنید در چه حوزه ای مهارت دارید
برای مثال ما امروزه در اعلامیه های استخدامی شرکت های بزرگ دنیا عباراتی نظیر مهندسی جاوا یا مهندسی سی پلاس پلاس یا حتی رشته هایی نظیر مهندسی وب را میبینیم که مدرکی است بر اهمیت بسیار زیاد تعیین هدف در برنامه نویسی و تاکید بر تخصص گرایی
4. انتخاب سه شاه کلید در برنامه نویسی :
حالا وقت این رسیده است که بنابر هدف خودتان، یک زبان برنامه نویسی، سیستم عامل و محیط توسعه مناسب برای شروع انتخاب کنید :
خب بنده بنابر تجارب علمی و تخصصی ام در زمینه آموزش برنامه نویسی هرگز در این مورد نسخه یکسانی برای همه کارآموزانم نمیپیچم پس باید کارآموزان راب ه چند دسته تقسیم کنیم تا سه
دسته اول : فارغ التحصیلان رشته ریاضی-فیزیک که قصد دارند عیار علمی و تجربی خود را بالا ببرند برای ورورد تخصصی و تمام وقت به حوزه های علمی-تجاری مهندسی کامپیوتر
پیشنهاد شخصی به این دسته :
زبان برنامه نویسی >> ++C تا در نهایت بتوانید هر Console Application را به شیوه Object Oriented پیاده کنید و بعدا هم اگر به کاربرد های این زبان علاقمند شدید میتوانید به دنبال API های دیگر مانند Win32 , MFC و ... بروید
بعد از اینکه کاملن به سبک Object Oriented مسلط شدید و به صنعت گیم هم می خواهید وارد شوید توصیه اکید من شرکت در دوره های آموزش کار با موتور UE4 است
لینک آموزش ساخت گیم با زبان ++C به کمک موتور Unreal Engine 4
چرا ++C ؟
دلیل اول : این زبان شما را وادار می کند که آموزش مفاهیم بنیادین علوم کامپیوتر مانند ( متغیرها آرایه ها و فایل و .. ) را جدی بگیرید
دلیل دوم : در این زبان محدودیتی برای شما از جهت ورود به حوزه های صنعتی وجود ندارد چون وسعت کاربرد های این زبان بسیار سرسام آور است برای مثال
از ساخت گیم هایی نظیر GTA , Battle Field ،AssassinsCreed گرفته تا طراحی سیستم عامل ویندوز و یا سیستم کنترل ترافیک خطوط هوایی، سیستم AirPack خودروها و ...
دلیل سوم : افزایش استقبال شرکت های بزرگی همانند EA , Ubisoft , Sony و ... از مهندسان ++C به دلیل کم یاب بودن این دسته از متخصصیت در حوزه مهندسی نرم افزار
دلیل چهارم : مادر بودن زبان ++C
بدین معنی که شما با کسب تخصص در این زبان میتوانید زبان های دیگر را توسعه دهید و آنها ار بهبود بخشید تا در نهایت یک زبان برنامه نویسی شخصی سازی شده و بهینه تری خلق کنید که برای موضوع خاصی بسیار عالی تر از خود ++C عمل کند
برای مثال زبان مشهور Python تا حدود بسیار زیادی از زبان ++C قدرت گرفته تا متخصصین هوش مصنوعی بتوانند برنامه های داده کاوی را با سرعت بیشتری توسعه دهند
دلیل پنجم : آسان شدن یادگیری سایر زبان ها
دلیل ششم : سرعت بسیار زیاد کمپایلر ++C در اجرا کردن برنامه ها
ببینید بین توسعه برنامه و اجرای برنامه خیلی تفاوت وجود دارد،
توسعه برنامه یعنی فرایند نوشتن سورس کد ها به دست برنامه نویس
ولی اجرای برنامه توسط برنامه نویس انجام نمیشود بلکه بستگی دارد به قدرت برنامه های سیستمی که مخصوص آن زبان است ا
مثلا سرعت اجرای برنامه ها در پایتون کم تر از سی پلاس پلاس است ولی چون امکانات زبان پایتون برای نوشتن دستورات بیشتر است بنابراین از فشار فکری برنامه نویس در حین توسعه برنامه اش می کاهد و این گونه سرعت برنامه نویس در کارش افزایش می یابد
سیستم عامل>> اگر به حد کافی با سیستم لینوکس آشنایی دارید که بتوانید بدون گزینه AutoRepair(همان گزینه ای که موقع خراب کاری شما در ویندوز بدون مزد ومنت به دادتان میرسد 🤣) از پس رفع مشکلات فنی کامپیوترتان بر بیایید پس بدون فوت وقت بروید سر نسخه Ubuntu از لینوکس و بعدا به تدریج با مطالعه کتاب های پی دی اف رایگان ( که البته بیشترشان به زبان انگلیسی اند) سعی کنید به کارکردن با نسخه RedHat عادت کنیدیا ترجیحا حتی مدرک اش را هم با آموزش های آنلاین کسب کنید تا در استخدام از رقبا پیشی بگیرید در غیر اینصورت با ویندوز شروع کنید
لینک ثبت نام در آموزش های مهندسی Linux Red Hat
محیط توسعه >> برای کسانی که با نصب کمپایلر و ... آشنایی چندانی ندارند Visual Studio Community را توصیه میکنیم که رایگان میتوانید از طریق لینک زیر دانلود کنید
لینک دانلود : دانلود رایگان Visual Studio Community
بعد از اینکه توانستید آموزش های لازم رو ببینید و حسابی راه بیفتید می توانید از Visual Studio Code استفاده کنید که امکانات بسیار بیش تری نسبت به Visual Studio Community دارد
لینک دانلود : دانلود رایگان Visual Studio Code
چون بنده خودم با دسته اول سر و کار بیشتری دارم،برای سایر دسته از کارآموزان که که وجه اشتراکشان فقط کسب درآمد از طریق برنامه نویسی است و دلیل علاقه شان هم اخبار و حرف و حدیث های جامعه در این مورد است پیشنهاد میکنم روش گام به گام بنده را دنبال کنند
گام صفرم : ساخت آکانت در وب سایت رسمی سکند لایف و نصب Second life viewer
تذکر : برای خرید و فروش در دنیای سکندلایف نیاز به یک حساب پولی آنلاین یا کارت اعتباری بین المللی دارید که بنا بر تجربه شخصی ، خرید کارت فیزیکی MasterCard مخصوص ارز US Dollar در دراز مدت بهینه تر است ولی از حساب هایی مثل Skrill یا PayPall هم میتوانید بهره بگیرید ولی این حساب ها از هر تراکنش شما درصدی بابت حق سرویس دهی کسر میکنند که با توجه به نرخ ارزهای خارجی اصلن مقرون به صرفه نیست بویژه اگر فعالیت مالی تان کلان و یا حتی متداول باشد
برای افتتاح حساب مالی آنلاین یا خرید Master Card هم مطمئن ترین گزینه وب سایت ایرانیکارت، است
گام صفرم : مهیا کردن تمامی پیش نیازهای قبلی برای یادگیری مقدمات زبان برنامه نویسی ++C تا حد تسلط نسبی بر به کارگیری مفاهیم شی گرایی در برنامه های Console
گام دوم: خواندن مقاله آیا Second life یک گیم است از همین وبلاگ در موضوع بازی و گیم
گام سوم : مراجعه به لینک های کتاب های ذیل برای کسب اطلاعات حیاتی برای آشنایی با دنیای مجازی Second Life
1.کتاب اول برای آشنایی با امکانات، فرصت ها و تهدیدها در سکندلایف :
لینک دانلود اولین کتاب
2. دومین کتاب برای آشنایی با نحوه ارتباط اصولی با سایر کاربران این دنیای مجازی :
لینک دانلود دومین کتاب
گام چهارم : آموختن اسکریپت نویسی به زبان Linden
راه اصولی بنابر تجربه شخصی من اینه که ابتدا به بهترین کانال آموزش لیندن اسکریپت مراجعه کنید تا با تمرین هر روز یک ویدیئو ( یادداشت برداری از ویدئوها در یک دفتر مخصوص توصیه میشود) آهسته و پیوسته با محیط اسکریپت نویسی در سکندلایف آشنا شوید و بعد از آن برای آموزش تخصصی تر به کتاب ذیل مراجعه کنید.
لینک دریافت کتاب : برای دریافت رایگان کتاب Script your world اینجا کلیک بفرمایید
گام پنجم : آمار گرفتن از محبوب ترین کالاهای فروشگاه سکنذلایف برای تعیین تخصصتان در اسکریپت نویسی لیندن و جهت دهی به مهارتتان و صد البته افزایش بازده فروش ، البته در انجمن گفت و گوی ساکنان سکدلایف هم میتوانید پرس و جو کنید و جواب سوالات و اشکالاتتان را بیابید و حتی با کاربرانی که نیاز دارند ایده شان را در سکند لایف بسازند ولی با زبان اسکریپت لیندن آشنایی ندارند مذاکره تجاری کنید تا در عوض دریافت لیندن دلار ( $L) ( با ساخت لوگو ، برند و بازاریابی برای خودتان میتوانید تا 50K لیندن پیشنهاد دستمزد بدهید یعنی چیزی حدود 166 دلار ! ) پروژه آنها را انجام دهید
گام ششم : بازاریابی و بازاریابی
این گام که اصولا باید پس از اولین موفقیت تجاری تان مورد توجه تان قرار گیرد شامل موارد ذیل باید باشد:
1. نمایش سازه هایتان در شبکه های اجتماعی
2. آپلود ویدیئو های با کیفیت آموزش این زبان در سرویس های اشتراک ویدیئو
3. ساخت اپلیکیشنی که با نمایش سازه هایتان
1. اولین تجربه خود بنده از برنامه نویسی برمیگردد به یک توفیق اجباری. زمانی که نخستین بار در درس علوم رایانه و انفورماتیک سال سوم با زبان دلنشین و البته کودکانه ویژوال بیسیک آشنا شدم. در همان زمان بود که شور و شوق شدیدی نسبت به این مهارت در من شکل گرفت. و منظور از شور و شوق همان لذت ناشی از مشاهده خروجی های درست پی در پی برنامه هایی است که بعد از یک عالمه درگیری با الکوریتم ها و ... بدست می آمدند.
نتیجه1 : همواره از اندیشیدن طولانی مدت روی مسائل سنگین استقبال کنید وگرنه قطعا به نفعتان است که دور و بر برنامه نویسی حرفه ای نروید.
2. بعد از سال سوم به خاطر درگیری شبانه روزی با مساله کنکور و آزمون های آزمایشی (که به حمدالله منجر به کسب رتبه 600 در زبان تخصصی و 2700 ریاضی در منطقه دو شد) تا یکی دو سال شدیدا از ان مهارت دوست داشتنی فاصله گرفتم و این سبب شد که کلا از اول شروع کنم و نهایتا قربانی مافیای آموزش های خصوصی بی کیفیت شوم.
نتیجه2 : همواره نسبت به مهارتی که علاقه قلبی و الهامی( علاقه الهامی یعنی این که فقط به واسطه تجربه کردن یک مهارت شیفته اش شده اید ونه به خاطر توصیه افراد و تبلیغات و عناصر خارجی) به آن دارید جدیت و استمرار به خرج دهید و اجازه ندهید که سایر صداهای بیرونی این فریاد درونی تان را خفه کند حتی اگر آن صداها مربوط به تحصیلات عالی و کنکور تجربی و پزشکی و ... باشد. ( یاد جمله ابرمرد همیشگی تکنولوژی افتادم (مرحوم زنده یاد استیو جابز که در دانشگاه استنفورد فرمود : "Dont let the noise of others opinins drowm your own inner voice" شما چطور ؟ )
3. عجله نکنید! در همین پاراگراف سوم خدمتتان می رسانم که چه آموزش هایی بی کیفیت و کدام یک از آنها ارزشمند تر است. در واقع چون بخش اعظم کار یک برنامه نویس حرفه ای با نرم افزارهای کمکی مانند IDE ها و ویرایشگرهای متنی و ... است لذا 100 درصد در طی مراحل آموزش مقدماتی هم باید به طور کامل در معرض این امکانات قرار بگیرد، لذا اگر آموزشگاهی را برای شروع بادگیری مد نظر دارید؛ حتما موارد ذیل👇🏻👇🏻👇🏻👇🏻 را در آن آموزشگاه به صورت حضوری بررسی نمایید تا خدایی ناکرده مانند من، سرمایه و از همه مهم تر زمان تان در آموزشگاه های غیرمعتبر به هدر نرود
👇🏻👇🏻👇🏻👇🏻
1. حتما آموزشگاه به ویدیو پروژوکتور، کامپیوتر ویژه کارآموز( که محیط های برنامه نویسی از قبل در آنها نصب شده) (اگرچه پیشنهاد من به همراه داشتن لپ تاپ خودتان در کلاس ها است) و میز و صندلی مناسب (به طوریکه با نشستن پشت میز آموزشگاه بتوانید کاملا پرده ی نمایش پروژوکتور را مشاهده کنین و جا برای نت برداری باشد)
2. آموزشگاه به هیچ وجه نباید وجهی بابت هزینه تهییه نرم افزار های مورد نیاز اخذ نماید، زیرا می توانید تمام این نرم افزارها را از سایت های نظیر سافت 98 ، یاس دانلود و صدها سایت معتبر دیگر دانلود نمایید. (توصیه می شود تا از حجم شبانه استفاده شود)
3. آموزشگاه باید زیر نظر سازمان فنی حرفه ای کشور باشد تا پس از اتمام دوره، به راحتی شما را در آزمون های فنی حرفه ای مربوطه ثبت نام نماید
4. مدرس دوره از روش های نوین آموزشی همچون ارایه با پاورپوینت، نمایش برخی اینفو موشن ها، معرفی سایت و ویدیو های آموزشی کوتاه و ... برای تفهیم هر چه بهتر مفاهیم برنامه نویسی بهره ببرد
5. هر جلسه، مدرس باید اطلاعات و مهارتتان را ارزیابی و پایش مستمر به عمل آورد و این طور نباشد که بدون مرور جلسات گذشته، درجا شروع به تدریس مبحث جدید کند
6. تایم بندی استاندارد هر جلسه آموزش باید به ترتیب زیر باشد باشد
⏰ 15 دقیقه (اول جلسه) 👈🏻 مرور جلسات گذشته
⏰ 1 ساعت (وسط جلسه) 👈🏻 تدریس مبحث جدید
⏰ 15 دقیقه (آخر جلسه) 👈🏻 جمع بندی
7. بعد از اتمام دوره، خود آموزشگاه شما را با آزمون پایانی ارزیابی نماید و در صورت کسب نمره قابل قبول از نظر خود آموزشگاه، مزایایی همچون دعوت به همکاری، تخفیف شهریه، معرفی به شرکت ها(در دوره های پیشرفته) و ... در نظر بگیرد
8. آزمون پایانی دوره که توسط خود آموزشگاه برگزار می شود بهتر است به صورت پروژه محور و مربوط به زمینه مورد علاقه شما باشد که برای این کار، قبل از آزمون باید آموزشگاه یک پرسشنامه در اختیار هر کارآموز قرار دهد تا اگر مثلا شما به زمبنه برنامه نویسی گیم ها علاقه مندید، آزمون های پایان دوره مثلا نوشتن برنامه بازی دووز، مار و پله، Tick Tack Toe یا حتی شطرنج( در دوره های پیشرفته) باشد در مدت زمان محدود ( معمولا همان 1 و نیم ساعت)
9. حتما امکان پشتیبانی آموزشی مدرس دوره را بررسی نمایید تا هنگام اشکال در حین تمرین در منزل بتوانید به شخص ایشان دسترسی داشته تا اشکالات خود را به سریع ترین و موثق ترین شیوه ممکن رفع نمایید
10. آموزشگاه حتما باید دارای وب سایتی مجهز به پنل کاربری برای شما کارآموزان باشد تا ارسال و دریافت پروژه های برنامه نویسی تان به سهولت قابل انجام باشد و همواره با مدرس دوره به روز باشید و علاوه بر آن، سایت یا پیج آموزشگاه باید کاربران را در مورد تکنولوژی های جدید برنامه نویسی به روز نگه دارد و تولید محتوایش مفید باشد( مثلا شما را در جریان انتشار زبان های برنامه نویسی جدید، نیاز های بازار، frame work ها ، infra structure های جدید، بگذارد)
11. آخرین مورد هم که شاید مهم ترین است از این قرار است که مدرس دوره های برنامه نویسی حتما آقا باشد، و علت این توصیه هم یک اصل بسیار بدیهی در Neuroscience است که می گوید : مهارت های تدریس (همچون مهارت تعامل سازنده، فصاحت، بلاغت، مدیریت زمان و عواطف و ...) مربوط به نیم کره چپ مغز می باشد و عموما نیم کره چپ آقایان، بهتر از خانم ها عمل می کند
توصیه ای بسیار حیاتی 👈🏻 اگر آموزشگاه مورد نظرتان حتی یک مورد از موارد بالا را نداشت، بدانید که هدف آن مجموعه، آموزش نیست، بلکه هدفشان صرفا گردش مالی است و می خواهند با صرف کمترین هزینه و زمان، سود بیشتری کسب کنند و برایشان مهم نیست که شما بعد از اتمام دوره چه مهارتی فرا گرفتید و نسبت به اوایل دوره چه تفاوتی کرده اید. به شما اطمینان می دهم که اگر بررسی کامل نکنید، حتما در دام یکی از این آموزشگاه ها خواهید افتاد و ...
نتیجه3 : همواره برای فراگیری هر نوع مهارت مربوط به کامپیوتر اولویت های انتخاب منبعتان به این صورت باشد :
اولویت اول > دوره های آموزشی آنلاین در سایت های معروف همچون
Coursera
U demy
U tube😂
Educba 👈👈 برای مبتدیان دوره های زبان ++C این سایت پیشنهاد میشه
اولویت دوم >> کتاب های معتبر در زمینه آموزش برنامه نویسی :
من خودم از کتاب های برنامه نویسی به عنوان مرجع آموزش 0 تا 100 یک موضوع استفاده نمیکردم جون کتاب ها نمیتوانند تجربیات عملی را به خوبی در زمان کم منتقل کنند و در عوض پس از اتمام هر session از ویدیو های آموزشی Educba ( برای مثال پس از اتمام مبحث ++Functions in C ) ، تمرینات(منظور همه سوالات ، پرسش ها ، مسائل و پروژه های برنامه نویسی) و محتواهای جدید مربوط به مبحث Function ها را به ترتیب از کتاب های زیر بررسی میکردم ( دقیقن مثل یک دانشمند کامپیوتر که برای حل مسائلش به انوا منابع در دسترس مراجعه می کند ولی در نهایت خودش تصمیم میگیرد که چه الگوریتم و متدی را انتخاب کند)
1. کتاب فوق العاده خودآموز و معتبر Deitel & Deitel
2. کتاب سی پلاس پلاس هلبرت شیلتز
(ضعف اصلی این کتاب آوردن دستورات زبان سی است که البته ایرادی ندارد شما به عنوان تمرین آن ها را به ++C تفسیر و برنامه نویسی کنید)
3. کتاب پ سی پلاس پلاس پیتر پرینز
( کتاب پیتر پرینز برای کارآموزانی که به دنبال پروژه های چالش برانگیزند بسیار گزینه ی مناسبی است)
اولویت سوم >>> شرکت در مسابقات و رقابت های آنلاین
1. سایت فوق العاده هکر رنک
این وب سایت علاوه بر اینکه امکاناتی نظیر چالش های روزانه و مسابقات برنامه نویسی را برایتان فراهم میکند حتی بر اساس رتبه تان، فرصتهای شغلی مناسب را نیز به شما پیشنهاد می دهد.
🏁 نهایتا میرسیم به تنها خواسته همیشگی ما از شما که بزرگ می اندیشید 👇
اگر فکر می کنید این مقاله برای عزیزانی مفید است، پس به دست آنها هم برسانید و با ارایه نظرات و اعلام موافقت⬆ یا مخالفت⬇، ما را در ارتقای هرچه بیشتر کیفیت محتواها یاری فرمایید🙏🏻
بزرگ اندیش و سربلند باشید 🏆
🖊 ساسان استک