ارتباطات و کدنویسی بهترین کار و کامپیوتر بهترین رشته دنیاست.من برنامهنویسی اندروید رو با یک تیم بینظیر در پیام رسان هدهد شروع کردم و در کنارش تو Quera برای دولوپرها مارکتینگ هم انجام میدم :)
آشنایی با ۳ حوزه اصلی کاربرد زبان پایتون
اگر به یادگیری زبان برنامهنویسی پایتون فکر میکنید و یا یادگیری این زبان را به تازگی آغاز کردهاید، ممکن است برایتان این سوال مطرح شده باشد که دقیقاً برای انجام چه کارهایی میتوانم از پایتون استفاده کنم؟
کاربردهای زبان پایتون را میتوان در سه حوزه اصلی زیر خلاصه کرد:
- توسعه نرمافزارهای تحت وب (Web Development)
- علم داده (Data Science) شامل یادگیری ماشین (Machine Learning)، آنالیز دادهها (Data Analysis) و بصریسازی دادهها (Data Visualization)
- اسکریپت نویسی (Scripting)
اما پایتون در هر کدام از این زمینهها به چه شکلی به کار میآید؟ برای پاسخ به این سوال در ادامه به شکل مفصلتر به بررسی هر کدام از این سه زمینه پرداختهایم:
۱. کاربرد پایتون در توسعه نرمافزارهای تحت وب
فریمورکهای وب مبتنی بر Python از جمله جنگو (Django) و فلسک (Flask) در حال حاضر از محبوبترین فریمورکهایی هستند که برای توسعه در سمت سرور (Back-end) مورد استفاده قرار میگیرند.
ولی چرا به فریمورک سمت Back-end نیاز داریم؟ چه تفاوتی بین Django و Flask وجود دارد؟ و کدام محبوبتر است؟
فریمورکها با در اختیار قرار دادن مجموعهای از کتابخانهها و تابعهای آماده، منطق توسعه سمت سرور (Back-End) را راحتتر میکند تا بتوانید با آسودگی بیشتر اپلیکشینی متناسب با نیاز خود توسعه دهید. به عنوان مثال نگاشت URLها، ارتباط با پایگاههای داده (Database) و تولید فایلهای HTML که کاربرها با استفاده از مرورگر بتوانند به آنها دسترسی داشته باشد کارهایی است که با استفاده از فریمورکها میتوان به شکل بهینهتری پیش برد. فریمورک Django و Flask هر دو جزو فریمورکهای محبوب پایتون هستند که در ادامه این مطلب به بررسی دقیقتر تفاوت آنها میپردازیم.
تفاوت بین Django و Flask:
- فریمورک Flask یک فریمورک ساده بوده و از انعطافپذیری بالایی برخوردار است به طوری که امکان کنترل بسیار بالایی را برای دولوپرها فراهم میکند.
- فریمورک Django قابلیتهای آماده بیشتری را در اختیار شما قرار میدهد، مثلاً پنل ادمین، رابط کاربری برای کار با دیتابیس و بهرهمندی از Object Relational Mapping یا به اختصار ORM از جمله این امکانات است.
اما کدام یک از این دو برای یادگیری مناسبتر هستند؟ به شکل خلاصه میتوان گفت که اگر تازه کار هستید، فریمورک Flask به دلیل سروکلهزدن با اجزای کمتر میتواند انتخاب مناسبتری برایتان باشد. علاوه بر این اگر به قابلیت سفارشیسازی زیادی احتیاج دارید نیز این فریمورک میتواند مفید واقع شود. در طرف مقابل، در صورتی که مایل هستید به سرعت کار توسعه را پیش بگیرید، فریمورک Django بسیار سرراستتر است و امکانات آماده بیشتری را در اختیار شما قرار میدهد.
۲. کاربرد پایتون در حوره علم داده
۲.۱. یادگیری ماشین چیست؟
اول ازهمه مروری بر روی مفهوم یادگیری ماشین با استفاده از یک مثال داشته باشیم؛ فرض کنید قرار است برنامهای بنویسید که محتوای عکسهای زیر را به طور خودکار تشخیص دهد.
تصویر زیر را در نظر بگیرید. در این تصویر کامپیوتر باید تشخیص دهد که با یک سگ سروکار داریم:
شاید اگر پیکسلهای روشن قهوهای در تصویر اول وجود داشته باشد، بتواند گفت که محتوای این تصویر یک سگ را نشان میدهد. حالا تصویر زیر را در نظر بگیرید:
شاید بتوان از وجود لبههای تیز و صاف به این نتیجه رسید که یک میز داریم.
با این حال، این نوع رویکرد بسیار سطحی به نظر می رسد! اگر یک سگ سفید بدون موهای قهوهای در تصویر وجود داشته باشد آنوقت چه؟ اگر تصویر فقط قسمتهای دورتری از میز را نشان دهد که قابل تشخیص نباشند چه؟ اینجاست که یادگیری ماشین وارد کار میشود.
اساساً یادگیری ماشین به علم طراحی الگوریتمهایی اشاره دارد که بر اساس یک سری داده ورودی چیزی را یاد گرفته و در ادامه الگویی را روی سایر دادههای دریافتی شناسایی میکند. شما میتوانید ۱۰۰۰ عکس متفاوت از سگ و ۱۰۰۰ عکس متفاوت از میز را به عنوان ورودی الگوریتمهای یادگیری ماشین به آن بدهید تا بعد از آن شناسایی این دو مورد به شکل خودکار صورت بگیرد. دقیقاً مانند اینکه یک کودک در حال یادگیری چیزهای جدید است. یک کودک چه طور یاد میگیرد که سگ چه شکلی است و یا میز چه ویژگیهایی دارد؟ همه به وسیله تعداد زیادی از مثالها و تکرارها است.
برخی الگوریتم های رایج یادگیری ماشین که ممکن است در موردشان شنیده باشید عبارتاند از:
- شبکههای عصبی (Neural Networks)
- یادگیری عمیق (Deep Learning)
- ماشینهای بردار پشتیبانی (Support Vector Machines)
- جنگل تصادفی (Random Forest)
میتوان از هرکدام از این الگوریتمها برای رفع مشکل تشخیص عکس که بالاتر در موردش صحبت کردیم استفاده کنید.
۲.۲. یادگیری ماشین با استفاده از پایتون
از جمله کتابخانهها و فریمورکهای محبوب زبان پایتون برای یادگیری ماشین میتوان به scikit-learn و TensorFlow اشاره کرد. اما تفاوت این دو در چیست؟
- کتابخانه scikit-learn برخی الگوریتمهای محبوب یادگیری ماشین همچون SVM ،Random Forests Gradient Boosting ،K-means و... را اصطلاحاً به صورت درونیشده (Built-in) داراست.
- کتابخانه TensorFlow در طرف مقابل یک کتابخانه سطح پایین (Low-level) بوده که امکان طراحی الگوریتمهای یادگیری ماشینی با قابلیت شخصیسازی بسیار بیشتر را به کاربر ارائه مینماید.
برای ورود به حوز یادگیری ماشین کتابخانه scikit-learn انتخاب مناسبی به نظر میرسد اما در ادامه و با افزایش مهارتهای فردی، میتوان به منظور بهبود عملکرد الگوریتمهای یادگیری ماشین از کتابخانه TensorFlow استفاده کرد.
چه طور میتوان یادگیری ماشین را فرا گرفت؟
برای یادگیری اصول Machine Learning میتوانید از دورههای آنلاین مختلفی بهره بگیرید. البته توجه داشته باشید دانش اولیهای از حساب و جبر خطی برای شروع و فهمیدن مباحث یادگیری ماشین پیشنیاز محسوب میشود. از جمله دورههای موجود برای شروع یادگیری ماشین دوره Stanford و دوره Caltech را میتوان پیشنهاد داد و در ادامه برای تمرین بیشتر میتوان سراغ وبسایت Kaggle رفت.
جا دارد یادآوری کنیم که کوئراکالج نیز برای تابستان ۹۸ روی انتشار دورههای فارسی و تعاملی هوش مصنوعی، دادهکاوی و یادگیری ماشین کار میکند که میتوانید با وارد کردن ایمیل خود در صفحه اصلی کوئراکالج، به محض انتشار از آنها مطلع شوید.
۲.۳. تجزیه و تحلیل دادهها و تصویرسازی چیست؟
بیایید با یک مثال ساده، به بررسی مفهوم این دو مورد بپردازیم:
فروشگاهی را در نظر بگیرید که محصولاتی به صورت آنلاین به فروش میرساند. شما به عنوان یک تحلیلگر داده در این شرکت میتوانید نمودار میلهای زیر را رسم کنید:
از این نمودار میفهمیم که آقایان بیش از ۴۰۰ واحد و خانمها بیش از ۳۵۰ واحد از این محصول در یک روز خاص خریداری کردند. اما علت این تفاوت چه بوده؟ از نمودار فوق به حدسهایی مختلفی میتوان رسید: یکی از این احتمالات این است که این محصول بین آقایان از محبوبیت بیشتری نسبت به خانمها برخوردار بوده. اما شاید هم آقایان به دلیلی نامعلوم در این روز خاص تمایل بیشتری برای خرید این محصول داشتهاند. برای اینکه پاسخی برای فرضیات خود پیدا کنیم باید به سراغ نمودارهای تکمیلی برویم.
به عنوان مثال نمودار تکمیلی میتواند چنین چیزی باشد:
اینبار میتوانیم تعداد خرید این محصول را در طول هفته بررسی کنیم. این نمودار نشان میدهد که تفاوت زیادی در خرید در روزهای مختلف وجود دارد. ولی چیزی که در کل هفته ثابت مانده محبوبیت این محصول در بین آقایان است.
در طرف مقابل ممکن است نمودار کل هفته چنین چیزی باشد:
در این نمودار خانمها در تمام روزهای هفته جز آن روز به خصوص خرید بیشتری از آقایان داشتهاند. اگر نمودار کل هفته چنین چیزی باشد، باید برویم سراغ اینکه چه مشکلی در آن روز خاص وجود داشته که آقایان کمتر خرید کردهاند؟
این یک مثال بسیار سادهسازیشده برای تحلیل دادههاست که میتوانیم کاربرد آن را در دنیای واقعی ببینیم.
۲.۴. تجزیه و تحلیل دادهها در پایتون
اما در پایتون چهطور میتوانیم دادهها را تحلیل کنیم؟ کتابخانه Matplotlib از جمله کتابخانههای رایج زبان پایتون برای آنالیز دادهها است. این کتابخانه به این دو دلیل برای شروع یادگیری پیشنهاد میشود:
- یادگیری آن بسیار آسان است.
- یادگیری آن، پیشنیاز یادگیری کار با کتابخانههای تخصصیتر آنالیز داده (به عنوان مثال کتابخانه Seaborn) خواهد بود.
۳. کاربرد پایتون در سایر حوزهها
۳.۱. استفاده از پایتون برای اسکریپت نویسی
اسکریپت نویسی (Scripting) معمولاً به نوشتن برنامههای کوچکی اشاره دارد که برای اتوماتیک کردن کارهای ساده طراحی شدهاند. کارهایی که تا پیش از این قرار بوده به شکل دستی انجام دهیم اما اتوماتیک کردن آنها صرفهجویی زیادی در وقت توسعهدهندگان میکند. پایتون به دلیل Syntax ساده و پیادهسازی آسانی که دارد برای اسکریپتنویسی نیز بسیار کاربردی محسوب میشود؛ تنها کافی است تابعهایی که به آن نیاز دارید را بدانید...
۳.۲. استفاده از زبان پایتون برای توسعه اپلیکیشنهای نهفته (Embedded)
نرمافزار نهفته یا توکار (Embedded Software) نرمافزاری است که برای کنترل دیوایسها طراحی میشود. (آشنایی بیشتر) از آنجایی که پایتون امکان پیادهسازی اپلیکیشن با استفاده از Raspberry Pi را دارا است در این حوزه نیز میتواند مورد استفاده قرار بگیرد.
۳.۳. بهکارگیری زبان پایتون در حوز توسعه بازی
کتابخانه PyGame یکی از کتابخانههای زبان پایتون به منظور توسعه بازی میباشد. البته قابل ذکر است که PyGame در مقایسه با موتورهای بازیسازی معروفی همچون Unity که بسیار قدرتمند هستند از قابلیتهای پایینتری برخوردار است. به علاوه اینکه موتور بازیسازی Unity قابلیت توسعهی گیم برای سیستمعاملهای مختلفی همچون iOS ،Windows ،Mac و Android را در اختیار توسعهدهندگان بازی قرار میدهد و یکی از دلایل محبوبیت این موتور بازیسازی همین مسئله است.
۳.۴. استفاده از زبان پایتون در حوزه توسعه نرمافزارهای دسکتاپ
در حوزه توسعه اپلیکیشنهای دسکتاپ نیز برای زبان پایتون یک کتابخانه تحت عنوان Tkinter عرضه شده. اما به نظر میرسد در این حوزه قابلیتهای زبانهایی همچون #C و Java و ++C بیشتر است.
جمعبندی
پایتون زبان قدرتمندی است که یادگیری آن بسیار آسان است و در حوزههای بسیار متنوعی میتواند مورد استفاده قرار بگیرد. حوزههایی همچون توسعه وب، هوش مصنوعی، تحلیل داده و اسکریپتنویسی از جمله مهمترین حوزههای توانمندی پایتون محسوب میشوند که در در این مقاله نگاهی به آنها انداختیم.
در نهایت اگر به یادگیری پایتون علاقهمند شدید یادآوری میکنیم که دوره آنلاین تعاملی پایتون پیشرفته کوئراکالج از ۲۲ خرداد ماه در دسترس علاقهمندان است و تا ۲۰ خرداد فرصت دارید تا از تخفیف ویژه پیشثبتنام در این دوره بهرهمند شوید.
ترجمه بر اساس:
"What exactly can you do with Python? Here are Pythons 3 main applications." by YK Sugi @ freeCodeCamp
کوئرامگ مجلهای تخصصی برای توسعهدهندگان است که هر هفته با مطلبهایی در زمینه تکنولوژی، رشد فردی و آینده برنامهنویسی بهروزرسانی میشود. برای اطلاع از آخرین مطلبهای ما، میتوانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید.
مطلبی دیگر از این انتشارات
گزارش اولین سری رویداد Traceway در زمینه هوش مصنوعی و یادگیری ماشین
مطلبی دیگر از این انتشارات
۱۰ ترند هوش مصنوعی در چند سال آینده
مطلبی دیگر از این انتشارات
5 مسئله برنامهنویسی که باید زیر یک ساعت حل کنید!