در خدمت شما هستیم با مقاله برنامه نویسی پایتون برای انجام چه کارهایی خوب و چه کارهایی بد است؟ از وب سایت آموزش برنامه نویسی سورس باران. این سوالی بوده که بارها و بارها با تکرار زیاد از ما پرسیده شده.. اگر از دوستانی هستید که بدنبال پاسخ این سوال هستند، لطفا ما رو تا انتهای این مقاله همراهی نمایید.
برنامه نویسی پایتون برای انجام چه کارهایی خوب و چه کارهایی بد است؟
حتما بخوانید : آموزش برنامه نویسی برای صفر کیلومترها
برنامه نویسی پایتون در توسعه برنامههای کاربردی تحت وب
چند وقتی است، چهارچوبهای وب مبتنی بر پایتون همچون Django و Flask با اقبال عمومی روبهرو شدهاند. آگهیهای شغلی مرتبط با برنامه نویسی وب و پایتون که تاکید خاصی روی Django و Flask دارند، گواه این مطلب هستند. چهارچوبهای تحت وب به شما کمک میکنند در پایتون کدهای سمت سرور (کدهای بکاند) بنویسید. کدهایی که سمت سرور اجرا میشوند، با کدهایی که سمت کلاینت (کدهای فرانتاند) و روی دستگاههایی شبیه دستگاهها و مرورگرها اجرا میشوند، تفاوت دارند.
اگر با تفاوت کدهای فرانتاند و بکاند آشنا نیستید، پینوشت این مقاله را مطالعه کنید. (پرونده ویژه تکنیکهای طراحی وب شماره ۲۰۲ ماهنامه شبکه نیز اطلاعات جامعتری در اختیارتان قرار میدهد.)
چرا ما به یک چهارچوب وب نیاز داریم؟
یک چهارچوب تحت وب به ما اجازه میدهد منطقی را که در پسزمینه یک برنامه کاربردی قرار دارد و به آن بکاند میگوییم، به شکل سادهتری ایجاد کنیم. منطق بکاند به نگاشت آدرسهای مختلف اینترنتی به قطعه کدهای پایتون، نحوه تعامل با بانکهای اطلاعاتی و ایجاد فایلهای HTML (فایلهایی که کاربران آنها را روی مرورگرهایشان مشاهده میکنند) اشاره دارد.
کدامیک از چهارچوبهای وب پایتون را باید استفاده کرد؟
Django و Flask دو مورد از محبوبترین چهارچوبهای تحت وب برای پایتون هستند. بهتر است برای شروع کار یکی از این دو چهارچوب را انتخاب کنید.
تفاوت Django و Flask
Flask انعطافپذیری، سادگی و کنترل دقیق بر همه جوانب برنامه نویسی وب در پایتون را ارائه میکند. این چهارچوب به توسعهدهندگان اجازه میدهد، تصمیم بگیرند، چگونه میخواهند اشیا را پیادهسازی کنند. Django تجربهای فراتر از کار کردن با یک چهارچوب ساده را ارائه میکند. به عبارت دقیقتر، شما یک پانل مدیریتی، رابطهای بانک اطلاعاتی، نگاشت رابطه به شی (Object-Relational Mapping) و یک ساختار دایرکتوری برای برنامه و پروژههای خود خواهید داشت. یک توسعهدهنده وب ممکن است Flask را به دلایل زیر انتخاب کند: – اگر روی تجربه و فرصتهای جدید یادگیری متمرکز هستید یا به دنبال آن هستید که کنترل بیشتری روی مولفههایی که استفاده میکنید، داشته باشید (چه نوع بانکهای اطلاعاتی را استفاده کرده و چگونه با بانکهای اطلاعاتی به تعامل بپردازید) باید Flask انتخاب اول شما باشد. Django زمانی مناسب است که روی یک محصول (نهایی) متمرکز شدهاید. پروژههایی شبیه یک سایت خبری، فروشگاه الکترونیکی یا وبلاگ به روشی مستقیم برای برنامه نویسی و سازماندهی وظایف نیاز دارند. در نتیجه Django گزینه مناسبی برای اینگونه پروژهها است. بهعبارتدیگر، اگر یک مبتدی هستید، شاید Flask انتخاب خوبی است، زیرا مولفههای کمتری دارد. همچنین، اگر به دنبال سفارشیسازی بیشتری هستید، Flask گزینه مناسبتری است. از سوی دیگر، اگر به دنبال آن هستید تا کارها را به شکل مستقیم انجام داده و سرعت عمل بیشتری در انجام پروژهها داشته باشید، Django گزینه بهتری است.
برنامه نویسی پایتون در علم دادهها (یادگیری ماشین، تحلیل دادهها و تجسمسازی دادهها)
در ابتدا بهتر است کمی در مورد یادگیری ماشین بدانیم. برای توضیح اینکه یادگیری ماشین چیست، مثالی ساده میآوریم: برنامهای را تصور کنید که باید اشیا و موجودات درون یک تصویر را تشخیص دهد. برای مثال، تصویری شبیه شکل ۱ باید در اختیار برنامه قرار بگیرد و برنامه تشخیص دهد سگی درون تصویر است.
در تصویر دیگری برنامه باید میزی را که درون شکل ۲ قرار دارد، تشخیص دهد.
ممکن است بگویید بهراحتی قطعه کدی مینویسم که این کار را انجام دهد. اما کار به این سادگیها نیست. برای مثال، اگر پیکسلهای قهوهای رنگ روشن زیادی در تصویر وجود داشته باشند، ممکن است قطعه کد شما بهاشتباه یک شی را یک سگ تشخیص دهد. شاید برای حل این مشکل راهکاری اینچنینی پیشنهاد دهید: اگر قطعه کد من بتواند لبههای مستقیمی را که درون یک تصویر قرار دارد، شناسایی کند، در نتیجه میتواند فرق یک میز با یک سگ را تشخیص دهد. در سناریو دیگری، ممکن است سگ درون یک تصویر کاملا سفید بوده و موهای قهوهای نداشته باشد. اگر شی درون تصویر لبههای تیزی نداشته باشد و یک میز لبههای گردی داشته باشد، برای این مشکل چه راهکاری پیشنهاد میکنید؟ این درست همان نقطهای است که یادگیری ماشین به میدان وارد میشود. یادگیری ماشین الگوریتمی را پیادهسازی میکند که میتواند الگوی درون یک داده ورودی را تشخیص دهد.
اگر به یک الگوریتم یادگیری ماشین ۱۰۰۰ تصویر مرتبط با یک سگ و ۱۰۰۰ تصویر مرتبط با یک میز را بدهید، الگوریتم خواهد توانست تفاوتهای میان یک سگ و میز را تشخیص دهد. زمانیکه این آموزش به پایان رسید، در مرحله بعد اگر تصویر جدیدی از یک سگ یا میز به الگوریتم بدهید، الگوریتم بهخوبی خواهد توانست یک سگ یا میزی را که درون یک تصویر قرار دارد، تشخیص دهد. فکر میکنم این شیوه آموزش تا حدودی شبیه زمانی است که سعی داریم مفاهیم جدیدی را به یک کودک آموزش بدهیم. این کار ممکن است از طریق بهکارگیری چند نمونه انجام شود: شما با صراحت به یک کودک نمیگویید هر چیز خزدار با موهای قهوهای ممکن است یک سگ باشد، بلکه با نشان دادن تصویر میگویید این یک سگ است، این هم یک سگ است، این یک میز است و این هم میزی دیگری است. الگوریتمهای یادگیری ماشین تا حد زیادی به همین شیوه کار میکنند.
سامانههای تشخیص چهره، صدا، سامانههای پیشنهاددهندهای که آمازون، یوتیوب و نتفیلکس از آن استفاده میکنند در کنار سایر برنامههای مشابه بر مبنای این تکنیک کار میکنند.
از معروفترین الگوریتمهای یادگیری ماشین میتوان به شبکههای عصبی (Neural Networks)، یادگیری ژرف (Deep learning)، ماشینهای بردار پشتیبان (Support Vector Machines) و الگوریتمهای جنگل تصادفی (Random Forest) اشاره کرد. هر یک از این الگوریتمها میتواند برای حل مشکل تشخیص چهره (همانند مثالی که به آن اشاره شد) کاربردی باشد.
زبان برنامه نویسی پایتون در خدمت یادگیری ماشین
کتابخانهها و چهارچوبهای محبوب یادگیری ماشین ویژه پایتون کار برنامه نویسان فعال در حوزه هوش مصنوعی را ساده کردهاند. تانسورفلو (Tensorflow) و سایکیت لرن (Scikit-learn) از محبوبترین کتابخانهها هستند. سایکیت لرن، یک کتابخانه متنباز است که بر پایه Scipy، NumPy و matplotlib طراحیشده است. این کتابخانه قابلیتها و ابزارهای کاربردی برای دادهکاوی، تجزیهوتحلیل دادهها و… در اختیار توسعهدهندگان قرار میدهد.
کتابخانهای که به شکل پیشفرض برخی از الگوریتمهای یادگیری ماشین درون آن قرار دارد. تانسورفلو، یک کتابخانه سطح پایین است که به شما امکان ساخت الگوریتمهای یادگیری ماشین سفارشی را میدهد. بهتر است برای شروع کار و آشنایی با پروژههای یادگیری ماشین کار را با سایکیت لرن آغاز کنید و در صورت کار روی مسائلی که مرتبط با کارایی است، تانسورفلو را انتخاب کنید.
حتما بخوانید : معرفی زبان برنامه نویسی پایتون
علم دادهها و تجسمسازی/مصورسازی دادهها چیست؟
برای آنکه تصویر درستی از این دو مفهوم به دست آورید، اجازه دهید این دو فناوری پر تقاضا را با ذکر مثالی بررسی کنیم. تصور کنید برای شرکتی کار میکنید که برخی از محصولات را به شکل آنلاین به فروش میرساند. بهعنوان یک تحلیلگر دادهها ممکن است نموداری شبیه شکل ۳ رسم کنید.
براساس نمودار ترسیمشده متوجه میشویم در این یکشنبه خاص مردان بیش از ۴۰۰ عدد از یک محصول را خریداری کردهاند، درحالیکه این رقم برای زنان ۳۵۰ عدد بوده است. بهعنوان یک تحلیلگر دادهها ممکن است چند دلیل احتمالی برای این تفاوت ارائه کنید: ۱٫ مردان نسبت به زنان علاقه بیشتری به این محصول داشتهاند؛ ۲٫ اندازه نمونه خیلی کوچک است و این تفاوت ممکن است به شکل تصادفی به وجود آمده باشد؛ ۳٫ مردان به دلایلی این محصول را تنها در یکشنبهها خریداری میکنند. برای درک اینکه کدامیک از این دلایل ممکن است درست باشد، ممکن است گراف دیگری همانند شکل ۴ ترسیم کنید.
در گراف چهار بهجای آنکه تنها دادههای یکشنبه را نشان دهیم، دادههای یک هفته کامل را ترسیم کردیم. شکل ۴ بهوضوح نشان میدهد در وضعیت تقریبا پایداری در روزهای مختلف تفاوتهایی وجود دارد. با نگاه کردن به این گراف و تحلیلی مختصر، یک دلیل قانعکننده ارائه میکنید که مردان نسبت به زنان علاقه بیشتری به این محصول دارند.
حال اگر نموداری شبیه شکل ۵ را مشاهده کنید، چه توضیحی ارائه میکنید؟ شما ممکن است اینگونه استدلال کنید: «مردان بنا به دلایلی تمایل داشتهاند تنها روز یکشنبه این محصول را خریداری کنند یا شاید تنها یک تصادف بوده که مردان روز یکشنبه این محصول را بیشتر از زنان خریداری کردهاند.»
نمونهای که مشاهده کردید، تنها یک مثال ساده از یک تجزیهوتحلیلی است که ممکن است در دنیای واقعی نظارهگر آن باشیم. وایکی سوگی (YK Sugi)، تحلیلگر اسبق شرکتهای گوگل و مایکروسافت نیز یک چنین تحلیلهایی برای این دو شرکت انجام داده است. او میگوید: «مایکروسافت و گوگل چنین تحلیلهایی را انجام میدهند، منتها فرآیند تحلیل در این دو شرکت پیچیدهتر است. زمانیکه در شرکت گوگل مشغول به کار بودم، از پایتون برای انجام چنین کاری استفاده میکردم، درحالیکه در شرکت مایکروسافت از جاوااسکریپت استفاده میکردم. در هر دو شرکت از SQL برای واکشی دادهها از درون بانکهای اطلاعاتی استفاده میکردم. در ادامه پایتون یا Matplotlib (در گوگل) یا جاوااسکریپت و D3.js ( در مایکروسافت) را برای تجسمسازی تجزیهوتحلیل دادهها استفاده میکردم.»
تجزیه و تحلیل دادهها و تجسم سازی با برنامه نویسی پایتون
Matplotlib یکی از محبوبترین کتابخانهها برای تجسمسازی است. یادگیری کتابخانه فوق به معنای این است که شما در ادامه میتوانید از کتابخانههای دیگری شبیه به seaborn که بر پایه این کتابخانه کار میکنند بدون مشکل استفاده کنید.
چگونه باید تجزیهوتحلیل دادهها و تجسمسازی با پایتون را یاد بگیریم؟
در اولین گام باید اصول اولیه تجزیهوتحلیل دادهها و تجسمسازی را یاد بگیرید. درسهایی که سایت Pluralsight ارائه کرده نقطه شروع مناسبی هستند.
https://goo.gl/C9NoHt
پس از یادگیری اصول پایه تحلیل دادهها و تجسمسازی، باید اصول اولیه مباحث آماری را یاد بگیرید. Coursera و Khan Academy اطلاعات مفیدی در اختیارتان قرار میدهند. با کمی جستوجو سایتهای آموزشی فارسی خوبی میتوانید پیدا کنید. اما دو منبع ذکر شده اطلاعات جامعی در اختیارتان قرار میدهند.
حتما بخوانید : پکیج آموزش برنامه نویسی پایتون در ۲۴ ساعت
اسکریپت نویسی با برنامه نویسی پایتون
اسکریپتنویسی به فرآیند نوشتن برنامههای کوچکی اشاره دارد که برای خودکارسازی انجام کارهای ساده استفاده میشوند. تصور کنید در شرکتی کار میکنید یک سامانه پشتیبان ایمیلی برای پاسخگویی به پرسشهای مشتریان وجود دارد. در این شرکت وظیفه شما شمارش تعداد ایمیلها بر مبنای کلیدواژهها است. برای انجام این کار باید ایمیلهای دریافتی را تحلیل کنید. میتوانید این کار را به شیوه دستی انجام دهید، اما بهجای این کار یک برنامه ساده اسکریپتی مینویسید که به شکل خودکار این کار را انجام دهد. ممکن است از روبی برای انجام این کار استفاده کنید، اما بدون تردید پایتون زبان مناسبی برای انجام این کار است. پایتون به دلیل ترکیب نحوی سادهای که دارد، گزینه ایدهآلی برای انجام این کار است. این زبان به شما اجازه میدهد با کمترین کد ممکن برنامههای اینچنینی را نوشته و بهسرعت آنها را آزمایش کنید.
در ارتباط با برنامههای توکار وضعیت چگونه است؟
پایتون با بردهایی همچون رزبری پای بهخوبی کار میکند. در نتیجه برای علاقهمندان به مباحث سختافزاری و بهویژه کامپیوترهای مینیاتوری (رزبری پای) پایتون گزینه مناسبی است.
پایتون برای ساخت بازی
برای طراحی و توسعه بازیها از کتابخانهای که PyGame نامیده میشود، استفاده کنید، اما در این حوزه نمیتوانیم به محبوبترین موتور ساخت بازی اشاره کنیم. میتوانید از این کتابخانه برای پروژههایی که جنبه سرگرمی دارند استفاده کنید، اما برای توسعه بازیهای جدی نباید روی آن حساب باز کنید. بهتر است با Unity در سی شارپ کار کنید. Unity یکی از محبوبترین موتورهای ساخت بازی است. این موتور به شما اجازه میدهد بازی خود را برای پلتفرمهای مختلفی همچون ویندوز، اندروید، مک و iOS بسازید.
حتما بخوانید : پکیج پیشرفته آموزش برنامه نویسی سی شارپ ۲۰۱۷ | مختص ورود به بازار کار + آموزش ساخت بازی Quiz of King
وضعیت پایتون در ارتباط با برنامههای دسکتاپی چگونه است؟
از Tkinter و پایتون برای برنامههای دسکتاپی استفاده کنید، اما این ترکیب انتخاب مطلوبی نیست و بهتر است از جاوا، سی شارپ و سی پلاس پلاس که از محبوبترین گزینههای روز هستند، استفاده کنید. برخی شرکتها از جاوااسکریپت برای ساخت برنامههای دسکتاپی استفاده میکنند. برای مثال، نسخه دسکتاپی اسلک با Electron نوشتهشده و Electron به شما اجازه میدهد از جاوااسکریپت برای ساخت برنامههای دسکتاپی استفاده کنید. برخی از کدهای وب قابلیت استفاده دوباره (Reuse) دارند و جاوااسکریپت به شما اجازه میدهد از این کدها در برنامه کاربردی خود استفاده کنید.
صحبت نهایی درباره این مقاله
فرض کنید در نظر دارید برنامهای شبیه اینستاگرام بسازید. شما باید کدهای فرانتاندی بنویسید که روی دستگاههایی که میخواهید از آنها پشتیبانی کنید، اجرا شود. برای این کار ممکن است از سوئیفت برای iOS، جاوا برای اندروید و جاوااسکریپت برای مرورگرهای وب استفاده کنید. هر مجموعه کد روی دستگاه/مرورگر خاص خود اجرا میشود. این مجموعه کدها لایهبندی برنامه یا همان ظاهر برنامه را تعریف کرده، مشخص میکنند دکمهها باید چگونه به نظر برسند، زمانیکه روی دکمهها کلیک میکنید، چه کاری انجام شود و… .
در مرحله بعد باید راهکاری برای ذخیرهسازی اطلاعات و تصاویر کاربران بیابیم. بهجای آنکه اطلاعات را روی دستگاههای کاربران ذخیره کنید، روی سرور خودتان ذخیره کنید تا دنبالکنندگان یک کاربر بتوانند عکسها را مشاهده کنند. این درست همان نقطهای است که کدهای بکاند/ کدهای سمت سرور به میدان وارد میشوند. به کدنویسی بکاند برای انجام کارهای زیر نیاز دارید:
– مشخص کردن این موضوع که چه فردی، فرد دیگری را دنبال کرده است.
– فشردهسازی عکسها برای آنکه فضای ذخیرهسازی بیهوده اشغال نشود.
– پیشنهاد حسابهای کاربری و تصاویر مختلف به کاربرانی که تازه عضو شدهاند.
همانگونه که مشاهده کردید، کدهای بکاند و فرانتاند عملکردی متفاوت دارند. علاوه بر پایتون، گزینههای خوب دیگری نیز برای کدنویسی سمت سرور/بکاند وجود دارند. Node.JS بر پایه جاوااسکریپت، یکی از این گزینههای مطلوب است.
حتما بخوانید : دانلود بهترین مقالات و کتاب های برنامه نویسی پایتون
حتما بخوانید : دانلود فیلم های آموزشی برنامه نویسی پایتون
The post برنامه نویسی پایتون برای انجام چه کارهایی خوب و چه کارهایی بد است؟ appeared first on آموزش برنامه نویسی.