پایتون؛ زبان برنامهنویسی برای همه
شکی نیست پایتون (Python) یکی از محبوبترین زبانهای برنامهنویسی در جهان است و طی ده سال گذشته، به یکی از ۳ زبان برتر توسعهدهندگان تبدیل شده است. طبق نظرسنجی Stack Overflow در سال ۲۰۲۰، بیش از ۴۰ درصد از توسعهدهندگان در حال حاضر با پایتون کار میکنند و ۳۰ درصد دیگر هم مشتاق یادگیری این زبان هستند. این زبان از کجا آمد، چرا اینقدر محبوب است، بهترین فریمورکها و کتابخانههای پایتون کدام است، چه محصولاتی را میتوان با آن توسعه داد و چه شرکتها و سازمانهایی از آن استفاده میکنند؟ جواب تمام این سؤالها را در این مقاله خواهید خواند.
اگر هم یادگیری این زبان را بهدلیل تصوری که از دشواری و پیچیدگی زبانهای برنامهنویسی دارید، تا به حال شروع نکردهاید، بدانید که پایتون واقعا «زبانی برای همه» است و یادگیری آن برای همه آسان است.
داستان تولد پایتون
پایتون در دسامبر ۱۹۸۹ هنگام تعطیلات کریسمس در آمستردام هلند متولد شد. خیدو فان روسوم، برنامهنویس هلندی، که آن زمان در مؤسسهی تحقیقات ریاضی و علوم کامپیوتر CWI مشغول به کار بود، برای سرگرمی و سپری کردن تعطیلات کریسمس، تصمیم گرفت برای زبان اجرانامهنویسی جدیدی که مدتها در سر داشت، مفسری بنویسد که مبتنی بر ABC باشد.
ABC زبان برنامهنویسی همهمنظوره و سطح بالا شبیه بیسیک و پاسکال است که در مؤسسه ی CWI ابداع شد. هدف ایجاد ABC آموزش برنامهنویسی و نمونهسازی بود و چون سطح بالا بود (یعنی شبیه زبان انسانها بود)، بهراحتیِ انگلیسی خوانده میشد و برای آموزش طرز کار حلقه، منطق و داده به مبتدیان بهترین راهحل بود. فان روسوم چند سال روی پروژهی ABC کار کرده بود و بسیاری از ویژگیهای آن را در پایتون به کار برد. علت انتخاب اسم پایتون برای این زبان جدید هم علاقهی او به سریال «سیرک پرنده مانتی پایتون» بود.
خیدو در نظر داشت توسعهی اپلیکیشن بهسادگی و بدون نگرانی بابت سختافزار، مدیریت حافظه و پیچیدگیهایی از این دست، امکانپذیر باشد؛ پس به این فکر افتاد زبان برنامهنویسی خودش را ابداع کند، ایدههایش را از ABC الهام بگیرد، اما زمان انجام پروژه را از سه سال به پروژهای سهماهه کاهش دهد؛ و اینگونه بود که پایتون متولد شد.
در فوریهی ۱۹۹۱، فان روسوم کد پایتون را در alt.sources منتشر کرد. alt.sources شبیه فرومی بود که افراد در آن سورسکدهای خود را به اشتراک میگذاشتند و آن را میتوان جزو اولین پلتفرمهایی دانست که به توسعهی پروژههای متنباز کمک کرد.
پایتون زبان مفسری است، به این معنی که کد متنی در قالب فایلی نوشته میشود و سپس مفسری فایل را خط به خط می خواند و کد را به دستورعملهای قابل فهم برای کامپیوتر تبدیل میکند. درواقع، زبان پایتون بر اصل قابل فهم کردن برنامهنویسی برای همه پایهگذاری شد و فان روسوم در تمام طول مسیر کاریاش بر این اصل پایبند بود.
اوایل خیدو چندان به محبوبیت پایتون امیدوار نبود. قبل از جهانی شدن اینترنت، متقاعد کردن افراد به استفاده از زبان برنامهنویسی جدید کار دشواری بود و در دههی ۱۹۸۰، خیدو سالها برای معرفی و تبلیغ ABC مجبور به سفر و توزیع نوارهای مغناطیسی بین افراد بود. ABC آن زمان نتوانست بین برنامهنویسان جا باز کند؛ بههمیندلیل خیدو انتظار خاصی هم از پایتون نداشت، اگرچه معرفی پایتون که کافی بود از یوزنت دانلود شود، بسیار آسانتر از توزیع خانه به خانهی نوارهای مغناطیسی بود.
اما در سال ۱۹۹۵، شرکتی به نام Zope تأسیس شد که متخصص در زمینهی تولید موتور آگهینامه برای اینترنت بود. شرکت Zope صفحات وب داینامیکی ایجاد میکرد که با پایتون نوشته شده بودند. در واقع میتوان این شرکت را یکی از دلایل عمده برای محبوبیت پایتون در روزهای اولیه نامید. Zope را تیمی از توسعهدهندگان پایتون هدایت میکند و در سال ۲۰۰۰ فان روسوم هم به آنها ملحق شد.
حول و حوش همین وقتها بود که فان روسوم لقب «دیکتاتور خیرخواه جاویدان» (benevolent dictator for life) گرفت، چون او مبدع این زبان بود و مراحل توسعه آن را کنترل میکرد. این لقب بعدها به رهبران پروژههای متنبازی که خود بنیانگذار پروژه بودهاند و در بحثها و اختلافنظرها، حرف نهایی را میزنند، گفته شد.
نسخهی ۲ پایتون در اکتبر ۲۰۰۰ توانست به سرعت در بخش سیستمی معروف شود، چون برنامهنویسان قادر بودند به کمک این نسخه برای خودکار کردن فرایندهای خود روشهای خلاقانهای پیدا کنند. در این دوره ، توسعهی وب هم با رشد چشمگیری روبهرو شد و فریمورکهایی چون جینجا (Jinja)، فلسک (Flask) و جنگو (Django) هم ظهور کردند و بلافاصله انجمنهای بزرگی برای این فریمورکها ایجاد شد.
در سال ۲۰۰۱، بنیاد نرمافزار پایتون تأسیس شد که سازمانی آمریکایی و غیرانتفاعی بود و بهطور کامل به زبان پایتون اختصاص داشت. این بنیاد همچنین مسئول برگزاری کنفرانس پایتون است که در ۴۰ کشور برگزار میشود.
تا سال ۲۰۱۰ با اینکه به تعداد رقیبان وبسایتهای داینامیک روزبهروز اضافه میشد، اما فریمورکهای مبتنی بر پایتون جزو ده مورد برتر بودند. در واقع میتوان گفت دههی ۲۰۰۰، سالهای اوج پایتون است. براساس رتبهبندی سایت TIOBE، در سال ۲۰۰۰، پایتون در بین زبانهای پراستفاده، جایگاه بیستم را داشت. تا سال ۲۰۰۵ به جایگاه ششم صعود کرد و در حال حاضر بعد از C و جاوا در جایگاه سوم است. این وبسایت پایتون را در سالهای ۲۰۰۷، ۲۰۱۰، ۲۰۱۸ و ۲۰۲۰ بهعنوان «زبان برنامهنویسی سال» انتخاب کرده بود.
در سال ۲۰۰۵ فان روسوم به گوگل پیوست و روی گوگل اپ انجین یا موتور اجرای برنامه گوگل که برنامههای پایتون را در فضای ابری اجرا میکرد، مشغول به کار شد. با پیوستن فان روسوم به گوگل آیندهی روشن پایتون تضمین شد.
نسخهی ۳ پایتون دسامبر ۲۰۰۸ عرضه شد و چون با پایتون ۲ سازگار نبود، برای توسعهدهندگان دردسر زیادی ایجاد کرد. برخی از توسعهدهندگان ترجیح میدادند با پایتون ۲ و برخی دیگر با پایتون ۳ کار کنند.
پایتون اگرچه بین استارتاپهای حوزهی فناوری محبوب بود، اما جایی بین شرکتهای بزرگ نداشت. تا اینکه اواخر دههی ۲۰۰۰، درو هیوستون، دانشجوی MIT، بعد از آنکه فلش مموری خود را در خانه جا گذاشت، به فکر ایجاد فضایی برای اشتراک فایل افتاد و در سال ۲۰۰۷، نرمافزار دراپباکس را برای این منظور عرضه کرد. دراپباکس با پایتون نوشته شده بود و در طول یک سال به سه میلیون کاربر رسید و توجه شرکتهای بزرگ را به خود جلب کرد. ازآنجاکه دراپباکس با پایتون ۲ نوشته بود، فان روسوم در سال ۲۰۱۳ به این تیم پیوست تا برنامه را به پایتون ۳ ترجمه کند. فان روسوم تا زمان بازنشستگیاش با دراپباکس همکاری داشت.
اکتبر ۲۰۱۹ بود که فان روسوم رسما اعلام بازنشستگی کرد و از سمت «دیکتاتور خیرخواه جاویدان» نیز کناره گرفت. بعد از بازنشستگی فان روسوم، توسعهدهندگان اصلی پایتون شورای مدیریتی تشکیل دادند تا دربارهی تغییرات آیندهی پایتون تصمیمگیری کنند و فان روسوم هم عضوی از این شورا است.
امروزه، پایتون آنقدر بزرگ و پرطرفدار شده بود که افراد بیشتری دربارهی آن تصمیمگیری میکنند. نوامبر ۲۰۲۰ فان روسوم اعلام کرد دوران بازنشستگی برای او کسالتبار بوده و حالا به بخش توسعهدهندگان مایکروسافت پیوسته است. او در توییتی قول داد تا استفاده از پایتون را (نه فقط برای ویندوز) بهتر کند.
ذن پایتون
تیم پیترز، یکی از توسعهدهندگان اصلی پایتون، مجموعهای از اصول برنامهنویسی را در سال ۱۹۹۹ نوشت که به «ذن پایتون» (Zen of Python) مشهور است. توسعهدهندگان و برنامهنویسان پایتون همچنان در تلاشند تا به این اصول پایبند باشند. برای مشاهدهی این اصول در مفسر پایتون کافی است کد «import this» را وارد کنید تا این فهرست برای شما نمایش داده شود:
- زیبا بهتر از زشت است.
- بیان صریح بهتر از ضمنی است.
- ساده بهتر از پیچیده است.
- پیچیده بهتر از بغرنج است.
- مستقیم و صاف بهتر از تودرتو است.
- پراکنده بهتر از متراکم است.
- خوانایی مهم است.
- موارد ویژه به اندازهای ویژه نیستند که بهدلیل آنها قوانین را شکست.
- گرچه انجامپذیری به خلوص سرتر است.
- خطاها هرگز نباید در سکوت رد شوند.
- مگر اینکه صریحا مسکوت شده باشند.
- هنگام مواجهه با ابهام، از وسوسهی حدس زدن بپرهیز.
- برای انجام این کار باید یک (و ترجیحا فقط یک) روش واضح وجود داشته باشد.
- اگرچه ممکن است این روش در ابتدا واضح به نظر نرسد مگر اینکه هلندی باشید.
- حالا بهتر از هرگز است.
- اگرچه «هرگز» اغلب بهتر از «همین حالا» است.
- اگر تشریح پیادهسازی آن سخت باشد، ایدهی بدی است.
- اگر تشریح پیادهسازی آن آسان باشد، ممکن است ایدهی خوبی باشد.
- فضای نامها ایدهی بینظیری است، بیایید بیشتر از آنها استفاده کنیم!
دلایل محبوبیت پایتون
اگر کاربران بتوانند برای کامپیوتر خودشان برنامهنویسی کنند، چه میشود؟ نگاه ما به آیندهای است که در آن هر کاربر کامپیوتر قادر خواهد بود «کاپوت را بالا بزند» و اپلیکیشنهای داخل کامپیوتر خود را بهبود ببخشد. ما معتقدیم این کار بهطور اساسی ماهیت نرمافزار و توسعهی نرمافزار را متحول خواهد کرد.
این جملات پروپوزالی بود که پروژهی «برنامهنویسی کامپیوتر برای همه» برای معرفی خود به کار برد. این پروژه را فان روسوم برای تشویق افراد به برنامهنویسی آغاز کرد و معتقد بود زبان برنامهنویسی باید آنقدر ساده و قابلفهم باشد تا هر کاربر کامپیوتر بتواند آن را بهراحتی بیاموزد.
مقالهی مرتبط:
زبان پایتون اگرچه نسبت به سی و جاوا کندتر است و برای طراحی اپلیکیشنهایی که به سرعت بالا برای اجرا شدن نیاز دارند، از جمله بازیهای سنگین، مناسب نیست، اما مزیتهایی بسیاری دارد که باعث شده به یکی از محبوبترین زبانهای برنامهنویسی تبدیل شود. در اینجا به چند نمونه اشاره میکنیم:
۱. یادگیری و استفادهی آسان
یادگیری و استفاده از زبان پایتون برای مبتدیان بسیار راحت است، چون ساختار ساده، کدهای خوانا و دستوراتی بسیار نزدیک به زبان انگلیسی دارد و نسبت به زبانهای دیگر، به نوشتن خطوط کد بسیار کمتری برای اجرای تسکها نیاز دارد.
۲. انجمن حامی و بزرگ پایتون
پایتون بیش از ۳۰ سال پیش ایجاد شد و از آن زمان انجمن برنامهنویسان این زبان آنقدر رشد کرده تا هر توسعهدهندهای را در هر سطحی، چه مبتدی چه حرفهای، پشتیبانی کند. برای یادگیری پایتون منابع و ویدیوهای آموزشی رایگان بسیاری در این انجمن و سراسر اینترنت وجود دارد و بههمیندلیل افرادی که این زبان را برای یادگیری انتخاب میکنند، نگرانی بابت کمبود منابع نخواهند داشت.
۳. حمایت اسپانسرهای بزرگ
زبانهای برنامهنویسی با حمایت شرکتهای بزرگ سریعتر رشد میکنند. فیسبوک از زبان PHP و اورکل و سان از زبان جاوا و مایکروسافت از زبان ویژوال بیسیک و سیشارپ حمایت میکنند. زبان پایتون هم از حمایت فیسبوک، سرویسهای وب آمازون و بهخصوص گوگل برخوردار است. گوگل از سال ۲۰۰۶ زبان پایتون را برای توسعهی بسیاری از اپلیکیشنها و پلتفرمهای خود انتخاب کرد.
۴. صدها کتابخانه و فریمورک پایتون
پایتون بهدلیل اسپانسرهای بزرگ و انجمن فعال، دارای کتابخانههای متنوع و بینظیری است که استفاده از آنها در وقت برنامهنویسان صرفهجویی میکند. سرویسهای چندرسانهای ابری بسیاری وجود دارد که از طریق ابزارهای کتابخانهای، از برنامهنویسان پایتون در پلتفرمهای مختلف پشتیبانی میکند.
۵. تطبیقپذیری، کارایی، اطمینان و سرعت
از زبان پایتون میتوان در محیطهای مختلفی از جمله اپلیکیشن موبایل و دسکتاپ، توسعهی وب، و برنامهنویسی سختافزار استفاده کرد. تطبیقپذیری پایتون آن را به انتخاب اول بسیاری از برنامهنویسان در حوزههای مختلف تبدیل کرده است. اگرچه سرعت اجرای برنامههایی که با پایتون نوشته میشوند، اندکی از زبانهای کامپایلشونده چون سی، پایینتر است، اما توسعهی اپلیکیشن با پایتون زمان بسیار کمتری میگیرد و جای کمتری در حافظه اشغال میکند.
۶. کلانداده، یادگیری ماشین و رایانش ابری
پایتون بعد از آر (R) محبوبترین زبان برنامهنویسی در حوزهی علم داده و تجزیه و تحلیل است، چون برای خیلی از محققان که سررشتهای از برنامهنویسی ندارند، زبان بسیار قابل فهمی است. حجم زیادی از پردازش داده در شرکتها تنها با پایتون انجام میشود. اغلب پروژههای تحقیق و توسعه نیز با زبان پایتون انجام میشود، چون پایتون دارای کاربردهای فراوانی از جمله سهولت تجزیه و تحلیل و ساماندهی دادهی قابل استفاده، است. در ضمن، صدها کتابخانهی پایتون هر روز در هزاران پروژهی یادگیری ماشین به کار میروند. با درک اهمیت پایتون، استخدام برنامهنویس پایتون با تسلط بر اصول علم داده نیز بسیار افزایش پیدا کرده است.
۷. انعطافپذیری زبان پایتون
پایتون آنقدر منعطف است که به توسعهدهنده این امکان را میدهد هر بار پروژهی متفاوتتری را امتحان کند. پایتون، توسعهدهندگان را به توسعهی اپلیکیشنهای خاصی محدود نمیکند و دست آنها را برای خلق هر اپلیکیشن دلخواه باز میگذارد. در ضمن، کوچ کردن از زبان جاوا اسکریپت به پایتون برای افرادی که میخواهند از فرانت اند به بک اند بروند، بسیار راحت است، اگرچه این دو زبان با هم متفاوت هستند.
۸. استفاده از پایتون در دانشگاهها
بهدلیل کاربرد پایتون در حوزهی هوش مصنوعی، یادگیری عمیق و علم داده، امروزه این زبان برای آموزش برنامهنویسی در مدارس و دانشگاهها به کار میرود.
۹. قابلیت خودکارسازی
ابزارها و ماژولهای فراوانی که پایتون در اختیار توسعهدهنده قرار میدهد، فرایند خودکارسازی یا اتوماسیون تسکهای تکراری و خستهکننده را بسیار آسان کرده و در وقت صرفهجویی میکند. در ضمن، تعداد خطوط کد پایتون برای توسعهی ابزار اتوماسیون آنقدر کم است که برنامهنویس را شگفتزده میکند.
۱۰. پایتون زبان استارتاپها
استفادهی راحت، توسعهی سریع و هزینههای پایین، زبان پایتون را به انتخاب مناسبی برای استارتاپهای کوچک با بودجهی محدود تبدیل کرده است. با افزایش چشمگیر محبوبیت رسانههای اجتماعی و انفجار داده در این بستر، بسیاری از استارتاپهای فعال در زمینهی آنالیز داده، سراغ زبان پایتون میروند.
فریمورکهای پایتون
فریمورکهای پایتون مجموعهای از ماژولها و بستههایی است که برای سرعت بخشیدن به توسعه به کمک برنامهنویسان میآید. این فریمورکها، فرایندها و پیادهسازیهای رایج را خودکارسازی میکنند و با صرفهجویی در وقت، به توسعهدهنده این امکان را میدهند تا تنها روی منطق اپلیکیشن تمرکز کند و اجرای این فرایندهای عادی را به فریمورک بسپارد.
فریمورکهای پایتون بهطور کلی به دو دسته تقسیم میشوند:
- میکرو فریمورک (micro-framework) که استفاده از آنها آسان و راحت است و برای توسعهی اپلیکیشنهای کوچک و متوسط مناسب است.
- فول استک فریمورک (full-stack framework) که ماهیت پیچیدهتری دارد، کتابخانههای گستردهتری در اختیار میگذارد، قابلیت مدیریت داده دارد، و برای توسعهی اپلیکیشنهای مختلفی به کار میرود.
توسعهدهندگان برای ساخت اپلیکیشن با زبان پایتون نیاز به دسترسی به فریمورکهای این زبان را دارند. در اینجا ۵ نمونه از بهترین و محبوبترین فریمورکهای پایتون را معرفی میکنیم:
۱. جنگو (Django)
شرکتهای بزرگ از فریمورک جنگو برای صرفهجویی در وقت و کدنویسی کمتر در توسعهی اپلیکیشنهای وب استفاده میکنند. جنگو فریمورکِ فول استک است و بهدلیل رایگان بودن و متنباز بودن بهشدت محبوب است. در واقع جنگو اینقدر محبوب است که اگر سراغ توسعهدهندهی پایتونی بروید، او را از خواب بیدار کرده و با تهدید اسلحه از او بخواهید برای شما اپلیکیشنی طراحی کند، شک نکنید که او بهطور خودکار به سمت جنگو خواهد رفت.
این فریمورک بهطور پیشفرض شامل تمام ویژگیهای ضروری میشود، اما ویژگی اصلی آن تأکید بر اصل «پرهیز از کار تکراری» است. توسعهدهندگان به کمک رابطه نقشهبرداری به شیء (Object-Relational Mapping) که در فریمورک جنگو موجود است، در توسعهی پروژه های خود در وقت صرفهجویی میکنند.
شرکتها و سازمانهای بزرگی که از فریمورک جنگو برای ساخت اپلیکیشن استفاده میکنند، شامل این موارد است:
- ناسا
- اینستاگرام
- یودمی
- یوتیوب
- واشنگتن پست
۲. فلسک (Flask)
فلسک در دستهبندی میکرو فریمورکها قرار میگیرد، به این معنی که تمرکزش روی موارد اساسی و حداقلهاست و باقی کار را به خود توسعهدهنده واگذار میکند. فریمورک فلسک برای افرادی که دقیقا میدانند چه میخواهند و مایلند دستشان در طراحی اپلیکیشنهای وب باز باشد، انتخاب بسیار مناسبی است. این فریمورک همچنین برای پروژههای اورژانسی، در مقیاس متوسط تا بزرگ، انتخاب خوبی است. در مواردی که جنگو پاسخگوی نیازهای شما در توسعهی پروژههای وب نیست، میتوان سراغ فلسک رفت.
برندهای معروفی که از فلسک استفاده میکنند، شامل این موارد است:
- نتفلکیس (Netflix)
- لیفت (Lyft)
- ایربیانبی (Airbnb)
- ردیت (Reddit)
- میلگان (Mailgun)
۳. باتل (Bottle)
اگر فکر میکنید فلسک به اندازهی کافی دست شما را به طراحی اپلیکیشن مورد نظر خود باز نمیگذارد، سراغ باتل بروید. فریمورک باتل برای توسعهی اپلیکیشنهای بسیار کوچک (مثلا کمتر از ۵۰۰ خط کد) که به ویژگیهای خاصی نیاز ندارند، انتخاب خوبی است. ازآنجاکه باتل، میکرو فریمورک است، تنها به کتابخانهی استاندارد پایتون وابسته است. البته این نکته را هم در نظر داشته باشید که در عمل ممکن است استفاده از فریمورک باتل در کار شما اختلال ایجاد کند؛ اگر وسط پروژه نیاز داشتید ویژگی خاصی را به اپلیکیشن اضافه کنید، به دردسر میافتید، چون باتل تمام کدها را تنها درون یک فایل قرار میدهد. فریمورک باتل برای توسعهی اپلیکیشنهای بزرگ مناسب نیست.
۴. چریپای (CherryPy)
چریپای، میکرو فریمورک متنباز پایتون است. طراحی مینیمال آن برای ساخت اپلیکیشنهای وب با قابلیت اجرا در پلتفرمهای مختلف، از جمله ویندوز، مک او اس، لینوکس و هر سیستم عامل دیگری که از پایتون پشتیبانی میکند، مناسب است.
چریپای برای استارتاپها گزینهی مناسبی است، چون محدودیتهای کمی دارد. این فریمورک از هر نوع تکنولوژی برای قالبسازی، دسترسی داده و غیره استفاده میکند و از پسِ نشستها (sessions)، آمار، کوکی، آپلود فایل و مواردی از این دست، بهراحتی بر میآید. انجمن چریپای هم از مبتدیان و هم از توسعهدهندگان حرفهای پشتیبانی میکند.
۵. وب-تو-پای (Web2Py)
Web2Py فریمورکِ فول استک است و بهدلیل قابلیت مدیریت داده، برای توسعهدهندگان و دانشمندان داده انتخاب مناسبی است. از این فریمورک بیشتر برای پروژههای مرتبط با جمعآوری و تجزیه و تحلیل داده استفاده میشود.
کتابخانههای پایتون
تفاوت عمده بین فریمورک و کتابخانه مبحث «پیچیدگی» آنها است که در کتابخانهها کمتر است. کتابخانه مجموعهای از بستههایی است که عملیات خاصی را اجرا میکند، درحالیکه فریمورک حاوی معماری اپلیکیشن است.
وقتی توسعهدهنده مِتُدی را از کتابخانه فرا میخواند، کنترل فرایند توسعه در دست خود اوست؛ اما در مورد فریمورک کنترل فرایند در دست فریمورک است، نه توسعهدهنده. بههرحال، فریمورکها بیشتر از کتابخانه مورد استفاده قرار میگیرند چون انعطافپذیری بیشتری دارند و ابزارهایی در اختیار کاربر میگذارند تا به کمک آنها ویژگیهایش را گسترش دهد. درادامه، ۵ کتابخانه از کتابخانههای محبوب پایتون را معرفی میکنیم.
۱. تنسورفلو (TensorFlow)
TensorFlow کتابخانهای متنباز و مناسب پروژههای مربوط به شبکههای عصبی، گرافهای محاسباتی و اپلیکیشنهای متمرکز بر یادگیری ماشین است. این کتابخانه را گوگل با همکاری تیم تحقیقاتی هوش مصنوعی یادگیری عمیق Brain Team ساخته است؛ بههمیندلیل این کتابخانه تقریبا در تمام اپلیکیشنهای گوگل برای یادگیری ماشین حضور دارد.
۲. سایکیتلرن (Scikit-Learn)
این کتابخانه نیز مخصوص اپلیکیشنهای پایتونی است که بر یادگیری ماشین متمرکز هستند و برای بررسی صحت مدلهای تحت نظارت بر دادههای دیدهنشده، گزینهی ایدهآلی است. Scikit-Learn همچنین رویکردی کارآمد برای خوشهبندی، تحلیل عاملی و تحلیل مولفههای اصلی برای شبکههای عصبی بدون نظارت ارائه میدهد و در حوزهی پردازش تصویر، نظیر استخراج ویژگیها از تصاویر و متون، انتخاب خوبی است.
۳. نامپای (Numpy)
نامپای (Numpy) کتابخانهای است که کتابخانههای دیگر نظیر TensorFlow از آن بهعنوان کتابخانهی داخلی خود برای اجرای چندین عملیات استفاده میکنند. از آنجاکه پایتون با اپلیکیشنهایی در حوزهی داده سروکار دارد، Numpy با قابلیتهای پیچیدهی خود به توسعهدهندگان کمک بسیاری میکند.
مزیت نامپای قابلیتهای تعاملی و سهولت در استفاده از آنها است. این کتابخانه پیادهسازیهای پیچیدهی ریاضی را بسیار ساده میکند. اگر در فکر انجام پروژهای در زمینهی علم داده و یادگیری ماشین هستید، استفاده از کتابخانهی Numpy در این مسیر کمک زیادی به شما خواهد کرد.
۴. کرس (Keras)
کرس (Keras) کتابخانهی یادگیری ماشین در پایتون است و سازوکاری روان برای توسعهی شبکههای عصبی فراهم میکند. کرس همچنین بهترین برنامههای کاربردی را برای کامپایل مدل، پردازش مجموعه دادهها، مصورسازی نمودارها و سایر موارد ارائه میدهد.
این کتابخانه در توسعهی بک اند اپلیکیشنهای مبتنی بر پایتون به کار میرود. برای مثال اوبر، نتفلکیس، و اینستاکارت از این کتابخانه استفاده میکنند. علاوه بر این، استارتاپهایی که یادگیری ماشین در هستهی طراحی محصولاتشان قرار دارد، نگاه ویژهای به این کتابخانه دارند.
۵. پایتورچ (PyTorch)
پایتورچ (PyTorch) یکی از بزرگترین کتابخانههای یادگیری ماشین است که به توسعهدهندگان امکان انجام محاسبات تنسور را میدهد و عملکرد خوبی نیز در حوزهی شبکههای عصبی دارد. اگر به پردازش زبانهای طبیعی (NLP) علاقه دارید، کتابخانهی PyTorch گزینهی مناسبی برای پروژههای شما است.
فیسبوک این کتابخانه را در گروه تحقیقاتی هوش مصنوعی خود توسعه داد و اوبر از آن در بک اند نرمافزار برنامهنویسی «Pyro» استفاده میکند. پایتورچ از زمان تأسیس، محبوبیت زیادی پیدا کرده و توجه تعداد روزافزونی از توسعهدهندگان یادگیری ماشین را به خود جلب کرده است.
با پایتون چه پروژههایی را میتوان توسعه داد
یادگیری اصول ابتدایی پایتون یک طرف قضیه است، اما اینکه حالا با این مهارت چه میشود کرد، داستان دیگری است و ممکن است برای عدهای به چالش تبدیل شود. در اینجا ۱۵ پروژهی جالب و کاربردی را که میتوان با پایتون توسعه داد، معرفی شده که برای شروع گزینههای مناسبی هستند:
۱. ساماندهی فایلها در سیستم
از پایتون میتوان بهراحتی برای ساماندهی خودکار فایلها روی سیستم استفاده کرد. عملیاتی نظیر تغییر عنوان، کپی و جابجایی صدها فایل را میتوان تنها با نوشتن یک قطعه کد پایتون در چند ثانیه انجام داد. برای مثال نرمافزار رایگان و متنباز beets که مخصوص ساماندهی فایلهای موسیقی است، از پایتون استفاده میکند و به کاربر اجازهی دستکاری کدها و حتی نوشتن پلاگین مدنظر خود را میدهد.
۲. فهرستسازی
با استفاده از پایتون میتوانید بهجای بوکمارک کردن وبسایتهای مورد علاقه و دردسر انتقال آنها از مرورگری به مرورگر دیگر، فهرستی از آنها را در خط فرمان پایتون ذخیره کنید. برای مثال، مدیریت بوکمارک buku به زبان پایتون ۳ نوشته شده و در کنار مدیریت فهرست وبسایتهای موردعلاقه، امکان تگ خودکار، اصلاح لینکهای خراب و جستوجو در پایگاه داده و حتی قفل و رمزگذاری کردن فهرستهای شما را دارد.
این برنامه پروژهی متنباز است و اگر ایدهای در سر دارید و نمی دانید با آن چه کار کنید، میتوانید آن را بهعنوان ویژگی جدیدی به این پروژه اضافه کنید تا کاربران دیگر نیز بتواند از آن استفاده کنند.
۳. ساخت رزومه در وبسایت استاتیک
Pelican که به زبان پایتون نوشته شده مخصوص ساخت وبسایتهای استاتیک است و برای ساخت رزومهای تمیز و در عین حال تعاملی، گزینهی بسیار خوبی است. در Pelican میتوانید به کدهای پایتون دسترسی پیدا کنید و تا جایی که میخواهید آنها را به سلیقهی خود تغییر دهید.
۴. ساخت وبسایتهای داینامیک
فریمورکهای وب پایتون نظیر جنگو و فلسک برای ساخت وبسایتهای داینامیک با قابلیتهای بسیار به شما کمک زیادی خواهند کرد. برای مثال اینستاگرام از جنگو و پینترست از فلسک استفاده میکند و هر دو قابلیت مدیریت تصاویر با رزولوشن بالا، تعاملات کاربری پیچیده و المانهای طراحی وب واکنشگرا را دارند و از پایتون در بک اند خود استفاده میکنند.
۵. مصورسازی داده
کتابخانههای پایتون مجموعهی بزرگی از ابزار برای مصورسازی داده ارائه میدهند تا بررسی داده به کمک نمودار و نقشه آسانتر شود. به کمک کتابخانهی مصورسازی Seaborn و Matplotlib که مبتنی بر زبان پایتون است، میتوانید به آسانی دادههای خود را بهصورت نمودار و نقشه نشان دهید و از کتابخانههایی مانند Bokeh برای اضافه کردن قابلیتهای تعاملی بیشتر استفاده کنید.
۶. ساخت شبکهی عصبی
شرکتهایی مانند اوبر از شبکههای عصبی برای برقراری ارتباط بین مسافران و رانندگان و حتی بهبود کیفیت پیشنهاد غذا و رستوران استفاده میکنند. زبان پایتون هم در مرکز این فعالیتها قرار دارد. بهگفتهی اوبر، کتابخانهی مخصوص یادگیری عمیق پایتورچ، پای ثابت توسعهی الگوریتمهای این شرکت است.
پایتون برای پروژههای مربوط به یادگیری عمیق، کتابخانههایی نظیر تنسورفلو و کرس را در اختیار کاربر قرار میدهد. با یادگیری پایتون و استفاده از این کتابخانهها برای ساخت شبکههای عصبی، مهارتی کسب خواهید کرد که تا سالهای آینده در پروژه های مختلف به کارتان خواهد آمد.
۷. ساخت موتور پیشنهادگر
یکی دیگر از مصارف محبوب یادگیری ماشین، موتور پیشنهادگر است. کتابخانههای پایتون نظیر NumPy و Scikit-Learn مجموعهی بزرگی از ابزارهای متنوع در اختیار کاربر قرار میدهند تا پلتفرمی برای پیشنهاد محصول، مثلا در فروشگاههای آنلاین، ایجاد کنند. برای مثال، اسپاتیفای و نتفلیکس به کمک این پشتهی علم داده و ترکیب آن با فریمورکهای کلانداده مانند آپاچی هدوپ میتوانند دادهها را آنالیز کرده و به کاربران، موسیقی و فیلم موردعلاقهیشان را پیشنهاد دهند.
۸. آنالیز بازخورد کاربران
تحلیل احساسات (Sentiment Analysis) کاربر به کسبوکارها در تصمیمگیریهای مهم کمک میکند و پشتهی علم دادهی پایتون، جعبهابزار زبان طبیعی (nltk) آن و ترکیب آن با الگوریتمهای یادگیری ساده و تحت نظارت میتواند به سرعت نظرات، توییتها، یا هر نوع بازخوردی را از سمت کاربر بررسی کند.
۹. جمع آوری داده از وبسایتها
البته که بسیاری از این پروژههایی که تا اینجا به آن اشاره شد، بدون جمعآوری داده ممکن نیست. به کمک پایتون و کتابخانهها و فریمورکهایی مانند Selenium، ScraPy و BeautifulSoup میتوانید به آسانی اطلاعات را از وبسایتهای مختلف استخراج کنید. علاوه بر این، پایتون بهراحتی با APIهای موجود سازگار میشود و کمک میکند تا دادههای ساختاریافته را به سرعت و بهطور مؤثر از وبسایتها بیرون بکشید.
۱۰. ساخت اپلیکیشنهای موبایل
بیش از ۴۵ درصد جمعیت جهان از گوشی هوشمند استفاده میکنند و بههمیندلیل بازار اپلیکیشنهای موبایل همیشه داغ است. به کمک فریمروک Kivy پایتون میتوانید اپلیکیشنهایی با قابلیت اجرا در سیستمعاملهای مختلف توسعه دهید. برای مثال، دراپباکس از پایتون برای ساخت اپلیکیشن موبایلی خود استفاده کرده که بدون هیچ مشکلی روی سیستمعامل ویندوز، مک او اس و حتی برخی توزیعهای لینوکس اجرا میشود.
۱۱. مبادلهی رمزارز
به کمک پایتون میتوان ربات معاملهگر رمزارز ایجاد کرد که تمام وقت فعال است و مستقل از کاربر عمل میکند. همچنین میتوان با ترکیب الگوریتمهای یادگیری ماشین در این بات، بهترین زمان برای خرید و فروش رمزارز را پیشبینی کرد. حتی اگر خودتان علاقهای به ورود به حیطهی خرید و فروش رمزارز ندارید، بات شما میتواند در بازار قیمت بالایی داشته باشد.
۱۲. ساخت بات شبکههای اجتماعی
به کمک پایتون میتوان باتهایی ساخت تا انجام حجم زیادی از فعالیتهای آنلاین شما را در شبکههای اجتماعی به عهده بگیرد. میتوانید به کمک کتابخانههایی مانند Tweepy و InstaPy مستقیم با سرویسهای شبکههای اجتماعی ارتباط برقرار کنید، یا برای باتی کد بنویسید و آن را به API متصل کنید، درست شبیه آنهایی که یوتیوب یا ردیت یا دیسکورد ارائه میدهند.
۱۳. ساخت چتبات
پایتون ساخت چتباتهای پیچیده را به کمک تلفیق nltk با کتابخانههای یادگیری ماشین ممکن میکند. حتی میتوانید به کمک کتابخانههای PyAudio و SpeechRecognition، و اضافه کردن قابلیت گفتار به متن، به چتبات خود صدا اضافه کنید.
۱۴. اتصال به اینترنت اشیا
به کمک ابزارهایی مانند آردوینو و رزبریپای میتوانید ربات، لوازم خانگی و دستگاههای کوچکی بسازید که به اینترنت اشیا متصل میشوند و از زبان پایتون استفاده میکنند. برای مثال، MicroPython پروژهای متن باز است که برنامهنویسی برای میکروکنترلرها را بسیار ساده کرده است. حتی میتوانید به کمک پایتون، فایروال یا سیستم آبیاری خود را راه اندازی کنید.
۱۵. استفاده از قابلیت زبانهای دیگر
گاهی پروژهای که در سر دارید را نمیتوان بهطور کامل با پایتون نوشت. در این شرایط لازم نیست بهطور کامل پایتون را کنار بگذارید و سراغ زبانهای دیگر بروید؛ بلکه انعطافپذیری پایتون این امکان را به شما میدهد تا هرجا نیاز به استفاده از زبان دیگری مانند سی یا ++C داشتید، به کمک ماژولهای خاص پایتون (extension module) از قابلیتهای آنها در پروژهی پایتونی خود استفاده کنید.
چه شرکتهایی از پایتون استفاده میکنند
بسیاری از شرکتهای تکنولوژی و سازمانهای بزرگ و موفق دنیا از زبان پایتون برای توسعهی بک اند وبسایت خود یا آنالیز داده استفاده میکنند. در اینجا با برخی از آنها آشنا میشویم:
اینستاگرام
اینستاگرام، بزرگترین اپلیکیشن اشتراک عکس در دنیا با نزدیک ۴۰۰ میلیون کاربر فعال روزانه، برای بک اند خود از فریمورک جنگو که به زبان پایتون است، استفاده میکند و دلیل این کار را سادگی و محبوبیت پایتون عنوان میکند.
گوگل
گوگل با سهم ۷۵ درصدی از بازار، پراستفادهترین موتور جستوجو در دنیا است. گوگل از همان ابتدا از طرفداران پایتون بوده و بنیانگذاران آن تصمیم گرفتند «هرجا میشد از پایتون استفاده کنند و هرجا باید از ++C.» در سهولت استفاده از پایتون همین بس که اولین خزندهی وب گوگل که با جاوا نوشته شده بود، کمی بعد به زبان پایتون بازنویسی شد تا استفاده از آن راحتتر شود.
اسپاتیفای
اسپاتیفای، پلتفرم پخش موسیقی، پادکست و ویدئو در سال ۲۰۰۸ عرضه شد و تا امروز بیش از ۷۵ میلیون عضو دارد. درحالیکه وبسایت اسپاتیفای از وردپرس استفاده میکند، اپلیکیشن آن با پایتون ساخته شده است. ۸۰ درصد سرویسهای اسپاتیفای مبتنی بر پایتون و باقی مبتنی بر زبانهای دیگری چون جاوا، سی و ++C است. اسپاتیفای از پایتون برای آنالایز داده و خدمات بک اند استفاده میکند.
نتفلیکس
نتفلکیس با بیش از ۳۳ میلیون عضو در ۴۰ کشور، بزرگترین شبکهی تلویزیونی اینترنتی در دنیاست. نتفلکیس مانند اسپاتیفای از پایتون برای آنالیز داده استفاده میکند. علاوه بر این، به مهندسان نرمافزار خود اجازه میدهد با هر زبانی که راحتترند کدنویسی کنند و اغلب برنامهنویسان نتفلکیس، زبان پایتون را ترجیح دادهاند. از نظر مهندسان نتفلکیس، کتابخانهی استاندارد پایتون، انجمن بسیار فعال و رو به رشد آن، و تنوع زیاد در کتابخانههای موجود، حل هر مشکلی را برای توسعهدهندگان امکانپذیر کرده است.
ردیت
وبسایت ردیت روزانه ۵۰ میلیون کاربر فعال دارد و هشتمین وبسایت پربازدید در دنیاست. ردیت ابتدا از Lisp استفاده میکرد، اما شش ماه بعد از عرضه، با پایتون بازنویسی شد. علت این تغییر هم دسترسی پایتون به کتابخانههای متنوعتر و انعطافپذیری آن از نظر توسعه بود. ردیت هنگام استخدام برنامهنویس به آنها میگوید هرچه مینویسند باید به زبان پایتون باشد تا خوانش آن آسانتر باشد و بشود بهراحتی فهمید آیا کدی که نوشتند خوب است یا بد.
زبان پایتون بین شرکتها و سازمانهای بزرگ طرفداران زیادی دارد. نمونههای دیگر از شرکتهای مطرحی که از پایتون استفاده میکنند، شامل این موارد است:
- فیسبوک
- ناسا
- کورا
- پینترست
- یوتیوب
- دراپباکس
- آمازون
- اوبر
- لیفت
- سازمان سیا
- پیپال
- نوکیا
- آیبیام
نصب پایتون
پایتون قابل نصب در ویندوز، لینوکس، مک او اس و پلتفرمهای خاصی مانند IBM AS/400، iOS، Solaris و غیره است، و روشهای مختلفی برای نصب آن وجود دارد.
سادهترین راه برای اضافه کردن قابلیتهای مختلف به پایتون خالص، مخصوصا برای دانشمندان داده، دانلود آن از سایت Anaconda است. پکیجی که از این سایت دانلود میکنید شامل پایتون خالص، کتابخانههای ضروری برای دانشمندان و یادگیری ماشین (نظیر نامپای، سایپای و پاندا)، و همچنین دو ابزار کدنویسی Spyder و Jupyter Notebook است. نصب این پکیج هم بسیار آسان است و تنها کافی است سیستم عامل خود را انتخاب و روی download کلیک کنید.
همچنین، میتوانید پایتون را از خود سایت رسمی آن نیز دانلود کنید. فقط حواستان باشد هنگام نصب، روی گزینهی «Add Python 3.x to PATH» کلیک کنید. اگر هیچ پیشزمینهای در پایتون ندارید و میخواهید یادگیری آن را از صفر شروع کنید، معمولا سه ماه زمان لازم است تا آن را یاد بگیرید. اما اگر قصد دارید از پایتون در علم داده استفاده کنید (برای مثال برای آنالیز داده یا یادگیری ماشین)، یادگیری آن به زمان کمتری نیاز دارد، به این دلیل که برای علم داده فقط به استفادهی خاصی از زبان نیاز دارید و درک اصول اساسی آن بین یک تا دو ماه بیشتر طول نمیکشد. طبق آمار 365datascience، اگر روزی ۵ ساعت از وقتتان را به یادگیری پایتون اختصاص دهید، میتوانید در عرض یک ماه اصول بنیادی مورد نیاز برای تحلیل علم داده در زبان پایتون را بیاموزید.
آیندهی پایتون
زبان پایتون با شروع فروتنانهی خود بهعنوان پروژهای کوچک برای گذران تعطیلات کریسمس، سفر طولانی و پر فراز و نشیبی را تا تبدیل شدن به یکی از محبوبترین زبانهای برنامهنویسی دنیا طی کرده است. بسیاری از اصول کلیدی که منجر به تولد پایتون شد، از جمله سادگی و فهم آسان، همچنان در مورد این زبان پابرجاست و مسیر توسعهاش را در آینده تعریف میکند.
اگرچه پایتون روزبهروز محبوبتر میشود و حوزهی علم داده را عملا تصاحب کرده است، اما چالشیهایی نیز سر راهش قرار دارد. برای مثال، حضور پایتون در گوشیهای هوشمند که این روزها رایجتر از کامپیوتر هستند، یا پردازندههای چندهستهای، بسیار کمرنگ است.
افزونبراین، پایتون بهدلیل «چسبنده» بودن، طیف گستردهتری از کاربران را به خود اختصاص داده است و برنامهنویسان هر روز مرزهای این زبان را با قدرت خلاقیت و نوآوری خود جابهجا میکنند. بسیاری از افراد گمان میکنند پایتون فقط در بک اند کاربرد دارد، اما قابلیتهای این زبان بسیار بیشتر از این حرفهاست.
به قول خالق آن، خیدو فان روسوم، «پایتون آزمایشی برای تعیین میزان آزادی عمل مورد نیاز برنامهنویسان است. اگر از حد خود بیشتر شود، دیگر کسی نمیتواند کد فرد دیگری را بخواند. اگر هم از حد خود کمتر شود، قابلیت ابراز ایده به خطر میافتد.»