برای یادگیری برنامه نویسی، به یک نقشه راه اصولی و دقیق احتیاج دارید. پایتون در حال حاضر یکی از برترین زبان های برنامه نویسی جهان به حساب می آید که در ایران نیز از بازار کار بسیار مطلوبی برخوردار است. برای یادگیری پایتون ابتدا باید با نقشه راه یادگیری پایتون به طور کامل آشنا شوید و سپس دوره و منابع اموزشی مناسبی را انتخاب کنید. در ادامه نقشه راه یادگیری پایتون را در اختیار شما قرار خواهیم داد.
در اولین مرحله از نقشه راه یادگیری پایتون سطح مبتدی را شروع میکنیم. اگر شما کاملا مبتدی هستید، این سطح نقطه شروع شما خواهد بود. منظور از مبتدی، کسی است که قبلا در پایتون یا زبان برنامه نویسی دیگری کد نویسی نکرده است. اگر با زبان برنامه نویسی متفاوتی آشنایی دارید، باید به سطح ١ بروید.
در این سطح، بیشتر مفاهیمی که شما یاد خواهید گرفت مفاهیم کلی برنامه نویسی هستند. مهارت های اساسی که شما را به عنوان یک برنامه نویس باید داشته باشید. این بدان معنی است که این مفاهیم تنها منحصر به پایتون نیستند؛ بلکه می توانند در سایر زبان های برنامه نویسی نیز کاربرد داشته باشند.
برخی از این مفاهیم اساسی متغیرها، انواع داده ها، عملیات، توابع، شرط ها و حلقه ها هستند.
متغیرها اساسا برای داده های برنامه شما ذخیره می شوند. در واقع، این راهی برای نامگذاری داده ها برای استفاده های بعدی است. به مثال زیر توجه کنید:
در این مثال ، ما یک متغیر msg را تعریف می کنیم که مقدار Hello World را ذخیره می کند! این به ما امکان می دهد تا بعدهاHello World را فقط با استفاده از نام متغیری که این مقدار را ذخیره می کند (به جای نیاز به تایپ کردن Hello World) چاپ کنیم.
در نقشه راه یادگیری پایتون باید به طور کامل با داده ها آشنا شوید. ما از متغیرها به عنوان ذخیره ساز داده ها یاد کردیم. اکنون اجازه دهید در مورد داده ها صحبت کنیم. در پایتون، داده ها انواع مختلفی دارند. به عنوان مثال، در کد قطعه بالا، داده هایی نظیر Hello World نوع خاصی دارد که پایتون (و سایر زبان های برنامه نویسی) آن ها را رشته (string) می نامند.
یک رشته دنباله ای از کاراکترهاست. اما رشته ها تنها نوع داده در پایتون نیستند؛ اعداد صحیح، شماره های شناور، لیست ها و فرهنگ لغات نیز وجود دارد. تا پایان سطح ٠ ، شما باید این نوع داده ها را شناخته و درک کنید که چگونه از آن ها در برنامه خود استفاده کنید.
عملیات در واقع چگونگی دستکاری و تغییر داده ها در برنامه هاست. به عبارت دیگر، برنامه های شما باید تا زمان رسیدن به نتیجه نهایی، روی داده ها کار کرده و داده های بیشتری را تولید کنند. شما نیز روی داده ها کار می کنید.
در پایتون و تمام زبان های برنامه نویسی، حداقل عملیات حساب، مقایسه و منطق وجود دارد.
برای نوشتن هر برنامه، همیشه به توانایی بررسی شرایط و تغییر رفتار برنامه براساس شرایط نیاز خواهید داشت. عبارات شرطی با استفاده از “اگر”، “در غیر این صورت” ، یا موارد دیگر این توانایی را به شما می دهند. در اینجا مثالی از عباراتif-other در پایتون آورده شده است.
یک تابع مجموعه کدی در پایتون است که فقط در هنگام فراخوانی اجرا می شود. می توانید پارامترها را به عنوان ورودی به یک تابع منتقل کنید و تابع می تواند داده ها را به عنوان خروجی بازگرداند. در پایتون با استفاده از کلمه کلیدیdef یک تابع را تعریف می کنند.
در اینجا مثالی از برنامه hello world با استفاده از یک تابع say_hello آورده شده است:
این ها نمونه ای از مفاهیم اساسی بود که باید در این سطح فرا می گرفتید. اما مهم تر از همه، آنچه شما برای تسلط بر این سطح نیاز دارید استفاده از مفاهیم فوق برای حل مسائل است. اگر تنها به خواندن کتاب و گراندن دوره ها بسنده کنید، هرگز برنامه نویس خوبی نخواهید شد.
این سطح نه تنها بیانگر پایه و اساس مفاهیم تسلط بر پایتون، بلکه تسلط بر هر زبان برنامه نویسی دیگری را نیز می باشد. پس از آن به راحتی عبور نکنید.
در این نقشه یادگیری پایتون به سطح دو میرسیم. همه چیز در پایتون یک شی است. شی دقیقا چیست؟
برای نوشتن برنامه های کامپیوتری روش ها، مدل ها یا الگوی مختلفی وجود دارد. یکی از محبوب ترین روش های برنامه نویسی، برنامه نویسی شی گرا(OOP) نامیده می شود. در برنامه نویسی شی گرا، یک شی به یک نمونه خاص از یک کلاس اشاره دارد؛ و کلاس مانند نقشه ای از وضعیت و اقداماتی است که یک شی می تواند انجام دهد. به عنوان مثال، در پایتون، “کلاس فرد” (Person Class) ممکن است چیزی شبیه به این باشد.
کلاس بالا وضعیت و اقدامات هر شخص را توصیف می کند. به عنوان مثال، هر شخص دارای یک نام و سن خواهد بود. این دو زمینه همان چیزی است که وضعیت شی را تعیین می کند. در اصطلاحات OOP ، نام و سن “صفات شی” نامیده می شوند.
برای یادگیری OOP در پایتون، باید چند مرجله را پشت سر بگذارید.
همانطور که قبلا نیز اشاره کردیم، OOP یک الگوی برنامه نویسی است، روشی برای ساختن و طراحی کد شما. مفاهیمOOP منحصر به پایتون نیستند؛ بنابراین مفاهیمی که یمی آموزید به راحتی در هر زبان برنامه نویسی دیگری کاربرد خواهند داشت.
در این مرحله شما باید مفاهیم انتزاعی را که در مرحله قبل آموخته اید بطور خاص در پایتون بکار بگیرید. ویژگی ها و روش های شی های ایجاد شده را بررسی کنید.
این یک مرحله مهم است. در این مرحله نحوه استفاده ازOOP را برای طراحی و ساختن کد خود بیاموزید. در واقع، این مرحله بیشتر یک هنر است تا یک علم. این بدان معنی است که تنها راه برای بهتر شدن، تمرین، تمرین و تمرین بیشتر است. مجددا با استفاده از پایتون، مسائل بیشتری را حل کنید، اما سعی کنید راه حل های خود را به روشی شی گرا ساختار دهید. هرچه بیشتر تمرین کنید، حرفه ای تر خواهید شد.
برای طی کردن این سطح از نقشه راه یادگیری پایتون به نکات زیر توجه داشته باشید. دوره پردازنده های تک هسته ای به سر آمده است. امروزه خواه یک لپ معمولی یا یک سرور پر مصرف برای تجارت خود خریداری می کنید، قطعا پردازنده شما دارای چندین هسته است. و گاهی اوقات، برنامه شما برای اجرای موازی کارها باید از این هسته های چندگانه بهره ببرد. این به طور بالقوه می تواند منجر به افزایش توان عملیاتی، عملکرد بالاتر و واکنش پذیری بهتر شود.
اما اگر عملکرد بالا و افزایش توان عملیاتی مهم باشد، پایتون بهترین زبان برای پشتیبانی از برنامه نویسی موازی نخواهد بود. در این شرایط، به جای آنgolang را پیشنهاد می کنیم.
اما از آنجا که این مقاله در مورد پایتون است، اجازه دهید تمرکز را روی پایتون قرار دهیم. قبل از نوشتن اولین برنامه موازی خود، چندین مفهوم پردازش موازی وجود دارد که ابتدا باید آن ها را بیاموزید. در اینجا برخی از این مفاهیم آورده شده است.
وقتی داده هایی در چندین موضوع به اشتراک گذاشته اید، همگام سازی دسترسی به این منابع مشترک مهم است. انحصار متقابل الگوریتمی است که در برنامهنویسی موازی برای جلوگیری از استفاده همزمان از منابع مشترک مانند متغیرهای سراسری توسط قسمتی از کد رایانه که به آن بخش بحرانی گفته میشود به کار میرود.
قفل یکی از پیاده سازی های انحصار متقابل است. برای درک اینکه قفل چیست، می توانید از منظر مفهومی به آن نگاه کنید. اگر یک رشته می خواهد به یک منبع اشتراکی دسترسی پیدا کند، این رشته باید قبل از دسترسی به آن منبع، قفل ایجاد کند.
و پس از اتمام کار با این منبع، این قفل را آزاد می کند. اگر قفل به دلیل اشغال بودن توسط رشته ای دیگر در دسترس نباشد، رشته باید صبر کند تا قفل آزاد شود. این مفهوم ساده تضمین می کند که حداکثر یک رشته می تواند به یک منبع مشترک دسترسی داشته باشد.
بن بست زمانی اتفاق می افتد که برنامه شما متوقف می شود؛ زیرا برخی از رشته ها به دلیل دست نیافتن به قفل نمی توانند پیشرفت کنند.
به عنوان مثال تصور کنید که رشته الف منتظر است تا رشته ب یک قفل ار آزاد کند؛ در حالی که به طور همزمان رشته ب نیز منتظر است تا رشته الف یک قفل را آزاد کند. در این شرایط وخیم، نه رشته الف و نه رشته ب نمی توانند پیشرفت کنند. این همان بن بست است و بیشتر از آنچه فکر می کنید اتفاق می افتد. اشکال زدایی آن نیز یکی از سخت ترین مشکلات است.
یک وضعیت رقابتی یک نقص درسیستم رایانهای است که به موجب آن نتیجه خروجی بهطور غیرمنتظرهای به زمان بندی و ترتیب رویدادهای دیگر بستگی دارد. این اصطلاح در اصل به حالتی گفته میشود که دوسیگنال با هم رقابت میکنند تا هر یک زودتر بر خروجی تأثیر بگذارند.
فقط بعد از اینکه با مفاهیم بالا آشنا شدید می توانید یاد بگیرید که چگونه برنامه های موازی را در پایتون بنویسید.
اگر بخواهید کدی بنویسید که با سایر دستگاه ها از طریق شبکه ارتباط برقرار کند ، چه می کنید؟
اگر می خواهید این کار را انجام دهید ، پس باید در مورد برنامه نویسی سوکت بیاموزید. می توانید از کتابخانه های پایتون برای نوشتن کد روی یک دستگاه استفاده کنید که با کد در دستگاه دیگر ارتباط برقرار می کند.
برای شروع سه مرحله زیر را دنبال کنید:
در این مرحله از ماژول سوکت پایتون برای نوشتن یک سرور TCP ساده روی یک دستگاه وTCP مشتری روی دیگری استفاده کنید. اطمینان حاصل کنید هر دوکامپیوتر به شبکه خانگی شما متصل هستند. ایده برنامه Echo ساده است. طرف مشتری پیامی را از کاربر می خواند و این پیام را به سرور از طریق شبکه ارسال می کند.
در سمت سرور، هنگامی که این پیام دریافت می شود، سرور همان پیام را به مشتری ارسال می کند. برنامه Echo را مانند برنامه Hello World اما برای برنامه نویسی سوکت در نظر بگیرید. پس از آن می توانید به برنامه های پیچیده تری بروید.
هنگامی که در نوشتن برنامه های TCP روان شدید، می توانید از ماژول درخواست پایتون برای ارسال و دریافت پیام هایHTTP استفاده کنید.
این بسیار مفید است زیرا اکثر سرویس های وب این روزها رابطHTTP API را ارائه می دهند که می توانید با برنامه ارتباط برقرار کنید. به عنوان مثال ، نقشه های فیس بوک ، توییتر و گوگل همه دارای رابط هایHTTP API هستند که کد شما می تواند با آن ها ارتباط برقرار کند.
مانند هر برنامه دیگری، گاهی اوقات هنگام نوشتن برنامه شبکه، اولین تلاش شما موفق نخواهد شد. با این حال، اشکال زدایی در برنامه های شبکه کمی متفاوت از اشکال زدایی در برنامه های معمولی است. به همین دلیل باید خود را به ابزارهای لازم برای عیب یابی آنچه در جریان است، مجهز کنید. در این جا برخی از محبوب ترین ابزارهای شبکه ای که به آن ها نیاز دارید آورده شده است.
ping برای بررسی ارتباط بین دستگاه شما و دستگاه دیگر استفاده می شود.
netstat ابزاری شبکه ای همه کاره است که به شما امکان می دهد اتصالات شبکه را بر روی ورودی و خروجی نظارت کنید.
tcpdump به شما امکان می دهد بسته های واقعی که از طریق هر رابط شبکه وارد رایانه و یا از آن خارج می شوند را، ضبط و تجزیه و تحلیل کنید.
Wireshark یک رابط کاربری گرافیکی خوب است که تقریبا هر کاری کهtcpdump می تواند انجام دهد را انجام می دهد. توصیه می کنیم قبل از کار باtcpdump، باWireshark شروع به کار کنید کنید زیرا کاربرپسند تر است.
دانشی که تاکنون در سطوح قبلی آموخته اید برای درک کاملی عملکرد کامل نیست. به این کد ساده ای که شماره نهم فیبوناچی را محاسبه می کند، نگاه کنید.
کد ساده ای به نظر می رسد. برای محاسبه(fib(100 از این کد استفاده کنید.(SPOILER ALERT: مدت زمان طولانی طول خواهد کشید). اکنون اجازه دهید یک تغییر ساده در کد ایجاد کنیم.
برای حل این مشکل و سریع تر کردن حل آن از برنامه نویسی پویا استفاده کردیم. مهارت هایی که در این سطح فرا می گیرید، برخی از اصلی ترین تفاوت های بین برنامه نویسان متوسط و برنامه نویسان حرفه ای است. شما باید در این مرحلهlinked lists, trees, stacks, queues, graphs, hash tables, recursion, dynamic programming, searching and sorting algorithms را بیاموزید.
پایتون را از کجا یاد بگیرم؟
حالا که به طور کامل با نقشه راه یادگیری پایتون آشنا شدید، باید یک دوره آموزشی معتبر و جامع را برای شروع فرایند یادگیری خود انتخاب کنید. برای یادگیری این زبان برنامه نویسی قدرتمند و کاربردی، ما دوره جامع مقدماتی تا پیشرفته پایتون آکادمی سبزلرن را به شما علاقه مندان به حوزه برنامه نویسی پیشنهاد میکنیم.