پایتون (Python) چیست؟

پایتون (Python) چیست؟

پایتون (Python) چیست؟


پایتون (Python) در لغت به معنای افعی، یک زبان برنامه‌نویسی همه منظوره، سطح بالا، شیءگرا، اِسکریپتی و متن‌باز است که توسط «خیدو فان راسام (به هلندی: Guido van Rossum)» در اواخر دهه ۱۹۸۰ (میلادی) و در مؤسسه ملی تحقیقات ریاضی و رایانه (CWI) در کشور هلند طراحی شد. همچنین، پایتون پروژه‌ای آزاد و Open Source توسعه‌یافته‌است و توسط بنیاد نرم‌افزار پایتون مدیریت می‌گردد.

photo_2016-12-05_20-31-59

هدف خَودو ایجاد جانشینی برای زبان برنامه‌نویسی «ای‌بی‌سی» بود که قابلیت پردازش استثناها را داشته باشد. خَودو طراح اصلی پایتون است و نقش مداوم او در تصمیم گیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان (Benevolent Dictator For Life) را بدهد.

  • پایتون یک زبان اسکریپتی است؛ یعنی در لحظه (Runtime) و توسط یک مفسر (Interpreter) پردازش شده و نیازی نیست که برنامه قبل از اجرا کامپایل شود.
  • فلسفه‌ی  ایجاد پایتون، تاکید بر دو هدف اصلی: خوانایی بالای برنامه‌های نوشته شده و کوتاهی و بازدهی نسبی بالای آن است.
  • کلمات کلیدی و اصلی این زبان به صورت حداقلی تهیه شده‌اند.
  • کتابخانه‌های (Library) نوشته شده برای این زبان برنامه‌نویسی بسیار وسیع می‌باشند.

پایتون برای ایجاد برنامه‌های کاربردی در زمینه‌های متعدد، برنامه‌های تحت وب، اسکریپت‌نویسی، محاسبات علمی استفاده شده و حتی هوش‌مصنوعی را می توان با آن انجام داد. این زبان برنامه‌نویسی توسط شرکت‌های بزرگی از جمله Google و NASA و CIA و Disney هم استفاده می‌شود.

برخلاف برخی از زبان‌های برنامه‌نویسی رایج دیگر که بلاک‌های کد در بین دو آکولاد تعریف می‌شوند (به‌ویژه زبان‌هایی که از گرامر زبان سی پیروی می‌کنند)، در زبان پایتون از نویسه‌ی فاصله و جلوبردن متن کد، برای مشخص کردن بلاک‌های کد استفاده می‌شود! به این معنی که تعدادی یکسان از نویسه‌ی فاصله در ابتدای سطرهای هر بلاک قرار گرفته و این تعداد در بلاک‌های کد درونی‌تر افزایش می‌یابد. بدین ترتیب بلاک‌های کد به صورت خودکار ظاهری مرتب دارند.

پایتون مدل‌های مختلف برنامه نویسی (از جمله شیء گرا و برنامه نویسی دستوری و تابع محور) را پشتیبانی می‌کند و برای مشخص کردن نوع متغییرها از یک سامانه‌ی پویا استفاده می‌کند.

این زبان از زبان‌های برنامه‌نویسی مفسر بوده و به صورت کامل یک زبان شی‌گرا است که در ویژگی‌ها با زبانهای تفسیری پرل، روبی، اسکیم، اسمال‌تاک و تی‌سی‌ال مشابهت دارد و از مدیریت خودکار حافظه استفاده می‌کند.

این زبان برنامه‌نویسی با داشتن کتابخانه های گسترده، روشهای بسیار قدرتمند و حرفه‌ای را برای کار با زبان‌ها و ابزارهای مختلف به آسانی فراهم می‌کند. کدهای نوشته شده در این زبان در محدوده وسیعی از پلتفرم‌ها مانند لینوکس، ویندوز، مک، و حتی گوشی‌های موبایل قابل اجرا است.

یادگیری پایتون!

یادگیری پایتون ساده است

یادگیری کم‌دردسر پایتون به برنامه‌نویسان تازه‌کار اجازه داده است با صرف کمی وقت اصول اولیه این زبان را یاد بگیرند و اولین برنامه کاربردی خود را با این زبان طراحی کنند. این زبان به گونه‌ای ساخته شده است که ترکیب نحوی آن کاملاً خوانا است و برنامه‌نویسان بدون مشکل خاصی قادرند منطق دستورات را به‌شکل صریح و روشنی درک کنند و برای همکاران خود شرح دهند.

سادگی، خوانایی و دور بودن از پیچیدگی‌های رایج باعث شده است تا پایتون به گزینه ایده‌آلی برای تدریس در مدارس و مراکز آموزشی تبدیل ‌شود. همین سادگی و دور بودن از پیچیدگی‌ها است که باعث شده است پایتون اولین انتخاب برنامه‌نویسانی باشد که تازه به دنیای برنامه‌نویسی قدم گذاشته‌اند. تسلط بر زبان پایتون به‌معنای آن است که طراحان می‌توانند زمان بیشتری را برای فکر کردن درباره یک مشکل و پیدا کردن راه‌ حلی برای آن صرف و در مقابل زمان کمتری برای فکر کردن در مورد ترکیب نحوی و پیچیدگی‌های دستورات این زبان صرف کنند. همچنین، زمانی که یک برنامه به ‌طور کامل نوشته شد، طراحان با صرف کمترین زمان ممکن می‌توانند منطق به کار گرفته در کدها را برای دیگران تشریح کنند، به‌دلیل آنکه همه چیز روشن و گویا است.


پایتون یک زبان چسبنده است

کدهای پایتون خاصیت چسبندگی دارند، به‌ طوری که در بعضی موارد از زبان پایتون به‌عنوان یک زبان چسبنده (Glue language) نام برده می‌شود. زبان پرل نیز چنین ویژگی را دارد. این ویژگی به شما اجازه می‌دهد کدهای متفاوت را به یکدیگر وصل کنید. (به طور معمول کتابخانه‌هایی با رابط‌های زبان سی) از این تکنیک در زمینه علم داده‌ها و یادگیری ماشینی استفاده می‌شود.

حالا که به توانایی‌های زبان پایتون اشاره کردیم، بد نیست به یکسری کارهایی که پایتون قادر به انجام آن‌ها نیست یا بهتر است در انجام چنین کارهایی از پایتون استفاده نشود نیز اشاره‌ای داشته باشیم. پایتون یک زبان برنامه‌نویسی سطح بالا است، در نتیجه برای برنامه‌نویسی‌های سطح سیستمی همچون درایورنویسی یا هسته‌ سیستم‌ عامل‌ها مناسب نیست. همچنین، ایده جالبی نیست زمانی که به‌دنبال فراخوانی کتابخانه‌های چندسکویی هستید از پایتون استفاده کنید. می‌توانید برنامه‌های مستقل پایتون را برای سکوهای ویندوز، مک و لینوکس طراحی کنید، اما کار چندان ساده‌ای نیست و در بعضی موارد خروجی ممکن است مطابق میل شما نباشد. سرانجام زمانی که سرعت یکی از اولویت‌های اصلی برنامه کاربردی است که به‌دنبال ساخت آن هستید، نباید به سراغ پایتون بروید. در چنین شرایطی بهتر است از گزینه‌های شناخته شده‌ای همچون سی یا سی پلاس پلاس استفاده کنید.


آیا زبان پایتون به‌لحاظ سرعت کند است؟

یکی از نکات رایجی که در ارتباط با پایتون وجود دارد مبحث کند بودن آن است. این موضوع تا حدودی صحت دارد. برنامه‌های نوشته شده با پایتون در مقایسه با برنامه‌هایی که به زبان‌های سی، سی پلاس پلاس و جاوا نوشته می‌شوند عمدتاً کندتر اجرا می‌شوند. اما سؤال این است که چرا این برنامه‌ها کند هستند؟
بسیاری بر این باورند که مشکل کند بودن به دلیل آن است که محیط‌های زمان اجرای پایتون مبتنی بر مفسر هستند و اگر از کامپایلر استفاده شده بود مشکل کندی برطرف می‌شد، اما این تمام ماجرا نیست.
پویایی ذاتی و انعطاف‌پذیری اشیا در پایتون باعث شده است تا فرآیند بهینه‌سازی سرعت به‌سختی امکان‌پذیر باشد. با وجود این، مبحث سرعت مشکل بزرگی نیست که پایتون را تحت‌الشعاع خود قرار دهد. به‌واسطه آنکه راهکارهایی برای حل این مشکل وجود دارد. پایتون راهکارهای مختلفی برای بهینه‌سازی سرعت در اختیار دارد.
اگر گفته می‌شود که یک برنامه نوشته شده با پایتون کند است، به‌معنای آن نیست که این برنامه تا آخرین روزهای حیاتش کند خواهد بود. بیشتر برنامه‌های پایتون کند هستند، به‌واسطه آنکه ممکن است از کتابخانه‌های استاندارد پایتون استفاده نکرده یا به‌درستی از ویژگی‌های موجود در پایتون بهره نبرده‌ باشند.
عملیات ریاضی و آماری می‌توانند از طریق کتابخانه‌هایی همچون NumPy و Pandas و محیط زمان اجرای PyPy سریع‌تر شوند و به‌شکل قابل توجهی سرعت برنامه‌های پایتون را افزایش دهند. درنهایت اگر به‌دنبال داده‌کاوی داده هستید، بهتر است از زبان پایتون
غافل نشوید.

نسخه‌های اولیه

در سال ۱۹۹۱ فان روسوم کدی با برچسب نسخه ۰٫۹٫۰ را منتشر کرد. البته در این مرحله از پیشرفت کلاس‌هایی با خاصیت ارث بری، پردازش استثنا، توابع و انواع داده list, dict, str وجود داشت. همچنین در این نسخه ابتدایی یک سیستم ماژول با اقتباس از ماژول-۳ وجود داشت، که فان روسوم این ماژول را به عنوان «یکی از واحدهای عمده برنامه‌نویسی پایتون» توصیف کرد. مدل استثناء پایتون نیز شباهت‌هایی به ماژول-۳ داشت، که به آن شرط else افزوده شده بود. در سال ۱۹۹۴ اولین مجمع مباحثه پیرامون پایتون شکل گرفت که مرحله برجسته‌ای در پیشرفت کاربری پایتون بود.

نسخه ۱٫۰

  • پایتون در ژانویه ۱۹۹۴ به نسخه ۱٫۰ رسید.
  • خصوصیات عمده جدید این نسخه شامل ابزارهای برنامه نویسی تابعی lambda, map, filter, reduce بود.
  • پایتون نسخه ۱٫۲ در سال ۱۹۹۵، زمانیکه خَودو در CVVI بود، ارائه شد.
  • خَودو به فعالیت‌های خود روی پایتون در مؤسسه ملی تحقیقات و ابتکارات (CNRI) در رستون ادامه داد و در همان‌جا چندین نسخه جدید انتشار یافت.
  • در نسخه ۱٫۴ به پایتون چندین ویژگی جدید اضافه شد.
  • از ویژگی‌های جالب توجه در میان این اضافات می‌توان به الهام گرفتن از آرگومان‌های کلیدی ماژول-۳ (که خود از آرگومان‌های کلیدی لیسپ الهام گرفته بود) و همچنین پیشتیبانی اعداد مختلط اشاره کرد.
  • در مدت فعالیت فان روسوم در CNRI، او پروژه «برنامه نویسی کامپیوتر برای هر کس» (CP4E) را ایجاد کرد تا برنامه نویسی را در دسترس افراد بیشتری که اطلاعات پایه‌ای برای برنامه نویسی (برای مثال توانایی در زبان انگلیسی و مهارتهای اولیهٔ ریاضی) را دارند، قرار دهد.
  • زبان برنامه‌نویسی پایتون به دلیل تمرکزش بر روی پاکسازی فرم دستوراتش، نقش مرکزی را ایفا کرد.
  • این پروژه توسط دارپا سرمایه‌گذاری شد واز سال ۲۰۰۷ غیر فعال شد.

متن باز و آزاد بودن

  • در سال ۲۰۰۰ تیم توسعه دهنده پایتون به BeOpen.com منتقل شد و بدین صورت تیم کتابخانه باز پایتون شکل گرفت.
  • به پیشنهاد CNRI ورژن ۱٫۶ساخته شد، بدین ترتیب برنامه‌های تولید شده برای ۱٫۶و ۲٫۰اشتراک‌های قابل توجهی داشتند.
  • فقط پایتون ۲٫۰ توسط BeOpen.com طراحی شده بود.
  • بعد از تولید پایتون ۲٫۰ توسط BeOpen.com، خَودو و دیگر توسعه دهندگان کتابخانه پایتون به ایجاد دیجیتال روی آوردند.
  • تولید پایتون ۱٫۶ شامل جواز جدید CNRI بود که به طور قابل توجهی طولانی تر از جواز CWI (که برای تولیدات قبلی استفاده شده بود) بود.
  • بنیاد نرم‌افزار آزاد توضیح داد که انتخاب شرط قانون با GNU GPL ناسازگار بود.
  • BeOpen CNRI و FSF تغییراتی را در جواز پایتون ایجاد کردند که با GPL سازگار باشد.
  • پایتون ۱٫۶٫۱ عمدتاً مشابه پایتون ۱٫۶ است فقط با کمی اشکال، و با جواز سازگار با GPL.

نسخه ۲٫۰

  • پایتون ۲٫۰ فهرستی از ویژگی‌هایی را که از زبان‌های برنامه نویسی تابعی ستل و هسکل اقتباس شده بود، معرفی کرد.
  • حو پایتون برای این ساختار (جدا از برتری هسکل برای کاراکترهای نقطه گذاری و کلمات الفبا) بسیار مشابه هسکل بود.
  • پایتون ۲٫۰ همچنین یک سیستم بازیافت حافظه با قابلیت جمع‌آوری منابع معرفی کرد.
  • پایتون ۲٫۱ به پایتون ۱٫۶٫۱ و ۲٫۰ نزدیک بود.
  • جواز آن به جواز مؤسسه نرم‌افزار پایتون تغییر نام یافت.
  • همه کدها، اسناد و مشخصات اضافه شده را از زمان تولید الفبای پایتون ۲٫۱ توسط مؤسسه نرم‌افزار پایتون (PFS) دارا شد.
  • یک سازمان غیر انتفاعی در سال ۲۰۰۱ تشکیل شد که از مؤسسه نرم‌افزار آپاچی مدل گرفته بود.
  • تولیدات شامل تغییراتی در خصوصیات زبان در پوشش حوزه‌های تو در تو بود، مشابه دیگر زبان‌های حوزه‌ای ایستا.
  • (این خصوصیات دوباره از بین رفتند و به پایتون ۲٫۲ منتقل نشدند) یک تغییر بزرگ در پایتون ۲٫۲ یکسان‌سازی انواع داده‌ای پایتون و کلاس‌ها به یک سلسله مراتب بود.
  • این یکسان‌سازی اشیاء پایتون را کاملاً شیء گرا کرد.

میراث جاوا

انتخاب نحو و ضمایم کتابخانه استاندارد پایتون شدیداً وابسته به بعضی موارد در جاوا بود: بسته logging در ورژن ۲٫۳، تجزیه کننده SAX در ورژن ۲٫۰ و ساختمان‌های نحو که در ورژن ۲٫۴ اضافه شد.

توسعه خصوصیات

  • یک طرح افزایش (PEP) در پایتون یکنواخت کردن اسنادی است که اطلاعات عمومی ای را که پایتون را شرح می‌دهند تولید می‌کنند؛
  • شامل پیشنهادات، توصیف‌ها و توضیح‌ها برای خصوصیات زبان.
  • PEP در نظر داشت همانند روش‌های اولیه، برای پیشنهاد خصوصیات جدید و نیز برای مستندسازی طرح‌های اساسی، هر عامل بزرگ در پایتون را توضیح دهد.
  • طرح‌های برجسته توسط van Rossum تجدید نظر شده و توضیح داده شدند.

پایتون ۳

  • پایتون ۳٫۰ با همان فلسفه ورژن‌های قبل، در حال توسعه یافتن است، بنابراین هر منبعی در فلسفه پایتون، در پایتون ۳٫۰ به خوبی ظاهر خواهد شد.
  • اگر چه، همان‌طور که پایتون روش‌های جدید در برنامه ریزی را جمع‌آوری کرده، پایتون ۳٫۰ تأکید زیادی بر از بین بردن ساختارها و ماژول‌های تکراری دارد:
  • «باید یک – و ترجیحاً فقط یک – روش بدیهی برای انجام آن وجود داشته باشد.»
  • با این وجود پایتون ۳٫۰ به ساختار زبان چند نمونه‌ای ادامه خواهد داد.
  • کد نویس‌ها همچنان اختیارات شیء گرایی، برنامه نویسی ساخت یافته، برنامه نویسی تابعی و دیگر نمونه‌ها را دارند، اما در انتخاب‌های وسیع، جزئیات در پایتون ۳٫۰ آشکار تر از پایتون سری ۲.x هستند.

سازگاری و همزمانی

  • اولین کاندید پایتون ۳٫۰ در ۱۷سپتامبر ۲۰۰۸منتشر شد.
  • پایتون سری ۲.x و ۳.x به طور موازی با هم وجود خواهند داشت، جایی که سری ۲.x سازگاری بیشتری دارد، به جای سری ۳.x مورد استفاده قرار خواهد گرفت.
  • PEP ۳۰۰۰ اطلاعات بیشتری را در مورد فهرست نشریات دارا ست.
  • پایتون ۳٫۰ سازگاری قبل را نقض خواهد کرد.
  • الزامی ندارد که کدهایی که با پایتون ۲.x اجرا می‌شوند، برای پایتون ۳٫۰ بدون تغییر اجرا شوند.
  • چون تغییرات اساسی بین این دو ورژن وجود دارد مثل اختلاف در حالت پرینت (بنابراین هر استفاده از پرینت به عنوان توضیح باعث شکست برنامه می‌شود) نوع پویای پایتون با طرح‌های تغییر معنای روش‌های خاص دیکشنری ترکیب می‌شود، به عنوان مثال، انتقال مکانیکی بی نقص از پایتون ۲.x به پایتون ۳٫۰ را بسیار دشوار می‌کند.
  • اگرچه ابزاری به نام «۲to۳» بسیاری از این وظایف انتقال را انجام می‌دهد، اما باید توجه داشت که استفاده از توضیحات یا اخطارها با ابهام همراه است.
  • البته در یک مرحله از الفبا، ۲to۳ انتقال را حقیقتاً کامل انجام می‌دهد.
  • PEP ۳۰۰ پیشنهاد می‌کند که یک منبع نگه داشته شود (برای سری ۲.x)، و نسخه‌ای بر مبنای پایتون ۳٫۰ با استفاده از ۲to۳ تولید شود. کدهای نتیجه شده نباید تصحیح شوند، مگر اینکه کدی طولانی تر از محدوده سری ۲.x باشد.
  • پایتون ۲٫۶ شامل خصوصیات سازگاری مستقیم است، به طوری که یک روش اخطار (warning) به صورت خودکار به مسائل انتقال هشدار می‌دهد. هشدارها باید برای تشخیص خطا گزارش داده شوند، مشابه خصوصیات ورژن‌های قبلی پایتون.
  • (برای اطلاعات بیشتر به PEP ۳۶۱ رجوع کنید)

خصوصیات: فهرست برخی از تغییرات عمده پایتون ۳٫۰:

  • تغییر پرینت چون یک تابع غیرقابل انتقال است نه یک توضیح. این باعث می‌شود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظم تر می‌شود. در پایتون ۲٫۶ این امکان با تایپ کردن from – future – import print – function فراهم شد.
  • اضافه شدن حمایت از یادآوری تابع انتخابی که می‌تواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود.
  • یکسان کردن تایپ str/Unicode، به نمایندگی از یک متن، و معرفی یک تایپ byte تغییر ناپذیر؛ با یک تایپ مطابق با bytearray تغییر پذیر، که هر دو آرایه از بایت را ارائه می‌کنند.
  • از بین بردن خصوصیات سازگاری معکوس، شامل کلاس‌های به فرم قبل، قسمت کردن اعداد صحیح، استثناءهای رشته‌ای، و گزارش‌های نسبتاً نا آشکار.

پایتون 2 در مقابل پایتون 3

در حال حاضر، دو نسخه از زبان پایتون در اختیار برنامه‌نویسان قرار دارد. هریک از این دو نسخه ویژگی‌های خاص خود را دارند. پایتون نسخه 2.X نسخه قدیمی‌تر است و پشتیبانی رسمی و عرضه به‌روزرسانی‌ها برای این نسخه تا سال 2020 ادامه خواهد داشت. حتی این احتمال وجود دارد که پس از این تاریخ نیز به‌صورت غیررسمی از این نسخه پشتیبانی به عمل آید. نسخه 3.X نسخه جدیدتر است که یکسری ویژگی‌های مفید و البته مهم دارد.

پایتون یک زبان برنامه‌نویسی سطح بالا است، در نتیجه برای برنامه‌نویسی‌های سطح سیستمی همچون درایورنویسی یا هسته‌ سیستم‌ عامل‌ها مناسب نیست

ویژگی‌هایی که در نسخه 2.x وجود ندارند. مفسران کارآمدتر و کنترل‌های هم‌روندی بهتر از جمله این ویژگی‌ها هستند. اگر در گذشته برای نوشتن یک برنامه هم‌روند در پایتون با مشکل روبه‌رو بودید، نسخه 3.x این مشکل شما را برطرف کرده است. با وجود این، پذیرش پایتون3 به‌آرامی انجام گرفت، در نتیجه پشتیبانی از یکسری کتابخانه‌های بخش ثالث روند نسبتاً کندی داشته است. اغلب کتابخانه‌های پایتون تنها در نسخه 2 پشتیبانی می‌شوند که همین موضوع سوئیچ کردن به نسخه 3 را با دشواری همراه می‌سازد. اما در چند سال گذشته، تعداد کتابخانه‌هایی که تنها در نسخه 2 پشتیبانی می‌شدند رو به افول نهاده است و اکثر این کتابخانه‌ها با هر دو نسخه سازگاری دارند. در مقطع فعلی به دلایل مختلفی می‌توان اشاره کرد که مهاجرت به پایتون 3 را توجیه‌پذیر می‌سازند.

کاربرد

پایتون از جمله زبان‌های برنامه‌نویسی قدرتمندی است که در زمینه علم داده‌ها، یادگیری ماشینی، خودکارسازی سامانه‌ها، توسعه وب، واسط‌های برنامه‌نویسی و… به کار گرفته می‌شود.

سازمان‌های بزرگی که از پایتون استفاده می‌کنند، شامل گوگل، یاهو، سرن و ناسا هستند. ITA نیز از پایتون برای بعضی از اجزای خود استفاده می‌کند.

  • امنیت اطلاعات
    پایتون همچنین استفاده وسیعی از صنعت ایمنی اطلاعات می‌کند. مثلاً در چندین ابزار پیشنهاد شده توسط تأمین امنیت و امنیت مرکزی و اسکنر امنیت کاربردی وب واپیتی. پایتون معمولاً در توسعه کاربرد مورد استفاده قرار می‌گیرد.
  • جاسازی
    پایتون با موفقیت در تعدادی از تولیدات نرم‌افزاری مثل زبان فایل آغاز گر تعبیه شده‌است. پایتون معمولاً در بسته‌های انیمیشن ۳D استفاده می‌شود، مانند Houdini, Maya, Softimage XSI, TrueSpace, Poser, Modo, Nuke, Blender. GIMP, کریتا, Inkcape, Scribus, Paint Shop Pro ESRI هم اکنون در حال ترقی دادن پایتون به عنوان بهترین انتخاب برای نوشتن فایل آغازگر در ArcGIS است. همچنین در بازی‌ها استفاده می‌شود، مانند Civilization IV و Mount&Blade به عنوان زبان کنترل برای نمایش و عکس العمل حوادث.
  • مقبولیت
    در بسیاری از سیستم‌های عملیاتی، پایتون یک جزء استاندارد است؛ چون با بیشتر بخش‌های لینوکس انتقال داده می‌شود و روی NetBSD و OpenBSD و Mac OS X هم قابل نصب است. ردهت لینوکس و فدورا هر دو از نصب کننده پایتونی آناکوندا استفاده می‌کنند. لینوکس Gentoo از پایتون در سیستم مدیریت بسته، حمل و ابزارهای دستیابی خود استفاده می‌کند. Pardus از آن برای مدیریت و در طول راه‌اندازی سیستم استفاده می‌کند.

پایتون به‌شکل گسترده‌ای به کار گرفته شده و پشتیبانی می‌شود

پایتون دو ویژگی یک زبان خوب یعنی محبوبیت و کاربرد گسترده را توأمان با یکدیگر در اختیار دارد. کافی است به آمارهای منتشر شده از سوی منابع معتبری همچون Tiobe و پروژه‌هایی که روی سایت گیت‌هاب قرار گرفته و با پایتون نوشته شده‌اند نگاهی داشته باشید تا متوجه شوید این زبان تا چه اندازه نزد طراحان محبوب است. (شکل 1) برنامه‌های نوشته شده با پایتون روی سیستم‌ عامل‌ها و سکو‌های اصلی و سیستم ‌عامل‌های خاص‌تر به‌خوبی اجرا می‌شوند. بخش اعظمی از کتابخانه‌های بزرگ و سرویس‌های مبتنی بر API به اشکال مختلفی پیوندهای مرتبط با پایتون را در خود جای داده‌اند، به ‌طوری که به پایتون اجازه داده‌اند از طریق واسط‌ها با این سرویس‌ها ارتباط برقرار یا به‌طور مستقیم از کتابخانه‌ها استفاده کند. در حالی که پایتون را در گروه سریع‌ترین زبان‌های برنامه‌نویسی نمی‌توان قرار داد و شاید کند بودن نقطه ضعف اصلی این زبان به شمار می‌رود، اما در مقابل تطبیق‌پذیری بسیار بالایی دارد. پایتون زبانی نیست که برای انجام کارهای عادی و پیش پا افتاده مورد استفاده قرار گیرد. از این زبان به‌منظور ساخت برنامه‌های کاملاً حرفه‌ای با کیفیت بالا، برنامه‌های مستقل و سرویس‌های وب می‌توان استفاده کرد. اسکریپت‌هایی که با این زبان نوشته می‌شوند، به‌سادگی قادرند فرآیندهای بزرگی را مدیریت و خودکارسازی کنند.


پایتون برای انجام چه کارهایی مورد استفاده قرار می‌گیرد؟

پایتون یک زبان برنامه‌نویسی چندمنظوره و شی‌گرا است که برای توسعه سایت‌های پویا، تحلیل داده‌ها و نوشتن برنامه‌های دسکتاپ می‌توان از آن استفاده کرد. اما اساسی‌ترین کاربرد پایتون در ارتباط با اسکریپت‌نویسی و خودکارسازی است. پایتون تنها یک جایگزین برای اسکرپیت‌های شل یا فایل‌های دسته‌ای نیست، به‌واسطه آنکه از پایتون برای تعامل خودکار با مرورگرهای وب، برنامه‌های گرافیکی و پیکربندی سیستم‌ها از طریق ابزارهایی همچون Salt و Ansible می‌توان استفاده کرد.


از پایتون در ارتباط با برنامه‌نویسی‌های عادی و رایج نیز می‌توان استفاده کرد

طراحان و توسعه‌دهندگان نرم‌افزار این توانایی را دارند تا هر دو گروه برنامه‌های کنسولی و گرافیکی را با پایتون ایجاد و آن‌ها را به‌شکل خوداجرا مستقر کنند. پایتون به طور ذاتی این توانایی را ندارد تا یک فایل‌ باینری مستقل را از یک اسکریپت‌ ایجاد کند. اما پکیج‌های ثالثی شبیه به cx_Freeze یا PyInstaller این کاستی پایتون را جبران کرده‌اند.


زبان پایتون در ارتباط با یادگیری ماشینی و علم داده‌ها نیز به کار گرفته می‌شود

در چند سال اخیر فرآیند تجزیه و تحلیل داده‌های مرتبط با فناوری اطلاعات بیش از اندازه پیچیده شده است، به همین دلیل پایتون و در تعقیب آن زبان آر به ستارگان یکه‌تاز این میدان تبدیل شده‌اند. با توجه به محبوبیت بیش از اندازه زبان پایتون امروزه شاهدیم که طیف گسترده‌ای از کتابخانه‌های مورد استفاده در یادگیری ماشینی و علم داده‌ها یک واسط‌ یا به عبارت دقیق‌تر رابط‌های ویژه زبان پایتون را ارائه کرده‌اند.


پایتون در ارتباط با وب سرویس‌ها و توابع RESTful نیز به کار گرفته می‌شود

کتابخانه‌های محلی پایتون به‌همراه چهارچوب‌های وب بخش ثالث سریع‌ترین و راحت‌ترین راهکار را در اختیار طراحان وب قرار داده‌اند تا بدون دردسر خاصی بتوانند توابع REST چندخطی یا یک سایت داده‌محور مملو از اطلاعات را با استفاده از پایتون طراحی کنند. REST (سرنام Representational State Transfer) یک معماری وب سرویس است که از پروتکل HTTP برای انتقال اطلاعات میان کلاینت و سرور استفاده می‌کند. جدیدترین نگارش‌های عرضه شده از پایتون به‌شکل قدرتمندی از عملیات غیرهم‌زمان پشتیبانی می‌کند. پشتیبانی از عملیات غیرهم‌زمان به‌معنای آن است که سایت‌ها قادرند ده‌ها هزار درخواست در هر ثانیه را از طریق کتابخانه‌های درستی که مورد استفاده قرار می‌دهند مدیریت کنند.


پایتون در ارتباط با برنامه‌نویسی Metaprogramming به کار گرفته شود

اصطلاح Metaprogramming به‌معنای نوشتن برنامه‌ای است که قادر است فرآیندهای خواندن، تحلیل و ساخت سایر برنامه‌ها و حتی خود را در زمان اجرا مدیریت کند. در زبان پایتون هرچیز همچون ماژول‌های پایتون و حتی خود کتابخانه‌ها به‌عنوان یک شی در نظر گرفته می‌شوند. این رویکرد به پایتون اجازه می‌دهد به‌شکل کارآمدتری کدها را تولید کند. در نتیجه امکان ساخت برنامه‌هایی که قادر باشند توابع خود را دستکاری کنند و نوعی فرآیند توسعه را امکان‌پذیر سازند، در پایتون وجود دارد. رویکردی که پیاده‌سازی آن در زبان‌های دیگر کار بسیار مشکل و در بعضی موارد غیرممکن است.

پیاده‌سازی

مسیر اصلی پیاده‌سازی پایتون، که با عنوان سی پایتون نیز شناخته می‌شود، در نشست C در استاندارد C۸۹ نوشته شد. سی پایتون برنامه‌های پایتون را به کد بایت تبدیل می‌کند، که سپس توسط ماشین مجازی اجرا می‌شود. سی پایتون با یک کتابخانه استاندارد بزرگ که به صورت مخلوطی از C و پایتون نوشته شده، توزیع شده‌است. سی پایتون در ورژن‌های مختلف برای پایگاه‌های زیادی کار می‌کند، شامل مایکروسافت ویندوز و بیشتر سیستم‌های پیشرفته یونیکس. استفاده و توسعه آن روی پایگاه‌های محرمانه مانند Amoeba، در کنار پایگاه‌های متداول مانند یونیکس یا مکینتاش، به‌طور عمده در این نظر کمک شده‌است.

پایتون بدون پشته، انشعابی از سی پایتون است که ریز برنامه‌ها را اجرا می‌کند؛ و از پشته حافظه استفاده نمی‌کند. سی پایتون از GIL استفاده می‌کند تا وقتی برنامه پایتون بدون پشته، وابسته به OS است و می‌تواند به صورت هم‌زمان اجرا شود، در هر لحظه فقط به یک زیر برنامه اجازه اجرا داده شود. پایتون برای استفاده در میکرو کنترلرها یا وظایف محدود دیگر پایگاه‌های مرجع، متناسب تر است. پیش‌بینی می‌شود که پایتون بدون پشته بتواند تقریباً روی همان پایگاهی که سی پایتون اجرا می‌شود، اجرا شود.

جایتون (به انگلیسی: Jython) برنامه‌های پایتون را به کد بایت جاوا کامپایل می‌کند، که بدین ترتیب می‌تواند با هر ماشین مجازی جاوا اجرا شود؛ و همچنین این امکان فراهم می‌شود که توابع کتابخانه‌ای کلاس جاوا از برنامه پایتون به کار گرفته شود. آی رون پایتون از همین شیوه برای اجرای برنامه‌های پایتون روی چارچوب دات‌نت استفاده می‌کند.

پای پای (به انگلیسی: PyPy) یک پیاده‌سازی تجربی از پایتون است که می‌تواند چندین تایپ از کد بایت را تولید نماید.

چندین برنامه در بسته مفسر پایتون با برنامه‌های کاربردی (یا آغازگر) وجود دارد که مستقلاً اجرا می‌شوند مانند یونیکس، لینوکس، ویندوز، AmigaOS ۴ یا Mac OS X. بسیاری از کتابخانه‌های سه قسمتی (و حتی بعضی از یک قسمتی‌ها) فقط روی ویندوز، لینوکس، BSD و Mac OS X موجود هستند.

در نوکیا ۲۰۰۵ یک مفسر پایتون برای موبایل‌های سری ۶۰ با نام PyS۶۰ تولید شد که شامل بسیاری از ماژولها از سی پایتون بود، و همچنین برخی ماژول‌های اضافه شده برای یکپارچه شدن با سیستم‌عامل. این پروژه به منظور اجرا روی همه پایگاه‌های مختلف S۶۰، به روز نگاه داشته می‌شود.

همچنین مفسری به نام پایتون سی ای برای ابزار ویندوز CE (شامل بسته PC) وجود دارد؛ که در آن ابزارهایی برای اجرای آسان و توسعه GUI اضافه شده‌است. اطلاعات بیشتر را می‌توانید روی وب‌گاه PythonCE بیابید.

پایتون چینی زبان برنامه‌نویسی پایتونی است که از لغت‌نامه زبان چینی استفاده می‌کند. در کنار کلمات رزرو شده و نام متغیرها، بیشتر عمل گرهای تایپ داده، در چینی می‌توانند به خوبی کد دهی شوند.

کتابخانه استاندارد

پایتون یک کتابخانه استاندارد بزرگ دارد، که از آن به عنوان یکی از بزرگ‌ترین توانایی‌های پایتون یاد می‌شود؛ مشروط به این‌که ابزارهای از پیش نوشته شده، با بسیاری از وظایف سازگار باشد.

ماژول‌های کتابخانه استاندارد می‌توانند به شیوه ماژول‌های نوشته شده در سی یا پایتون آرگومان‌دهی شوند. اخیراً کتابخانه‌های C++ به یک کتابخانه به نام Boost.Python رشد یافته‌است؛ برای ایجاد قابلیت همکاری بین C++ و پایتون. به دلیل تنوع گسترده در ابزارهای تولید شده توسط کتابخانه استاندارد، این کتابخانه با توانایی استفاده یک زبان سطح پایین ترکیب شده، مثل C و C++، که البته به عنوان واسط بین کتابخانه‌های دیگر است، پایتون می‌تواند یک واسط قوی بین زبان‌ها و ابزارها باشد.

کتابخانه استاندارد با تعداد زیاد فرمت‌ها و پروتکل‌هایی که حمایت می‌کند (مانند MIME و HTTP)، خصوصاً برای نوشتن علائم اینترنت مناسب است. ماژول‌ها برای ایجاد واسط کاربر گرافیکی، به پایگاه داده مربوطه متصل می‌شود، محاسبات را با دقت دلخواه اعشاری انجام می‌دهد، و عبارت‌های منظم را دستکاری می‌کند.

پایتون همچنین یک واحد تست مدیریت پایگاه داده برای تست کردن رشته‌ها دارد. بعضی از قسمت‌های کتابخانه استاندارد با مشخصات پوشانده شده، اما اکثریت ماژول‌ها این‌گونه نیستند. آن‌ها از طریق کدها، اسناد داخلی، و دنباله تستشان (اگر موجود باشد) تعیین می‌شوند. اگرچه، به دلیل اینکه اکثر کتابخانه‌های استاندارد، کد پایتون مربوط به پایگاه را دارند، فقط ماژول‌های اندکی هستند که باید تغییر داده شوند یا مجدّداً با یک پیاده‌سازی دیگر نوشته شوند.

واسط گرافیکی (UI)

برای پایتون واسط گرافیکی کاربر بسیاری نوشته شده‌است که پرکاربردترین آن‌ها به شرح زیر می‌باشند:

  • تکینتر (Tkinter)
    به صورت پیش‌فرض همراه با نسخه‌های استاندارد پایتون ارائه می‌شود و یک رابط شیءگرا برای ابزار Tcl/Tk در محیط پایتون فراهم می‌کند)
  • پای‌کیوت (PyQt)
  • PyGTK
  • wxPython
  • pyFLTK
  • FXpy
  • PyOpenGL

جوانب مثبت و منفی زبان پایتون

ترکیب نحوی پایتون کاملاً خوانا و تمیز است. به ‌طور مثال، نوشتن یک برنامه استاندارد Hello world در نسخه 3.x این زبان به دور از هرگونه کد اضافی به‌صورت (”!print(“Hello world نوشته می‌شود. پایتون عناصر نحوی زیادی را ارائه می‌کند که در مدت زمان اجرای یک برنامه می‌توان از آن‌ها استفاده کرد. به‌ طور مثال، برنامه ساده زیر را در نظر بگیرید که برای خواندن خطوط موجود در یک فایل متنی داخل یک شی List نوشته شده است.

with open(‘myfile.txt’) as my_file:
     file_lines = [x.strip(‘\n’) for x in my_file]

ساختار with/as از جمله اشیای زبان پایتون به شمار می‌رود که به قابلیت Context manager تجهیز شده است. این ساختار راهکار کارآمدی برای تعریف یک شی تخصیص داده شده به یک بلوک از کدها و سپس آزاد کردن شی از بلوکی که به آن تخصیص داده شده است را ارائه می‌کند. در این مثال، شی my_file از طریق تابع open معرفی شده است. همان ‌گونه که مشاهده می‌کنید، در پایتون اغلب کارها با حداقل کدنویسی به سرانجام می‌رسند. در مثال فوق، به‌جای آنکه به چند خط کدنویسی برای باز کردن یک فایل، خواندن خطوط مختلف و درنهایت بستن فایل نیاز داشته باشید، تنها از طریق دو خط این کارها را انجام دهید.
این تکنیک در مقایسه با به‌کارگیری بلوک Try-finally ساده‌تر بوده و از خوانایی بیشتری برخوردار است. ساختار [x … for x in my_file] یکی دیگر از تکنیک‌های مختص پایتون است. این ترکیب نحوی به یک عنصر تخصیص داده شده که شامل عناصر دیگری است اجازه می‌دهد (در این مثال my_file و خطوطی که همراه با آن هستند) که تکرار شده و به عناصر تکرارشونده نیز (در این مثال x) اجازه می‌دهد که پردازش شده و به‌ طور خودکار به داخل فهرست اضافه شوند. همانند هر زبان دیگری امکان انجام این کار از طریق یک حلقه for…. نیز امکان‌پذیر است، اما پایتون به شما اجازه می‌دهد کارها را با کمترین پیچیدگی و بالاترین خوانایی انجام دهید. شبیه به زبان‌های دیگری همچون جاوا، سی شارپ و گو، زبان پایتون برای مدیریت حافظه از تکنیک Garbage collections استفاده می‌کند. در نتیجه برنامه‌نویس در زمان نوشتن اشیا و آزادسازی اشیا دغدغه‌‌ای نخواهد داشت. به‌طور معمول، فرآیند Garbage collection در پس زمینه و به‌شکل خودکار انجام می‌شود. اما اگر مشکلی در این زمینه به وجود آید، برنامه‌نویس می‌تواند این فرآیند را به‌طور دستی مدیریت کند. یکی دیگر از ویژگی‌های جالب پایتون پویایی این زبان است. هر چیزی در این زبان همچون توابع و خود ماژول‌ها به‌عنوان یک شی شناخته و مدیریت می‌شوند. در حالی که این تکنیک تا حدودی سرعت را قربانی می‌کند، اما در مقابل اجازه می‌دهد کدهای سطح بالا را به‌سادگی بنویسید. این تکنیک نه‌تنها به طراحان اجازه می‌دهد اشیای پیچیده را به‌سادگی و از طریق تنها چند دستورالعمل مدیریت کنند، بلکه به آن‌ها اجازه می‌دهد بخش‌هایی از برنامه را در صورت لزوم به‌شکل انتزاعی تعریف کنند. شاید یکی از بهترین یا بدترین ویژگی‌های زبان پایتون در ارتباط با فضای سفید است. توررفتگی‌ها و رفتن به خطوط دوم در زبان پایتون تنها برای خوانایی برنامه نیست.
فضای سفید یکی از اصلی‌ترین بخش‌های ترکیب نحوی پایتون به شمار می‌رود. مفسران زبان پایتون برنامه‌هایی را که به‌شکل درستی از دندانه‌‌گذاری به‌منظور نشان دادن جریان کنترل برنامه استفاده نکرده باشند رد می‌کنند.

برنامه‌هایی که کاملاً یا بخشی از آن‌ها با پایتون نوشته شده‌است

  • اینستاگرام (Instagram): نرم‌افزار اشتراک‌گذاری تصاویر و ویدیوها -> البته منظور سمت سرور اینستاگرام می‌باشد.
  • بیت‌تورنت (نرم‌افزار) (BitTorrent): نرم‌افزار کلاینت برای فایل‌های به اشتراک گذاشته شدهٔ (p2p) توسط پروتکل بیت‌تورنت.
  • بلندر (Blender): یک نرم‌افزار ۳ بعدی و اپن سورس بسیار معروف.
  • چندلر (Chandler): مدیر اطلاعات شخصی شامل تقویم، میل، کارهای روزانه، یادداشت‌ها و…
  • Civilization IV: یک گیم کامپیوتری بر مبنای پایتون که از boost.python استفاده می‌کند.
  • میلمن (Mailman): یکی از معروفترین نرم‌افزارهای مرتبط با ایمیل.
  • کمبیلو (Kombilo): مدیر پایگاه داده و مرورگر بازی‌های go
  • موین‌موین (MoinMoin): یکی از قدرتمندترین و معروفترین ویکی‌های موجود.
  • پلون (Plone): یک ابزار مدیریتی محتوایی اپن سورس، قدرتمند و کاربر پسند.
  • پورتاژ (Portage): قلب توزیع جنتو. یک مدیر بستهای سیستم لینوکس.
  • زوپ (zope): یک پلتفورم شیء گرای مبتنی بر وب. زوپ شامل یک سرور نرم‌افزار به همراه پایگاه داده شیء گرا و یک رابط مدیریتی درونی مبتنی بر وب می‌باشد.
  • اس‌پی‌ای (SPE): یک IDE رایگان، اپن سورس برای سیستم‌عامل‌های ویندوز، لینوکس، مک که از wxGlade (طراحی رابط کاربر)، PyChecker (دکتر کد) (Blender(3D پشتیبانی می‌کند.
  • یام (Yum): یک برنامه مدیریت بسته متن‌باز برای توزیع‌های سازگار با آرپی‌ام.
  • آباکوس(Abaqus):نرم‌افزار شبیه‌سازی با روش المان محدود که امکان اسکریپت‌نویسی به زبان پایتون را به کاربر می‌دهد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک