Telegram Web
▫️شرکت LG قرار هست که در آینده از فریمورک فلاتر برای توسعه اپلیکیشن‌های  تلویزیون‌های هوشمند خودش استفاده بکنه
طبق بررسی که انجام دادند دو برابر افزایش سرعت و کاهش مصرف حافظه روی پلتفرم WebOS داشتند

🌐 اصل خبر

⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
This media is not supported in your browser
VIEW IN TELEGRAM
▫️انجام چالش ۲۴ ساعت کدنویسی

#فلاتر #برنامه_نویسی
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
4000 آیکون در فلاتر

▪️ وبسایت hugeicons به تازگی پکیج مخصوص فلاتر هم منتشر کرده که به طیف عظیمی از آیکون های متنوع دسترسی خواهید داشت.

🌐 لینک پکیج

نحوه استفاده:
HugeIcon(
icon: HugeIcons.strokeRoundedHome01,
color: Colors.red,
size: 30.0,
)





⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
نحوه استفاده از Enum در برنامه نویسی فلاتر و دارت

▪️انواع شمارشی (که به آنها enum یا enumeration نیز گفته می‌شود) نوعی خاص از کلاس در زبان برنامه نویسی دارت هستند که برای نمایش تعداد ثابتی از مقادیر ثابت استفاده می‌شوند. البته در اکثر زبان ها نیز وجود دارند.

به عبارت دیگر، با استفاده از enum می‌توانید دسته‌ای از مقادیر مرتبط را که نمی‌توانند تغییر کنند، تعریف کنید.

🌐 کاربرد و نحوه استفاده از Enum در برنامه نویسی فلاتر و زبان دارت


⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
▫️در قالب چندتا پست نحوه اجرا شدن برنامه های دارت و فلاتر میخوایم بررسی کنیم تا با کارکرد #کامپایلر دارت بیشتر آشنا بشیم.

این از پست ها قسمت اول هست

⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
محیط اجرایی دارت VM, امکان اجرای مستقیم کدهای دارت از روی فایل منبع خام را ندارد و در عوض انتظار داره که یک فایل باینری dill که شامل ساختار درختی سریال سازی شده Dart AST کرنل هست را بهش بدیم.
وظیفه تبدیل کد منبع دارت به ساختار درختی کرنل برعهده قسمت مشترک پیش پردازنده ( CFE) است که به زبان دارت نوشته شده

⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
برای حفظ راحتی انجام این تبدیل ها برنامه اجرایی دارت از یک Isolate جدا به نام Kernel service استفاده میکند و نتیجه آن تبدیل به کد باینری میشود سپس محیط اجرایی فایل باینری کرنل تولید شده را اجرا میکند


⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
اما در فلاتر قضیه کمی متفاوت هست و کامپایل شدن برنامه و اجرا شدن روی دوتا ماشین مختلف انجام میشود.
کامپایل روی دستگاه توسعه دهنده یا میزبان و اجرا روی دستگاه هدف انجام میشود که باینری کرنل را از فلاتر دریافت میکند.

اما در این قسمت فلاتر خود کد دارت را تجزیه نمیکند بلکه از یک فرایند به نام frontend_server که یک پوشش روی CFE هست برای تبدیل های خاص فلاتر از کرنل به کرنل استفاده میکند.
فرآیند frontend_server زمانی اهمیت پیدا میکند که درخواست Hot Reload را به کار میبریم.
در این حالت frontend_server میتواند از وضعیت CFE در کامپایل قبلی استفاده مجدد بکند و فقط کتابخانه هایی را که واقعا تغییر کرده اند دوباره کامپایل کند.



⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
آموزش برنامه نویسی فلاتر Flutter
دسترسی به محیط توسعه IDX برای همه فراهم شد برای استفاده دارد وبسایت زیر بشید 🌐 Idx.google.com
قرار هست به زودی اندروید استودیو هم روی محیط IDX اجرا بشه و نیازی به استفاده از کد ادیتور قبلی ندارید.
برای اینکه وارد لیست انتظار بشید فرم زیر و پر کنید:

🌐 ثبت نام


⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
اعلام وضعیت

⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
▫️ اگر دوست دارید تقریبا هر تکنولوژی های مختلفی و با زبان های برنامه نویسی متفاوت پیاده سازی کنید این مخزن گیتهاب گنجینه مفیدی برای شماست.
برای مثال چجوری یک دیتابیس یا حتی سیستم عامل از صفر طراحی کنید.

🌐 https://github.com/codecrafters-io/build-your-own-x

⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
▪️ در ابتدا، به جای اینکه بدنه توابع یا کلاس ها به طور کامل کامپایل و اجرا شوند، یک جایگذار (placeholder) دارند که به متد LazyCompileStub اشاره می‌کند.

منطق کار به این صورت هست که تنها زمانی قطعه کد از حالت سریالیزه خارج میشود که در زمان اجرا به آن نیاز باشد و فعلا فقط امضای آنها خوانده میشود.

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

وقتی تابع برای اولین بار کامپایل می‌شود، کامپایلر غیر بهینه‌ این کار را انجام می‌دهد. کامپایلر غیر بهینه‌ساز کد ماشین را در دو مرحله تولید می‌کند


⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
آموزش برنامه نویسی فلاتر Flutter
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
مرحله 1)
AST سریالیزه شده بدنه تابع برای تولید گراف جریان کنترل (CFG) برای بدنه تابع پیمایش می‌شود. CFG شامل بلوک‌های پایه پر شده با دستورالعمل‌های زبان میانی (IL) است.
دستورالعمل‌های IL استفاده شده در این مرحله شبیه دستورالعمل‌های یک ماشین مجازی مبتنی بر پشته هستند: آن‌ها عملوندها را از پشته می‌گیرند، عملیات را انجام می‌دهند و سپس نتایج را به همان پشته اضافه میکنند

مرحله 2)
در ادامه نتیجه CFG تبدیل به چند دستورالعمل IL میشود تا آنها نیز به دستور العمل های کد ماشین تبدیل شوند, نوع تبدیل ها یک به چند است
در این مرحله هیچ بهینه‌سازی انجام نمی‌شود.
هدف اصلی کامپایلر غیر بهینه‌ساز تولید سریع کد اجرایی است.

اما برای انجام کامپایل بهینه چه کاری انجام میشود؟


⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
آموزش برنامه نویسی فلاتر Flutter
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
🔰 کامپایلر بهینه‌ساز به ترجمه IL غیر بهینه‌سازی به IL بهینه شده مبتنی بر تخصیص ایستای منفرد (SSA) ادامه می‌دهد و با انجام یک سری توالی های پیش بینی سعی میکند دستور العمل بعدی را تخمین بزند و این کار در ترکیب با بهینه سازی های کلاسیک استفاده میکند.

در نهایت، IL بهینه شده با استفاده از تخصیص ثبات , اسکن خطی و کاهش ساده یک به چند دستورالعمل IL به کد ماشین کاهش می‌یابد

پس از تکمیل کامپایل، کامپایلر پس‌زمینه از رشته متغیر mutator thread می‌خواهد وارد یک نقطه امن شود و کد بهینه شده را به تابع ضمیمه کند.
بار بعدی که این تابع فراخوانی می‌شود، از کد بهینه شده استفاده خواهد کرد.

برخی از توابع شامل حلقه‌های بسیار طولانی هستند و برای آن‌ها منطقی است که اجرای را از کد غیر بهینه شده به کد بهینه شده در حالی که تابع هنوز در حال اجرا است تغییر دهید.
این فرآیند جایگزینی روی پشته (OSR) نامیده می‌شود



⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
2025/07/09 21:30:51
Back to Top
HTML Embed Code: