توسعهدهندگان شبکههای اجتماعی فیسبوک و اینستاگرام عنوان کردهاند که بخش قابلتوجهی از این شبکههای اجتماعی را با زبان برنامهنویسی #پایتون توسعه دادهاند که از جمله ویژگیهای شاخص این زبان محبوب برای توسعهدهندگان میتوان به مواردی همچون سینتکس واضح، انعطافپذیری و بهرهوری بالای دولوپرها در تولید محصول با استفاده از این زبان اشاره کرد. در عین حال، در روشهای سنتی برای نگاهداری کدبیسهای بسیار بزرگ (مثلاً میلیونها خط کد)، برخی مزایایی که به آنها اشاره شد کمرنگ میشوند!
چالشهای پروژههای عظیم نوشته شده با پایتون
دولوپرهایی که روی پروژههای بزرگی با استفاده از زبان پایتون کار میکنند، همواره با یکسری چالشها مواجه هستند که برخی از مهمترین آنها عبارتند از:
- عدم وجود تضمینی بر استاتیک تایپ بودن زبان که میتواند فرآیند ایجاد تغییر در سورسکد موجود را سخت کند و همین مسئله موجب ایجاد ارورهای بیشتر در کد میشود و در نتیجه، روند توسعه و برنامهنویسی نسبت به توسعۀ یک سورسکد استاتیک تایپ کُند میشود.
- عدم وجود ابزارهای باکیفیتی همچون ابزارهای جستجوی کد، تکمیل خودکار کد، ناوبری و همچنین ابزارهایی که از قابلیت ریفکتور کردن کدها پشتیبانی میکنند. در واقع، عدم وجود چنین ابزارهایی برای زمانی که دولوپر قصد کار با کدبیسهای بزرگ را دارا است، موجب بروز مشکلات فراوانی برای ایشان میشود.
آشنایی با ابزار اپنسورس Pyre
Pyre ابزاری است که برای مقابله با چنین مسائلی به منظور چک کردن تایپ زبان پایتون مطابق با استانداردهای PEP484 و PEP526 ارائه شده است و همچنین یک پلتفرم عالی برای ساخت ابزاری دقیق به منظور تحلیل کدهای استاتیک است.
Pyre با هدف بهبود کیفیت و سرعت توسعه در کدبیسهای بزرگ پایتون طراحی شده است. این ابزار نوع ارورهای موجود در سورسکد را به صورت تعاملی در ادیتور دولوپر مشخص میکند و همچنین به منظور Gradual Type Checking به کار میرود (Gradual Type Checking برای چک کردن نوع ارورها در کدهای تایپ استاتیک و همچنین ارورهایی که در زمان کامپایل اتفاق میافتند و مربوط به نوع برخی متغیرها و پارامترهای توابع است به کار میرود. البته Gradual Type Checking قبلاً در اسناندارد PEP484 بخشی از زبان برنامهنویسی پایتون بود.)
هدف از طراحی Pyre این است تا امکانی را برای دولوپرها فراهم کند تا یک کد پایتون قابلفهم و به اصطلاح Idiomatic بنویسند (کد Idiomatic کدی است که ویژگی خاصی از یک ساختار مشابه در یک یا چند زبان برنامهنویسی را بیان میکند و دولوپرها یک یا چند بخش کد را شناسایی کرده، آنها را باهم ادغام میکنند و به آنها معنی میدهند؛ این کد را میتوان به عنوان یک پَتِرن (الگو) در زبانهای برنامهنویسی مختلف به کار برد.)
طراحی Pyre بهگونهای است که قابلیت کار کردن موازی را دارا است و برای ارائۀ پاسخهای فوری بهینهسازی شده است به طوری که حتی در یک کدبیس بزرگ میتوانید فیدبک (بازخورد) فوری از آن را داشته باشید. همچنین در این ابزار تعریف نوع متغیرهای زبان در همۀ قسمتهای سورسکد نیاز نیست؛ در ضمن، حتی اگر کد شما به طور کامل تایپ استاتیک نیست یا اگر یک پروژهای دارید که به تدریج میخواهید تایپ آن را تغییر دهید، در این صورت هم این ابزار میتواند برای شما مفید واقع گردد.