وقتی یه صفحه React تبدیل به یه تابع ریاضی میشه
خلاصهٔ کاملتر
تو این پروژه، یه صفحه پروژهها که یه کامپوننت معمولی React به اسم ProjectsPage هست، به یه تابع ریاضی خالص تبدیل شده: UI = f(props). خروجی این تابع، جای دقیق و اندازه هر کارت تو صفحهست. نویسنده میگه وقتی صفحه به ریاضی تبدیل شد، کل ابزارهای ریاضی هم همراهش میان.
مثلا میشه از تابع مشتق گرفت تا طراحی رو برای همه دستگاهها یکجا تنظیم کرد. میشه براش کران (bound، یعنی حد بالا و پایین مقدارها) پیدا کرد تا یه قانون رو برای همه عرضهای صفحه اثبات کرد. میشه نقطههایی که چیدمان یهو میپره رو پیدا کرد، روی دستگاههای واقعی انتگرال گرفت، مثل یه سیگنال فشردهش کرد، یا نرمش کرد تا خودش انیمیشن بسازه. حتی میشه پرسید صفحه تو یه عرض موهومی چه شکلیه.
روش ساختش اینه: صفحه یه بار به شکل یه لیست صاف از عملیات نوشته میشه، بدون هیچ شرط یا حلقهای. این ایده از پروژه chenglou/handwired اومده. هر عملیات یا یه جمع وزندار هست، یا ضرب، یا ReLU (یعنی تابعی که مقدارهای منفی رو صفر میکنه)، یا یه تابع پلهای. هر if تبدیل به یه پله میشه که هر دو نتیجه رو با هم ترکیب میکنه، و Math.max هم تبدیل به ReLU میشه.
تعداد ستونها هم جمع چند تا پلهست، یکی برای هر تعداد ممکن. چیدمان برای همه حالتها حساب میشه و بعد بر اساس اینکه کدوم روشنه با هم ترکیب میشن. شکستن متن به خط بعد هم برای هر خط یه پله داره: برای هر پیام commit یه عرضی هست که پایینتر از اون، یه خط دیگه لازمه.
پس تابع f تکهتکه نرمه و همون لیست عملیات رو میشه به چهار شکل اجرا کرد: دقیق، با جایگزین کردن هر پله با sigmoid (یه منحنی نرم به جای پله)، با مشتقگیری forward-mode، و با حساب بازهای (interval arithmetic، یعنی کار با بازه به جای یه عدد). ابزارهای پروژه از ترکیب همین چهار حالت ساخته شدن.
نکات کلیدی:
- صفحه به شکل UI = f(props) تبدیل به یه تابع ریاضی خالص شده
- فقط چهار نوع عملیات داره: جمع وزندار، ضرب، ReLU و تابع پلهای
- هر if به پله و Math.max به ReLU تبدیل میشه
- فعلا صفحه دستی به این شکل نوشته میشه و ابزاری برای تبدیل خودکار React یا HTML نیست
- متن با فونت monospace و بر اساس تعداد کاراکتر شکسته میشه، نه با اندازهگیری متن رندرشده
- اثباتها برای حساب دقیق درستن و خطای گرد کردن floating point رو حساب نمیکنن




