
اول میخواهیم سری به تاریخچه پایتون بزنیم، بعد هم بگوییم مزیتها و کاربردهای پایتون چیست؟ که یک عالمی را درگیر خودش کردهاست؟ و در یک کلام میخواهیم در این مقاله به جذابترین شکل ممکن به سوال پایتون چیست؟ پاسخ بدهیم.
اجرای python از کمی بعد از فارغالتحصیلی آقای خیدو ون راسوم (Guido van Rossum) شروع شد.
در همان زمان هالی موسسهی تحقیقاتی علوم و ریاضیات در آمستردام هلند (cwi)، مشغول طراحی یک زبان جدید به نام abc بودند؛ آنها دوست داشتن این زبان جدید سادهتر از سایر زبانها و در عین حال کاربردی باشد.
در نهایت حوالی سالهای دهه هشتاد اهالی آکادمی علوم برای طراحی زبان جدیدشان سراغ خیدو رفتند؛ البته تلاشهای خیدو و دوستانش هم نتیجه نداد و زبان abc هیچ وقت متولد نشد.
آما آقای خیدو دست از تلاش برنداشت و بعد از شکست پروژهی abc سعی کرد ایرادهایش را پیدا و آنها را رفع کند. در نهایت … ۷-۸ سال بعد یعنی حدود سال ۱۹۹۱ آقای خیدو موفق شد از دل پروژهی ناقص abc یک زبان ساده و کاربردی بسازد. آن اوایل زبان جدید آقای خیدو اسمی نداشت. اما بعد خیدو با الهام از برنامهی تلویزیونی مورد علاقهاش یعنی Monty Python’s Flying Circus’ اسم زبان جدید را پایتون گذاشت؛ زبانی که خیلی زود تبدیل به زبانی جذاب و کاربردی برای برنامهنویسها شد. اما این که پایتون چیست؟ و دقیقا چه کار میکند؛ سوالهایی هستند که برای پیدا کردن جوابشان باید به بخش بعد بیایید.
پایتون یک زبان برنامه نویسی شیءگرا، سطح بالا و چندمنظوره است. برعکس CSS و JavaScript، از زبان python برای اهداف مختلفی میتوان استفاده کرد؛ یعنی شما با پایتون هم میتوانید سایت طراحی کنید و هم نرمافزار بنویسید!
خب در بخش پایتون چیست؟ ما نوک کوه یخ را نشانتان دادیم. حالا میخواهیم به عمق دنیای پایتون سفر کنیم؛ برای یک سفر هیجانانگیز و پر از کد و برنامهنویسی آماده هستید؟
چه چیزی باعث میشود که python به یکی از محبوبترین زبانهای برنامهنویسی دنیا تبدیل شود. اصلاً مگر پایتون چه ویژگیهای خاصی دارد؟ عجله نکنید؛ در ادامه میفهمیم!
پایتون یک زبان سطح بالا و شیگراست که به زبان آدمیزاد (البته از نوع انگلیسیاش) صحبت میکند. حالا اصلا این شیگرایی در برنامهنویسی چه مفهومی دارد؟ فرض کنید شما میخواهید یک خانه بسازید؛ این خانه چه ویژگیهایی دارد؟ یک پنجرهی بزرگ قدی دارد؟ یا صاحب یک در سبزرنگ است؟ این ویژگیها در برنامهنویسی به شی معروف هستند.
حالا چرا شیگرایی یک زبان مهم است؟ به خاطر اینکه شما میتوانید به جای اینکه اول هر خط کدنویسی بگویید یک خانهای هست که در سبزرنگ با پنجرههای قدی دارد؛(که نوشتنش به شکل کد کلی طول میکشد!) خیلی راحت بنویسید خانهی پلاک ۱۷۳ و سیستم میفهمد که منظورتان همان خانه با پنجره قدی است و از شر کلی کدنویسی راحتتان میکند.
برای همین هم توسعه و کار با پایتون بسیار راحتتر و سریعتر از آنچیزی است که فکرش را بکنید.
زبانهای قبل از پایتون عاشق پیچیدهکردن مسائل بودند؛ برای همین هم خواندن یک کد ساده کار هرکسی نبود. اما پایتون به زبان انگلیسی بسیار نزدیک است.
همین باعث میشود که افراد بتوانند خیلی راحت کدهای نفر قبلی را بخوانند و ادامهاش بدهند. اهمیت این موضوع موقع انجام پروژههای بزرگ مشخص میشود.
وقتی سر همهی برنامهنویسها حسابی شلوغ است و کسی وقت سرخاراندن ندارد؛ و تازه هزار و یک جور اطلاعات بزرگ از در و دیوار میریزد (اجازه بدهید یک نفس بکشیم!) زبانی مثل python حسابی به درد میخورد! چون به خاطر ساده بودن کدهایش، کدنویسها میتوانند خیلی راحت از اطلاعات و کدهای نفر قبلی استفاده کنند. برنامهنویسها هم البته به خاطر همین سادگی کدهای پایتون خیلی زود عاشقش شدند و ترجیح دادند توسعهی وب یا نرمافزارهای کاربردی را با آن انجام دهند.
یکی از ویژگیهای اصلی پایتون منبع باز یا open source بودن آن است. این دیگر چیست؟
آن خانههای مثال قبلی را که از یاد نبردید؟ حالا تصور کنید یک برنامه نویس دیگر یک خانه با پنجره قدی لازم ندارد و فقط نیاز به یک خانه با در سبز و پنجرههای مثلا آبی دارد.
او خیلی راحت وارد سیستم میشود؛ خانهی کدنویس قبلی را قرض میگیرد و با تغییر در یکی دو کد، خانهی مناسب کار خودش را میسازد. این موضوع باعث میشود شما بتوانید از طریق میانبرهای مختلف و با کمک کدهای نوشته شده قبلی سریعتر کد بنویسید و دیگر لازم نیست به قول معروف چرخ را از اول اختراع کنید.
پایتون همانطور که گفتیم خیلی سطح بالا صحبت میکند؛ در نتیجه مهندسهای کامپیوتر حرفهایش را میفهمند اما هرچقدر فریاد میزند، سیستمها و نرمافزارها با تعجب فقط نگاهش میکند. برای همین هم python دست یک نرمافزار مترجم را گرفت و آورد وسط بازی. یک چیزی شبیه به همین مترجمهای مربیهای ورزشی که حرفها را ترجمه میکنند. کار این مفسر این بود که حرفهای سطح بالای پایتون را به زبان میانی و قابل فهم برای سیستم و نرمافزار ترجمه کند. حالا با وجود این مفسر هم سیستمها خوشحال هستند؛ هم مهندسها از اینکه توانستند دست آخر یکجوری کدهایشان را تبدیل به یک برنامهی کاربردی کنند، راضی هستند.
اگر فکر کردهاید تا اینجا از همهی ویژگیهای خوب پایتون باخبر شدهاید؛ باید بگوییم که نهخیر! سومین زبان معروف دنیا یکی دو تردستی دیگر هم در آستین دارد.
مثلا پایتون خیلی حواسش به نظافت دور و اطرافش هست؛ برای همین اگر ببیند شما یک کد نوشتید و ازش استفاده نمیکنید، سریع آن را برمیدارد و از روی حافظه پاک میکند، به این ویژگی اصطلاحا garbage collection میگویند که باعث میشود کدهایتان جای کمتری در حافظه اشغال کنند و در نتیجه سرعت کار سیستم بیشتر شود.
این از ۵ ویژگی مهم پایتون؛ حالا بیایید ببینیم که این مار خوش خط و خال، چه معایب و چه مزایایی دارد.
با شناخت مزایا و معایب پایتون است که میتوانید متوجه شوید این زبان به درد کار شما میخورد یا نه؛ پس بیایید نگاهی به آنها داشته باشیم. شما هم اگر تجربه برنامهنویسی با پایتون را دارید، دیدگاه خودتان را به ما بگویید.
یادگیری آسان: یادتان میآید گفتیم پایتون به زبان انگلیسی امروزی صحبت میکند؟ همین موضوع باعث میشود که یادگیریاش بسیار ساده باشد و خب یک برنامهنویس تازهکار جز سرعت در یادگیری دیگر چه میخواهد؟
کتابخانههای زیاد: هر کتابخانهای که فکرش را بکنید در پایتون وجود دارد؛ از کتابخانههای ساختن بازی بگیرید، تاااا یادگیری ماشین! وجود یک اجتماع قوی: همانطور که قبلاً گفتیم، پایتون متن باز است؛ برای همین هم میتوانید آن را به صورت رایگان دانلود و استفاده کنید. همین ویژگی باعث شده که تعداد زیادی برنامهنویس با پایتون کار کنند و به بحث تبادل نظر با هم بپردازند. نتیجه این تبادل نظرها یک اجتماع قوی از برنامهنویسان را تشکیل داده که هر جا سوالی داشته باشید یا به مشکل بخورید، میتوانند راهنماییتان کنند تا خیلی سریع راه حلی پیدا کنید. وجود پروتوتایپهای عالی: یکی از عواملی که یادگیری پایتون را ساده کرده، وجود الگوهای اولیه (یا همان prototype) است. این یعنی شما میتوانید از این الگوها استفاده کنید و هزینههای مالی و زمانی برنامهنویسی را کاهش دهید. توسعهپذیر بودن: شما میتوانید با ورژنهای مختلف python به سرزمین زبانهای دیگر برنامهنویسی سفر کنید. مثلا با کمک جیپایتون میتوانید پایتون را در جاوا اجرا کنید؛ به لطف آیرون پایتون با داتنت و سی شارپ کار کنید و در نهایت با روبی پایتون از تلفیق پایتون با روبی لذت ببرید.
یک زبان رو به جلو: آن زبان abc که هیچ سرانجامی نداشت و در بخش تاریخچه قصهاش را گفتیم، خاطرتان هست؟ خب پایتون از تنبلی آن رفیقش حسابی درس عبرت گرفت و خیلی سریع پیشرفت کرد؛ python هر روز بیشتر توسعه پیدا میکند تا بتواد با سیستمهای کاری جدید هماهنگتر پیش برود. همین موضوع باعث میشود که فرصتهای شغلی بیشتری در اختیار برنامهنویسهای مسلط به این زبان قرار بگیرد و از طرف دیگر با افزایش کدنویسها، تعداد کتابخانهها و کدهای نوشتهشده به زبان python بیشتر بشود.
دنیایی از فریم ورکها: بیاید اول ببینیم فریم ورک چیست؟ فریم ورکها درواقع جعبهابزارهای زبانهای برنامهنویسی هستند؛ شما در یک فریم ورک میتوانید برنامهتان را به شکل تستی اجرا کنید یا با کمک ابزارهای مختلفش آن را ارتقا بدهید و به بهبودش کمک کنید.
از مهمترین و پرکاربردترین فریمورکهای python میتوانیم به این فریم ورکها اشاره کنیم:
جنگو: فریم ورک اختصاصی توسعهدهندههای وب که با ابزارهایی مثل ,uri ,Authentication Routing سر بزنگاه به دادشان میرسد. جنگو ششمین فریم ورک محبوب دنیاست و سایتهایی مثل ناسا یا حتی همین اینستاگرام خودمان با کمک جنگو به اینجا رسیدهاند. فلسک: فریمورک محبوب برنامهنویسها که خطوط کدنویسی را کاهش میدهد. Flask درست مثل یک چسب قوی میماند و کدهای مختلف از کتابخانههای متفاوت را به هم میچسباند. در نتیجه با کمکش میتوانید در زمان کدنویسی حسابی صرفهجویی کنید.
سرعت کم: python یک زبان تفسیری است و در نتیجه کدها را خط به خط ترجمه میکند؛ همین باعث میشود که سرعت پردازشش کمتر از بعضی زبانها باشد و خب سرعت کم، آن هم در دورهای که وقت طلاست! خیلی آزاردهنده میتواند باشد.
اشغال حجم زیاد: درست است که گفتیم پایتون به موقع کدهای اضافه را جلوی در میگذارد؛ اما با این وجود نسبت به زبانهایی مثل c یا c++ بخش بیشتری از حافظه را اشغال میکند؛ در نتیجه کدنویسها برای توسعهی بازیهای سنگین یا توسعهی سلولی زیاد رویش حساب نمیکنند. ضعف در ایرادیابی برنامهها: بعضی از زبانها درست همان موقع که شما دست به کیبورد میشوید، ایرادهای کدنویسیتان را اصلاح میکنند (حالا نه به این سرعت ولی کمی سریعتر از python دست به کار میشوند). خاصیت جذابی که پایتون آن را ندارد و در نتیجه موقع تدوین کد نمیتوانید به ایرادهای احتمالی کدها پی ببرید و باید تا زمان اجرایشان صبر کنید. بومی نبودن برای موبایل: از نظر خیلی از برنامهنویسان، پایتون زبان مناسبی برای اجرا شدن در محیط موبایل نیست و اندروید و iOS هم پایتون را به رسمیتنمیشناسند؛ اما با این حال باز هم میشود از پایتون در محیط موبایل استفاده کرد؛ منتها این کار نیازمند وقت گذاشتن و تنظیمات بیشتری است. فریمورک KIVY برای این کار مناسب است.
طراحی و توسعهی وبسایت: وقتی میخواهید یک کار جدید را شروع کنید؛ خوب است که از ابزار درستش استفاده کنید. حالا اگر قرار باشد آستینها را بالا بزنید و یک وبسایت طراحی کنید بهتر است از کدام زبان برنامه نویسی کمک بگیرید؟ خب معمولا برنامهنویسها برای طراحی و توسعهی وبسایت به سراغ PHP یا PYTHON میروند.
جنگو و فلسک (همان فریم ورکهای محبوبی که در بخش قبل به آنها اشاره کردیم) چوب جادوی پایتون برای طراحی و توسعهی وبسایتها هستند.
شما با کمک ابزارهای این دو فریم ورک به راحتی میتوانید یک وبسایت را طراحی کنید و همچنین با پشتیبانی کتابخانهها کاری کنید که وبسایت در کسری از ثانیه بتواند به نیاز مخاطبانش پاسخ بدهد.
این عامل در کنار سادگی و راحتی کدنویسی با پایتون باعث شدند بیشتر توسعه دهندههای وبسایت درهای قلبشان و یا حتی سیستمشان را به روی PYTHON باز کنند.
علوم داده و محاسبات: پایتون کتابخانههای science-friendly زیادی دارد؛ به همین خاطر میتواند در پژوهشها و محاسبات علمی هم کارایی خوبی داشته باشد. بیولوژی، علوم اعصاب، روانشناسی، محاسبات عددی و آمار، از جمله شاخههایی هستند که کتابخانههایشان را در پایتون میتوانید پیدا کنید. یادگیری ماشین: به فیلمهای علمی تخیلی علاقه دارید؟ همان فیلمهایی که رباتها موفق شدند جهان را تسخیر کنند؟ خب داستان ما به جاهای تا این حد ترسناک نمیرسد. اما خوب است بدانید که پایتون نقش خیلی زیادی در گسترش یادگیری ماشین یا machine learning دارد. حالا که تا اینجاآمدهاید بگذراید اصلا ببنیم machine learning چیست؟
مثلا همین گوگل را تصور کنید؛ تا چند سال پیش اگر ازش یک سوال ساده میپرسیدید کلی جواب بی ربط جلوی رویتان میگذاشت، اما حالا و به لطف الگوریتمهای مختلف میتواند منظورتان را بفهمد. مثلا اگر قبلا راجع به زبانهای برنامهنویسی از گوگل سوال پرسیدهباشید؛ وقتی ازش سوال میکنید: پایتون چیست؟ به جای اینکه تصویر یک مار و کلی مطلب رازبقاطور برایتان ردیف کند؛ دستتان را میگیرد و میآورد اینجا و این مقالهی پر و پیمان ما راجعبه ویژگیها و مزیتهای PYTHON را در اختیارتان میگذارد.
گوگل و سایتهایی که میتوانند مثلا بر اساس خواست مشتری شخصیسازی بشوند یا انواع سایتها و اپلیکیشنهایی که دارای بخش شناخت چهره یا تشخیص هویت و … هستند؛ (مثل سیری که یک دستیار صوتی iOS است) با استفاده از هوش مصنوعی و یادگیری ماشین توسعه پیدا کردهاند.
دادهکاوی: فرض کنید وسط جنگ جهانی دوم هستید و قرار است بعد از بررسی هزار و یک دادهی مختلف، حدس بزنید بمب بعدی در کدام قسمت شهرتان فرود میآید؛ خب بدون کامپیوتر و زبانهای کاربردی تا شما بیایید این حساب و کتابها را بکنید جنگ تمام شده است.
حالا که خدا را شکر از جنگ و بمب خبری نیست؛ برنامهنویسها و مهندسین علوم داده از پایتون برای آنالیز دادههای بزرگ یا اصطلاحا بیگ دیتا استفاده میکنند. چرا راه دور برویم؛ همین اینستاگرام برای اینکه بفهمد شما و سایر افراد از چه مطالبی خوشتان میآید تا آنها را در بخش اکسپلور به نمایش بگذارد از پایتون برای تحلیل رفتار کاربرها استفاد میکند و نتیجه هم که معلوم است؛ صفحهی اکسپلوری که هر روز با مطالب جذاب منتظرتان است.
پایتون سه نسخهی اصلی دارد. نسخهی اولش که دیگر عمرش را داده به سایر زبانهای برنامهنویسی و حتی در دورترین نقاط کهکشان هم کاربرد ندارد.
اما نسخهی دوم یا PYTHON X.2 که حوالی اکتبر ۲۰۰۰ وارد میدان شد تا همین چند سال پیش حرفهای زیادی برای گفتن داشت. از این نسخه به خاطر قدیمیتر بودنش، کتابخانههای بیشتری پشتیبانی میکنند و تا سال ۲۰۲۰ هم به طور رسمی از این نسخه پشتیبانی میشود.
نسخه سوم هم که پایتون ۳ است. بسیاری از شرکتهای بزرگ وقتی فهمیدند که python2 تا ۲۰۲۰بیشتر پشتیبانی نمیشود؛ به سمت پایتون ۳ کوچ کردند و در نتیجه میتوان گفت آیندهی بازار کار در دست ورژن سوم این زبان است.
از طرف دیگر با وجود اینکه python x.3 آمده تا مشکلات نسخهی قبلی را رفع کند، از نظر دستوری با نسخهی دوم متفاوت است و البته چون هنوز جدید است کتابخانههای کمی دارد.
نکتهی جالب ماجرا اینجاست که ساختار کدنویسی در پایتون دو و سه متفاوت است و شما نمیتوانید کدهایی را که در نسخهی دوم نوشتید در نسخهی سوم اجرا کنید.
دستورها و نحو python 3 ساختار سادهتری دارند. این نسخه در کلاس ریاضی هم قویتر از نسخهی قبلی است. مثلا اگر قرار بود نتیجه تقسیم پنج بر دو را در python2 حساب کنیم، جواب عدد دو بود. چون نسخهی دوم به شکل پیشفرض فکر میکند که پاسخ تقسیم دو عدد صحیح باید حتما یک عدد صحیح باشد و جواب را رو به پایین رند میکند (گفتیم که ریاضیاش ضعیف بود!) اما پایتون سه اتفاقا دقتش بیشتر است و وقتی ازش میپرسید پنج تقسیم بر دو چند میشود؟ مثل یک بچه درسخوان کاربلد پاسخ میدهد: دو و نیم.
حالا با این اوصاف کدام ورژن بهتر است؟
اگر میخواهید به عنوان یک توسعهدهندهی اپلیکیشن یا وب و یا نرمافزار کار کنید، خب قطعا به کتابخانههای زیادی احتیاج خواهید داشت؛ از طرف دیگر بسیاری از شرکتها و استارتاپها هنوز وفادارانه در حال سر و کله زدن با پایتون ۲ هستند؛ بنابراین خوب است که کار با پایتون دو را هم بلد باشید.
در مقابل اگر قرار است به عنوان یک مبتدی شروع به کار کنید؛ کار با پایتون ۳ هم راحتتر است و هم اول راه نیاز چندانی به کتابخانهها ندارید. از طرف دیگر python3 روز به روز در حال پیشرفت است و اگر برایش وقت کافی بگذارید قطعا در آینده موقعیت شغلی مناسبی را به عنوان یک برنامهنویس خواهید داشت.
خب قبل از هر چیز بیایید شباهتهای هر دو زبان را با هم بررسی کنیم: هر دو زبان سطح بالا و شیگرا هستند و درمیان برنامههای تفسیری قرار میگیرند.
کاربردهای پایتون همانطور که گفتیم زیاد است؛ و کدنویسها برای طراحی و توسعهی اپلیکیشنهای موبایل، بازیهای کامپیوتری، هوش مصنوعی، یادگیری ماشین و در نهایت طراحی وب به سراغش میروند.
اما php به شدت به ضربالمثل «یک کار انجام بده اما درست!» اعتقاد دارد و در نتیجه به شکل تخصصی از آن برای طراحی و توسعهی وبسایتها استفاده میشود.
از طرف دیگر یادگیری python و کدنویسی با آن بسیار ساده است. در مقابل php بسیار زیاد شبیه زبانهای خانوادهی C است و کدنویسی با آن به تلاش بیشتری نیاز دارد. البته اگر قبلا با یکی از اعضای خانوادهی C آشنا بوده باشید، یادگیری زبان php برایتان مثل آب خوردن است.
به علاوه، اگر بخواهیم یک مسابقهی دو سرعت بین دو زبان بگذاریم؛ قطعا آخرین ورژن php یعنی php7 برنده خواهد شد.
حالا وقتش است که سری به کتابخانههای دو طرف میدان بزنیم؛ بعد از کلی بررسی باید بگوییم که python به خاطر سنگ تمام گذاشتن کدنویسها در توسعهی کتابخانههایش، بدون درد و خونریزی php را شکست میدهد.
اما برای مقایسه دو زبان برنامهنویسی فاکتورهای دیگری مثل نوع دیباگرها و یا تعداد فریمورکها هم مورد بررسی قرار میگیرد. که خب اگر پایتون و php بخواهند در این موارد با هم مسابقه بدهند کار به ضربات پنالتی آن هم از نوع طولانی مدتش میرسد. چون هر دو زبان دارای فریم ورکهای قدرتمند و همچنین دیباگرهای بسیار خوبی هستند.
در نهایت برای انتخاب یکی از دو زبان بهتر است به دورنمای شغلیتان نگاهی بندازید. اگر دوست دارید به طور تخصصی در زمینهی طراحی و توسعهی وب فعالیت کنید خوب است که به سراغ php بروید. اما اگر دوست دارید در کنار توسعهی وب به حوزههایی مثل هوش مصنوعی، machine learning یا توسعهی نرمافزار هم سری بزنید، خب بهتر است از اول ماجرا کارتان را با python شروع کنید.