۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه تبدیل پایتون به جاوا اسکریپت (و دوباره برگشت)

پایتون را دوست دارید؟ جاوا اسکریپت، نه خیلی؟ در اینجا هفت ابزاری وجود دارد که پایتون را برای استفاده در برنامه های وب به جاوا اسکریپت تبدیل می کند.

پایتون را دوست دارید؟ جاوا اسکریپت، نه خیلی؟ در اینجا هفت ابزاری وجود دارد که پایتون را برای استفاده در برنامه های وب به جاوا اسکریپت تبدیل می کند.

پایتون یا جاوا اسکریپت؟ در حالی که ما هنوز بر سر اینکه کدام یک دست برتر یا آینده روشن‌تر را دارد بحث می‌کنیم، تردیدی در مورد مالکیت صفحه اصلی وب وجود ندارد. تا زمانی که WebAssembly به مرحله ای برسد که بتوانیم زبان های دیگر را به صورت شفاف برای استفاده در مرورگر کامپایل کنیم، جاوا اسکریپت در مرورگر باشد یا هیچ.

خب، شاید نه هیچ چیز. جاوا اسکریپت یک زبان هدف مورد علاقه برای “ترانسپایلرها” است که یک زبان برنامه نویسی را به زبان دیگر تبدیل می کند (نگاه کنید به: TypeScript، Emscripten< /a>، خوشحال، Cor). و پیروان بسیار زیاد پایتون و کتابخانه‌های موجود فراوان، آن را به یک کاندیدای عالی برای تبدیل شدن، یعنی تبدیل به جاوا اسکریپت تبدیل می‌کند.

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

برایتون

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

Brython نسخه ای از Python 3 را برای برنامه نویسی وب سمت سرویس گیرنده از طریق یک کتابخانه جاوا اسکریپت پیاده سازی می کند که همه کلمات کلیدی و بسیاری از موارد داخلی را برای Python 3 شبیه سازی می کند. اسکریپت های نوشته شده در Python می توانند مستقیماً در یک صفحه وب گنجانده شوند. Brython یک رابط سطح بالا ماژول Python (بسته browser) را برای تعامل با DOM (مدل شیء سند) و مرورگر ارائه می‌کند و تمام کارهایی که معمولاً مستقیماً در جاوا اسکریپت انجام می‌شود را مدیریت می‌کند.

بسیاری از نمونه‌های کد زنده و یک گالری برنامه های کوچک نشان می دهد که چگونه همه کار می کند. حتی می توان از Brython برای نوشتن یک برنامه بومی Android  در پایتون عملکرد Async در دسترس است، اگرچه باید به جای asyncio پایتون از ماژول async برایتون استفاده کنید.

Brython از محدودیت های اعمال شده بر جاوا اسکریپت در مرورگر فرار نمی کند. برای مثال، هیچ پشتیبانی برای رسیدگی به سیستم فایل محلی وجود ندارد. با این حال، پشتیبانی برای استفاده از حافظه محلی HTML5 وجود دارد، اگر تنها چیزی که نیاز دارید این است راهی برای تداوم داده ها بر اساس هر برنامه.

جنکینز چیست؟ سرور CI توضیح داد

جاوااسکریپتون

جاوا اسکریپتون به شدت بر ترجمه کدهای Python 3.5 و نسخه‌های بعدی به جاوا اسکریپت تمرکز می‌کند، بدون اینکه سعی در ارائه کامل کدها داشته باشد. پشتیبانی در مرورگر طبق پروژه هایی مانند Brython. برای به حداقل رساندن نیاز به polyfills در سمت مرورگر، کد ES6 را منتشر می کند و با حفظ نقشه های منبع، با ابزارهایی مانند Webpack به خوبی بازی می کند.

بیشتر کلیدواژه‌ها و رفتارهای رایج پایتون پشتیبانی می‌شوند، از جمله async و await، رشته‌های f Python 3.6 و روش‌ها و وراثت‌های کلاس پایتون. همچنین می‌توانید جاوا اسکریپت را به صورت درون خطی از طریق یک فراخوانی تابع خاص وارد کنید، در صورتی که نیاز دارید مستقیماً به جاوا اسکریپت بروید.

توجه داشته باشید که آخرین التزام به پروژه جاوا اسکریپتون در ژوئیه ۲۰۲۲ بود، اگرچه برای پشتیبانی از Python 3.10 به عنوان آخرین نسخه آن به روز شده است.

Jiphy

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

قبل از اینکه وارد شوید و شروع به تبدیل همه OpenStack به جاوا اسکریپت کنید، توجه داشته باشید: Jiphy در مورد تبدیل کامل پایگاه کد نیست. در عوض، همانطور که README می‌گوید، عملکرد آن «کاهش سوئیچینگ زمینه لازم برای یک توسعه‌دهنده پایتون برای نوشتن کد جاوا اسکریپت و بالعکس» است.

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

توجه داشته باشید که پروژه Jiphy از اواسط سال ۲۰۲۰ به‌روزرسانی نشده است. Jiphy باید کاملاً تجربی در نظر گرفته شود تا زمانی که کار روی آن از سر گرفته شود.

JS2Py

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

نحوه کار با فیلترهای نقطه پایانی در ASP.NET Core 7

JS2Py از تعامل متقابل زیادی بین پایتون و جاوا اسکریپت پشتیبانی می کند. می‌توانید ماژول‌های Node.js موجود را در کد پایتون خود با استفاده از روش js2py.require وارد کنید. متغیرهای سمت جاوا اسکریپت را می توان در سمت پایتون ارزیابی کرد و اشیاء پایتون را می توان از کد جاوا اسکریپت نیز استفاده کرد.

JS2Py همچنین دارای یک ماشین مجازی بسیار آزمایشی است که کد جاوا اسکریپت را از پایتون ارزیابی می‌کند، اما هنوز برای استفاده در تولید توصیه نمی‌شود.

RapydScript

RapydScript “به شما این امکان را می‌دهد تا برنامه جاوا اسکریپت خود را به زبانی بسیار نزدیک‌تر به پایتون بنویسید، بدون نیاز به هزینه سایر فریم ورک های مشابه معرفی می شوند. این پروژه شبیه به CoffeeScript است که کدهای نوشته شده به یک زبان جایگزین – در این مورد، طعم پایتون – را جذب می‌کند و جاوا اسکریپت را تولید می‌کند که می‌تواند در هر کجا که هست اجرا شود.

بنابراین RapydScript بهترین‌های هر دو جهان را ارائه می‌کند، و سینتکس تمیز پایتون را به قابلیت‌های جاوا اسکریپت مانند توابع ناشناس، دستکاری DOM، و توانایی استفاده از کتابخانه‌های جاوا اسکریپت مانند jQuery یا Node.js می‌رساند. درست است—شما می توانید از کدهای تولید شده توسط Rapydscript برای هدایت صفحات وب یا برنامه های Node استفاده کنید.

یکی دیگر از ویژگی‌های راحت RapydScrypt: هر دو نامگذاری پایتون و جاوا اسکریپت را برای عملیات در صورت امکان ارائه می‌کند. برای مثال، نماد ویژه $ که توسط jQuery استفاده می‌شود در RapydScript همانطور که هست کار می‌کند، و آرایه‌ها می‌توانند هم از .push (جاوا اسکریپت) و هم .append متدهای (پایتون). با این حال، این پروژه از ماه می ۲۰۲۱ به روز نشده است، بنابراین باید آزمایشی در نظر گرفته شود.

PyScript

مانند Brython که از برخی از فناوری های زیرین استفاده می کند، PyScript به پایتون اجازه می دهد تا مستقیماً در مرورگر اجرا شود. PyScript از Pyodide، یک زمان اجرا پایتون که به WebAssembly منتقل شده است تا مرورگر را به محیطی مهمان نوازتر برای اجرای Python به عنوان یک زبان برنامه نویسی وب تبدیل کند.

PyScript امکان ارتباط دو طرفه بین محیط‌های JavaScript و Python را فراهم می‌کند. به عنوان مثال، اسکریپت‌های پایتون می‌توانند با Document Object Model کار کنند، کد جاوا اسکریپت را فراخوانی کنند و با نتایج بازگردانده شده از آن کار کنند. اما برنامه های پایتون می توانند از مرورگر به عنوان دستگاه خروجی نیز استفاده کنند. به عنوان مثال، دستور print() را می‌توان برای نوشتن خروجی مستقیم در یک صفحه وب استفاده کرد، تقریباً به همان روشی که خروجی را در کنسول چاپ می‌کنیم.

PyScript همچنین راه‌هایی برای کار با بسته‌های موجود در فهرست بسته PyPI ارائه می‌کند، اگرچه ممکن است همه آن‌ها آنطور که در نظر گرفته شده است رفتار نکنند. به عنوان مثال، PyScript هنوز با کتابخانه درخواست‌ها یا سایر ابزارهای پایتون برای کار با درخواست‌های HTTP کار نمی‌کند. با این حال، PyScript پوشش‌هایی را برای روش fetch جاوا اسکریپت برای انجام همان وظایف فراهم می‌کند.

رمزگذاری

اگر نام Transcrypt را می شنوید و به TypeScript فکر می کنید، دور از انتظار نیستید. Transcrypt از همان ایده اصلی پیروی می کند - Python را به جاوا اسکریپت تبدیل می کند. همچنین سعی می‌کند تا جایی که ممکن است، ساختار و اصطلاحات کد اصلی پایتون، از جمله ساختارهایی مانند لامبدا و وراثت چندگانه در بین کلاس‌ها را حفظ کند.

علاوه بر این، می‌توان نقشه‌های منبع را برای کدهای انتقال‌یافته که به پایتون اصلی برمی‌گردد تولید کرد، بنابراین توسعه‌دهندگان می‌توانند با استفاده از آن کد به جای جاوا اسکریپت تولید شده، اشکال‌زدایی کنند. طبق مستندات، Transcrypt این کارها را با ماژول Abstract Syntax Tree CPython انجام می دهد، که امکان دسترسی برنامه نویسی به روشی که Python کد خود را تجزیه می کند.

یکی از بزرگترین مزایای Transcrypt دسترسی خودکار به Document Object Model است. برای مثال، اگر سعی کنید به document.getElementById در پایتون دسترسی پیدا کنید، کد تبدیل شده از document.getElementById در جاوا اسکریپت استفاده می کند. برای برنامه نویسانی که می خواهند از چارچوب ها برای دستکاری DOM استفاده کنند، یک کتاب آنلاین آموزش های گام به گام برای استفاده از Transcrypt را ارائه می دهد. برنامه های جاوا اسکریپت را با استفاده از کتابخانه های React و Material-UI بنویسید.

یک پروژه مرتبط، و هنوز به شدت در دست بررسی است، Numscrypt است که پورت می‌کند کتابخانه ریاضی و آمار NumPy به جاوا اسکریپت. تاکنون Numscrypt تنها زیرمجموعه‌ای از ویژگی‌های NumPy را ارائه می‌دهد، اگرچه این ویژگی‌ها (مانند ریاضیات ماتریسی) از رایج‌ترین موارد استفاده شده هستند. با این حال، Numscrypt از سال ۲۰۲۱ به‌روزرسانی نشده است.