کامپایلر جدید پایتون: Codon هم‌پای ++C/C

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

محققان کامپیوتر دانشگاه MIT، معتقدند که راهی برای فایق آمدن به این مشکل یافته­‌اند: تولید زبانی با سهولت زبان­‌های سطح بالا و سرعت زبان­‌های سطح پایین. آن­ها با توسعه یک کامپایلر زبان پایتون، به نام Codon، موفق به ترجمه کدهای این زبان به زبان ماشین، بدون افت کارآیی در زمان اجرا شده­‌اند. بنا به ادعای تیم Codon، «بهبود سرعت معمول در اجرای Single Thread بین 10 تا 100 برابر است. بازده Codon از این نظر معادل (و گاهی بهتر از) زبان­های C یا ++C خواهد بود.»

این پروژه در حال حاضر از نقاط ضعفی رنج می‌­برد؛ زبان پایتون هنوز به‌طور کامل پیاده­‌سازی نشده است. در کنار این­که برخی ماژول­‌های این زبان به Codon منتقل نشده، پیاده‌سازی بعضی قابلیت­‌ها نیز همانند Dynamic Typing و Runtime Reflection، که تحلیل کد را نیز پیچیده می‌کند، در دستور کار قرار نگرفته است. در عوض استفاده از Static Typing به همراه نوآوری­‌های دیگر، کامپایلر را قادر به تولید کد ماشین بهینه­‌تر و سریع­تر کرده است.

پروژه Codon در ابتدا به عنوان یک Framework تک منظوره با بازده بالا روی زبان پایتون متولد شد. زبان­‌های تک منظوره، برخلاف زبان‌های چند منظوره همانند C و پایتون، برای یک کار خاص طراحی می­‌شوند. (از زبان­‌های SQL و CSS می­‌توان به عنوان مثال­‌هایی از زبان­‌های تک منظوره نام برد.) Codon از زبان Seq، که زبانی تک منظوره برای ژنتیک و بیوانفورماتیک است، الهام گرفت و به زبانی بسیار شبیه به پایتون 3 تبدیل شد.

سازندگان Codon در مقاله معرفی این محصول نوشته‌اند: «برخلاف دیگر پیاده‌سازی­‌های مبتنی بر کارآیی پایتون، مانند PyPy و Numba، کامپایلر Codon به عنوان سیستمی مستقل توسعه داده شد. خروجی این کامپایلر به صورت Static تولید شده و برخلاف CPython و RPython، در زمان اجرا به Python Runtime نیازی ندارد. در نتیجه، Codon بازده بالاتری را ارایه کرده و درگیر مشکلاتی همچون Global Interpreter Lock(GIL) نخواهد بود.»

با اینکه طراحان Codon از قابلیت­‌های آن به عنوان یک زبان تک منظوره در حوزه­‌های فشرده‌سازی داده­‌ها، بیوانفورماتیک و برنامه‌نویسی موازی تعریف کرده و به آن می­‌بالند، اما باید توجه داشت که دیگر برنامه­‌های تحت پایتون نیز از بهبودهای Codon بهره خواهند برد. از سوی دیگر، استفاده از کتابخانه­‌های خارجی، همانند Django و DocUtils نیازمندCPython خواهد بود که محدودیت در بازده اجتناب‌ناپذیر خواهد بود. این تفاوت به حدی چشمگیر است که در Codon Forum، برنامه­‌نویسان اذعان دارند که محاسبه سری فیبوناچی تحت Codon، تا 70 برابر سریع­تر از نسخه CPython بوده است.

استاد دانشگاه MIT و محقق ارشد CSAIL، سامان آماراسینگ، در مصاحبه­ خود در MIT News تصریح کرده است که پایتون بیشتر توسط متخصصان حوزه­‌های مختلف به کار گرفته می‌­شود و نه برنامه‌­نویسان حرفه­‌ای! قدر مسلم، هدف این متخصصان بهبود سرعت و کارآیی برنامه‌­ها نیست.

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

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