کارشناس ارشد عملیات پایگاه داده داتین
کامپایلر جدید پایتون: 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 برای این زبان پیادهسازی شود.
مطلبی دیگر از این انتشارات
هوش مالی، راهکار گذر از روزهای سخت
مطلبی دیگر از این انتشارات
پول، اقتصاد و دیگر هیچ
مطلبی دیگر از این انتشارات
چالشهای مهاجرت دادههای سامانههای بانکداری مدرن بانکهای ادغامی