برنامه نویس عزیز سلام!
به صفحه آشنایی با پایتون خوش آمدید.
تا سال 1991، کلمه “پایتون” بیشتر مردم را به فکر مارها می انداخت (پایتون به معنی مار است). اما امروزه دیگر اینطور نیست! کلمه Python دنیا را متحول کرده است و در حال حاضر در دنیای برنامه نویسی محبوبیت زیادی دارد.
پایتون یک زبان برنامه نویسی سطح بالا و شی گرا است که توسط Guido van Rossum توسعه یافته است. این یعنی پایتون بر اساس داده ها است و به راحتی توسط انسان قابل درک است.در ابتدا پایتون فقط برای خودکارسازی مطالب خسته کننده مفید بود، اما خیلی زودی ماهیت اصلی آن آشکار شد. در ادامه بیشتر با پایتون و کاربردهای آن آشنا می شویم.
«پایتون» (Python) یک زبان برنامهنویسی «همه منظوره» (General Purpose) و «سطح بالا» (High-level Programming Language) محسوب میشود که به دلیل سهولت یادگیری، ویژگیهای متعدد، کتابخانههای قدرتمند و موارد گوناگون دیگر به یکی از پر کاربردترین زبانهای برنامهنویسی روز دنیل مبدل شده است.
پایتون در زمینههای گوناگون، از «توسعه وب» (Web Development) گرفته تا «تحلیل داده» (Data Analysis)، «پردازش زبان طبیعی» (Natural Language Processing) و «پردازش تصویر» (Image Processing) کاربرد دارد.
1. یکی از بهترین زبانها است
اگر شما تازه وارد دنیای کدنویسی شدهاید، پایتون انتخاب مناسبی است. پایتون یکی از آسانترین زبانهای برنامهنویسی برای یادگیری است، زیرا کاملا شبیه انگلیسی ساده نوشته و خوانده میشود.
پایتون یکی از رایجترین زبانها برای آموزش کدنویسی به کودکان نیز است. از اسکریپتها و بازیهای کوچک گرفته تا کنترل LEDها و رباتها، کارهای زیادی وجود دارد که میتوانید انجام دهید تا یادگیری را جالب و سرگرمکننده جلوه دهید. و اگر کودک درون شما هنوز فعال باشد، در بزرگسالی هم از این پروژهها لذت خواهید برد!
2. پایتون شدیدا در اینترنت اشیاء (IOT) استفاده میشود.
با ظهور IOT (دستگاههای کممصرف کوچک که به اینترنت متصل هستند و میتوانند هر کد سفارشی را اجرا کنند) پایتون برای بسیاری از دستگاههایی که میتوانید بخرید و آنها را سر همبندی کرده و به هم وصل کنید مناسب است. دستگاههایی مانند Raspberry Pi بسیار کوچک هستند و به بسیاری از حسگرها، نمایشگرها، رباتها و موارد دیگر متصل میشوند و به شما اجازه میدهند برای برقراری ارتباط بین این بخشها کد بنویسید، همچنین از طریق بلوتوث، اینترنت و سایر روشهای ارتباطی دادهها را ارسال و دریافت کنید.
در حالی که همه این دستگاهها از پایتون پشتیبانی نمیکنند، اما بسیاری از آنها پشتیبانی میکنند. شما میتوانید از ورژنهایی با ویژگیهای کامل پایتون استفاده کنید و یا از میکرو پایتون (زیرمجموعهای از پایتون برای دستگاههای سادهتر)، بنابراین همچنان میتوانید از سادگی و بهرهوری پایتون بدون نیاز به قدرت کامل آن از آن استفاده کنید.
3. پایتون در علوم داده و هوش مصنوعی سودمند است.
احتمالا حوزهای که پایتون را بیشتر در آن مییابید، علوم داده، هوش مصنوعی و machine learning (زیرمجموعهای از هوش مصنوعی) است. بدون تنظیمات خاصی، پایتون با کتابخانههای داخلی زیادی همراه است که قابلیتهای زیادی که مورد نیاز دانشمند داده است را فراهم میکند. علاوه بر این، تعداد زیادی کتابخانه قدرتمند و محبوب وجود دارد که میتوانید برای پایتون دانلود کرده و از آنها در پروژههای خود استفاده کنید، مانند NumPy، Pandas، matplotlib، و SciPy برای ریاضیات، دستکاری داده، تجسم داده و موارد دیگر.
همچنین نمیتوان این موضوع را دست کم گرفت که سهولت استفاده از پایتون در این زمینه مهم است. به عنوان یک دانشمند داده، احتمالا شما دورههای برنامهنویسی را نگذراندهاید، بنابراین این واقعیت که پایتون توانایی انجام محاسبات پیشرفته را با سهولت نسبی برای شما فراهم میکند، واقعا جالب است. هر چه سریعتر بتوانید از فرضیات به تحلیل دادهها برسید، بهتر است.
زبان دیگری که عموما با علم داده در ارتباط است R است. با این حال مطابق شاخص TIOBE که در بالا ذکر شد، محبوبیت R در حال کاهش است، و حتی بعد از 3 سال حضور در فهرست 20 زبان برتر TIOBE، امسال از لیست 20 مورد برتر خارج شده است. بنابراین اگر میخواهید بین این دو مورد یکی را انتخاب کنید، این روند نشان میدهد که پایتون گزینه قویتری است.
4. پایتون برای توسعه وب همهکاره است.
همانطور که تاکنون مشاهده کردید پایتون فوقالعاده همهکاره و قدرتمند است و این امر به وب نیز گسترش مییابد.
هنگام راهاندازی یک وبسرور، ممکن است به Node.js، .NET، یا جاوا فکر کنید، اما پایتون یکی دیگر از رقیبان عالی است. اگرچه برخی از عملکردهای سایر زبانها و فریمورکها را ندارد، اما به راحتی میتوان در پایتون چیزی را سریع اجرا کرد و همچنان بسیار پر بازده باشد. تجربه توسعهدهنده میتواند از کاهش عملکرد مهمتر باشد، و مقیاسپذیری سیستم شما برای عملکرد با سرویسهای ابری مانند AWS، Azure، Google Cloud و غیره آسانتر میشود.
وقتی با فریمورک همراه باشد، دو رقیب اصلی وجود دارد: Flask و Django. Flask فریمورکی است که به شما امکان نحوه برخورد با طراحی سیستمتان را میدهد، که برای توسعهدهندگان باتجربه بسیار مناسب است. Django فریمورکی است که ساختاری کاملا سفت و سخت را فراهم میکند، که برای مبتدیان و نمونهسازی در مواردی که میخواهید چیزی را خیلی سریع اجرا کنید بسیار مناسب است.
زمینههایی که پایتون در آنها استفاده میشود، به شرح زیرند:
- علم داده / یادگیری ماشین
- توسعه اپلیکیشن موبایل
- برنامه نویسی وب
- ساخت بازی
- پردازش و تجزیه-تحلیل داده
- سختافزار / حسگرها / رباتها
- اسکریپتهایی برای خودکارسازی برخی از وظایف
مرحله اول: یادگیری پایتون از صفر
یادگیری پایتون از صفر زمانی انجام میشود که فرد در زمینه برنامه نویسی کاملاً مبتدی و تازهکار باشد. یک فرد کاملاً تازهکار به فردی گفته میشود که تا کنون هرگز با پایتون یا هیچ زبان برنامه نویسی دیگری کدنویسی نکرده باشد. اما در صورتی که فردی پیش از این با زبان برنامه نویسی دیگری کار کرده است، میتواند از این مرحله عبور کند و به مرحله بعدی برود.
در مرحله یادگیری پایتون از صفر ، اکثر مفاهیمی که باید فرا گرفته شوند، مفاهیم کلی و عمومی برنامه نویسی هستند؛ مفاهیمی بنیادی که جای پای افراد را در حوزه برنامه نویسی محکم میکنند. یعنی این مفاهیم تنها مختص پایتون نیستند و میتوان آنها را به سایر زبانهای برنامه نویسی هم بسط داد. در واقع بسیاری از زبانهای برنامه نویسی شبیه به هم هستند و کسب دانش در خصوص اینکه چه مواردی بین زبانهای برنامه نویسی مختلف مشترک هستند (و چه چیزیهایی مشترک نیستند) در آینده میتواند به جابهجایی و روی آوردن به زبانهای برنامه نویسی دیگر کمک کند.
گام دوم: یادگیری برنامه نویسی شی گرا با پایتون
همه چیز در پایتون یک شی (Object) به حساب میآید. ممکن است افراد در خصوص شیگرایی و مفهوم شی چیزهایی شنیده باشند.
گام سوم: یادگیری برنامه نویسی همزمان و موازی با پایتون
دوران پردازندههای تک هستهای به سر آمده است. این روزها چه یک لپتاپ معمولی و چه یک سرور رده بالا خریداری شود، پردازنده اکثر دستگاهها چندهستهای است. گاهی نیاز است تا برنامه نوشته شده از این تعداد هسته در پردازنده استفاده کند تا برخی فرآیندها به صورت موازی اجرا شوند. این امکان به احتمال زیاد منجر به توان عملیاتی بیشتر، عملکرد بهتر و پاسخدهی بالاتری میشود.
تنها پس از آنکه آشنایی و مهارت کافی در مورد مفاهیم مورد بحث حاصل شود میتوان نحوه کدنویسی و ایجاد برنامههای همزمان یا موازی با پایتون را فرا گرفت. پیش از هر چیز، ابتدا باید یاد گرفت که مفهوم پردازش چندگانه (Multiprocessing) چه تفاوتی با چندنخی (Multithreading) دارد. لازم به ذکر است که این مفاهیم با نخها و پردازهها از منظر سیستم عامل هیچ ارتباطی ندارند. برای درک این تفاوت میان پردازش چندگانه و چندنخی از منظر پایتون، باید با مفهوم «قفل مفسر سراسری» (Global Interpreter Lock | GIL) آشنا شد. همچنین باید مباحث نخبندی (Threading)، صف (Queue) و پردازش چندگانه ماژولهای پایتون را نیز آموخت.
گام چهارم: یادگیری برنامه نویسی سوکت با پایتون
تا این مرحله آشنایی کافی با پایتون به دست آمده و فرد میتواند به راحتی با پایتون کدهایی را بنویسد که تنها روی یک ماشین (سیستم) قابل اجرا هستند. اما اگر نیاز به نوشتن کدهایی وجود داشته باشد که با یک ماشین دیگر روی شبکه ارتباط برقرار میکنند چطور؟ اگر قصد انجام چنین کاری وجود داشته باشد، آنوقت باید برنامه نویسی سوکت با پایتون را آموخت. برای این منظور، پیشنهاد میشود ابتدا به یادگیری مفاهیم بنیادی شبکههای کامپیوتری پرداخته شود. پس از یادگیری مفاهیم اساسی شبکههای کامپیوتری، میتوان از کتابخانههای پایتون برای کدنویسی روی ماشینی استفاده کرد که با کدهای ماشین دیگر ارتباط برقرار میکند.
گام پنجم: یادگیری ساختمان دادهها و الگوریتمها در پایتون
رسیدن به این مرحله بسیار جای امیدواری دارد. چرا که تا این سطح مهارتهایی به دست آمدهاند که فرد را قادر میسازند تا مسائل گوناگونی را حل کند. اگرچه یک کاستی وجود دارد؛ هنوز مهارت کافی برای نوشتن کدهای بهینه کسب نشده است. منظور از کدهای بهینه یا Efficient چیست؟ برای مثال تا این مرحله هنوز مهارت ویرایش کدها برای اجرای سریعتر آنها به دست نیامده است. حتی توانایی تجزیه و تحلیل علت کندی اجرای کدها هم تا این مرحله از مسیر یادگیری پایتون وجود ندارد. البته این عدم توانایی امری طبیعی است و جای نگرانی نیست. چرا که دانش کسب شده در مراحل قبلی تا به اینجا برای داشتن درک درستی از چیستی عملکرد برنامه و چگونگی ویرایش کدهای فعلی برای اجرای سریعتر آنها کافی نیست.
مهارتهایی که در این مرحله باید فرا گرفته شوند، برخی از متمایز کنندههای کلیدی میان برنامه نویس متوسط و برنامه نویس خبره به حساب میآیند. در گام پنجم مسیر یادگیری پایتون ، مهارتهای زیر باید آموخته شوند:
- لیست پیوندی
- درخت
- پشته
- صف
- گراف
- جدول Hash
- بازگشت
- برنامه ریزی پویا
- الگوریتمهای جستجو و مرتبسازی
- سایر مباحث الگوریتمها
گام ششم: آمادهسازی برای شرکت در مصاحبه کاری برنامه نویس پایتون
در این مرحله از مسیر یادگیری پایتون ، مهارتها و تجربه کافی برای ارسال درخواست مصاحبه موقعیت شغلی مهندس نرم افزار در هر یک از شرکتهای مورد نظر حوزه فناوری در سراسر دنیا به دست آمده است. در یک مصاحبه برنامه نویسی معمول، مهارتهای حل مسئله، مهارتهای ارتباطی، دانش ساختمان دادهها و الگوریتمها مورد ارزیابی قرار میگیرند. همچنین، سطح مهارت و میزان کارآمدی کارجو در ترجمه افکار و ایدهها به کدهای پایتون نیز سنجیده میشود.
بهترین راه برای موفقیت در مصاحبههای برنامه نویسی، اختصاص دادن زمان کافی برای کسب آمادگی در مصاحبه است. هر چه فرد آمادهتر باشد، مصاحبه موفقیتآمیزتر و احتمال پذیرفته شدن در موقعیت شغلی دلخواه بسیار بیشتر خواهد بود. پس از شروع فعالیت شغلی، فرآیند یادگیری در حین کار نیز ادامه خواهد داشت و تجربه بسیار ارزشمند و وسیعی حاصل خواهد شد. اینجاست که آخرین گام در مسیر یادگیری پایتون آغاز میشود.