Paper Programs: اجرای برنامه‌های نوشته شده با JavaScript از روی کاغذ

Paper Programs: اجرای برنامه‌های نوشته شده با JavaScript از روی کاغذ

Paper Programs (برنامه‌های نوشته شده روی کاغذ) یک سیستم مبتنی بر مرورگر است و برنامه‌های جاوااسکریپت را بر روی کاغذ اجرا می‌کند. برای شروع کار، به سخت‌افزارهایی مانند پروژکتور و دوربین و یک میز نیاز است! برنامه‌های نوشته‌شده روی کاغذ این امکان را برای کاربران فراهم می‌کنند تا بتوانند صفحاتی که توسط سیستم شناسایی‌ شده‌اند را اجرا کرده و پرینت کنند.

Jan Paul خالق این برنامه‌ها، برخی از دلایل خود برای ایجاد آن‌ها را چنین عنوان کرده‌ است:

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

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

در مقابل، Dynamicland یک شبکهٔ اجتماعی است که مشابه Realtalk طراحی‌شده است. Realtalk یک سیستم عملیاتی تحقیقاتی است؛ چندین سال پیش توسعه‌ یافته است و هدف آن انجام محاسبات در دنیای واقعی و به‌صورت فیزیکی است.

Dynamicland حالت عمومی‌تری نسبت به Paper Programs دارد و به‌عنوان یک رسانهٔ جدید برای ارتباطات انسانی و یادگیری و آموزش ایشان به‌صورت جلسات حضوری و نه اینترنتی طراحی‌ شده است.

Paper Programs چگونه کار می‌کنند؟
برنامه‌ها با استفاده از Node.js و PostgreSQL بر روی سرور سایت PaperPrograms.org ذخیره می‌شوند؛ هر برنامه یک شماره دارد که نقاط روی کاغذ آن شماره را اِنکد می‌کنند. هر گوشه به‌طور منحصربه‌فردی با 5 نقطه و 5 رنگ یکتا شناسایی می‌شود؛ یعنی هر کاربر می‌تواند حدود 600 کاغذ یکتا داشته باشد.

دوربین نقاط را شناسایی کرده و برنامه مربوط به هر کاغذ را بازیابی می‌کند. این کار روی مرورگر با استفاده از OpenCV کامپایل شده به زبان WebAssembly انجام می‌شود (همچنین می‌توان از کد جاوااسکریپت شخصی‌سازی‌ شده برای انجام این کار استفاده کرد). کالیبراسیون آن هم به‌صورت عملی و با استفاده از UI تعریف‌ شده در React انجام می‌شود. در نهایت، کد برنامه و تنظیمات آن در حافظهٔ لوکال مرورگر ذخیره می‌شوند.

برنامه‌نویسی و اجرای برنامه‌ها در یک پنجرهٔ مرورگر جداگانه انجام می‌شوند. برنامه‌ها به‌صورت غیر هم‌زمان در Web Worker اجرا شده و می‌توانند درخواست دسترسی به یک Canvas یا مختصات برنامه‌های دیگر را بدهند (به عبارت دیگر، برنامه درخواست دسترسی به برنامهٔ دیگر یا فراخوانی یک برنامه دیگر را دارا است).

در نهایت یک صفحهٔ ادیتور وجود دارد که هر کاربر با یک لپ‌تاپ یا تبلت می‌تواند برنامه‌ها را با استفاده از Monaco ویرایش کند. هنگام ایجاد یک برنامهٔ جدید، می‌توانید دکمهٔ پرینت را بزنید تا یک کاغذ جدید پرینت شود. متن برنامه روی کاغذ پرینت می‌شود و شما می‌توانید روی آن برنامه را اجرا کنید.

اگر علاقه‌مند به مشارکت در پروژهٔ Paper Programs هستید، می‌توانید به ریپازیتوری گیت‌هاب Paper Programs مراجعه نمایید.



اکرم امراه‌نژاد