نمای کلی Microsoft Power FX

  • 2022-07-1

Power FX یک زبان کم کد است که در پلت فرم Power Microsoft استفاده خواهد شد. این یک زبان برنامه نویسی با هدف کلی ، قوی ، اعلام کننده و کاربردی است.

Power FX در متن دوستانه انسان بیان شده است. این یک زبان کم کد است که سازندگان می توانند مستقیماً در یک نوار فرمول مانند اکسل یا پنجره متن کد استودیو Visual Code کار کنند."کم" در کد کم به دلیل ماهیت مختصر و ساده زبان است و کارهای برنامه نویسی مشترک را هم برای سازندگان و هم برای توسعه دهندگان آسان می کند. این طیف کامل توسعه را از بدون کد برای کسانی که قبلاً برنامه ریزی نکرده اند به "کد طرفدار" برای حرفه ای فصلی ، بدون یادگیری یا بازنویسی صخره ها در بین ، امکان پذیر می کند ، تیم های متنوعی را قادر می سازد تا در زمان و صرفه جویی در وقت و هزینه.

  • Microsoft Power FX نام جدید زبان فرمول برای برنامه های بوم در برنامه های برق است. این مرور کلی و مقالات مرتبط یک کار در حال انجام است زیرا ما زبان را از برنامه های بوم استخراج می کنیم ، آن را با سایر محصولات پلت فرم Microsoft Power ادغام می کنیم و آن را به عنوان منبع باز در دسترس قرار می دهیم. برای کسب اطلاعات بیشتر در مورد و تجربه زبان امروز ، شروع را با فرمول در برنامه های بوم در مستندات برنامه های Power Apps شروع کنید و برای یک آزمایش برنامه Power Power ثبت نام کنید.
  • در این مقاله ، ما به سازندگان اشاره می کنیم وقتی ویژگی ای را توصیف می کنیم که ممکن است در هر دو انتهای طیف مهارت برنامه نویسی استفاده شود. اگر این ویژگی پیشرفته تر باشد و احتمالاً فراتر از محدوده یک کاربر معمولی اکسل است ، ما به عنوان یک توسعه دهنده به کاربر مراجعه می کنیم.

Power FX اشیاء را به همراه فرمول های صفحه گسترده اعلامی متصل می کند. به عنوان مثال ، به خاصیت قابل مشاهده یک کنترل UI به عنوان یک سلول در یک برگه اکسل ، با یک فرمول مرتبط فکر کنید که مقدار آن را بر اساس خواص سایر کنترل ها محاسبه می کند. منطق فرمول مقدار را به طور خودکار محاسبه می کند ، مشابه نحوه عملکرد یک صفحه گسترده ، که بر دید کنترل تأثیر می گذارد.

همچنین ، Power FX در صورت لزوم منطق ضروری را ارائه می دهد. برگه ها به طور معمول دکمه هایی ندارند که می توانند تغییراتی را در یک پایگاه داده ارائه دهند ، اما برنامه ها اغلب انجام می شوند. همان زبان بیان برای منطق اعلانی و ضروری استفاده می شود.

Power FX به عنوان نرم افزار منبع باز در دسترس خواهد بود. در حال حاضر در برنامه های بوم ادغام شده است ، و ما در حال استخراج آن از برنامه های برق برای استفاده در سایر محصولات پلت فرم Microsoft Power و به عنوان منبع باز هستیم. اطلاعات بیشتر: Microsoft Power FX در GitHub

این مقاله مروری بر زبان و اصول طراحی آن است. برای کسب اطلاعات بیشتر در مورد Power FX ، به مقاله های زیر مراجعه کنید:

به صفحه گسترده فکر کنید

چه می شود اگر بتوانید یک برنامه را به آسانی بسازید که یک برگه در اکسل بسازید؟

اگر بتوانید از دانش صفحه گسترده خود استفاده کنید ، چه می کنید؟

این سؤالاتی بود که الهام بخش ایجاد برنامه های قدرت و Power FX بود. صدها میلیون نفر هر روز با اکسل کار می کنند. بیایید آنها را ایجاد برنامه آسان کنیم و از مفاهیم اکسل که قبلاً می دانند استفاده می کند. با شکستن Power FX از برنامه های برق ، ما می خواهیم به این سؤالات برای اتوماسیون ساختمان ، یا یک عامل مجازی یا دامنه های دیگر پاسخ دهیم.

تمام زبانهای برنامه نویسی ، از جمله Power FX ، عباراتی دارند: راهی برای نشان دادن محاسبه بر روی اعداد ، رشته ها یا سایر انواع داده ها. به عنوان مثال ، شتاب جرم * در اکثر زبانها ، ضرب توده و شتاب را بیان می کند. نتیجه یک عبارت را می توان در یک متغیر قرار داد ، که به عنوان یک آرگومان برای یک روش استفاده می شود ، یا در یک بیان بزرگتر قرار می گیرد.

Power FX این قدم را یک قدم جلوتر می برد. یک بیان به خودی خود چیزی در مورد آنچه محاسبه می کند نمی گوید. این سازنده است که آن را در یک متغیر قرار دهد یا آن را به یک عملکرد منتقل کند. در Power FX ، به جای نوشتن عبارتی که معنای خاصی ندارد ، فرمولی می نویسید که عبارت را به یک شناسه متصل می کند. شما نیرو = جرم * شتاب را به عنوان فرمول محاسبه نیروی می نویسید. با تغییر جرم یا شتاب ، نیرو به طور خودکار به یک مقدار جدید به روز می شود. این عبارت یک محاسبه را توصیف کرد ، یک فرمول به آن محاسبه یک نام داد و از آن به عنوان دستور العمل استفاده کرد. به همین دلیل ما از Power FX به عنوان یک زبان فرمول یاد می کنیم.

به عنوان مثال ، این فرمول از پشته سرریز رشته ای را به ترتیب معکوس جستجو می کند. در اکسل ، به نظر می رسد مانند تصویر زیر است.

Reverse search

تصویر یک نوار فرمول در اکسل با فرمول: = سمت راست (A1 ، Len (A1)- پیدا کردن ("|" ، جایگزین (A1 ، "" ، "|" ، لن (A1) -len (جایگزین (A1 ، ""،" "))) سلول A1 شامل متن" سلام ، جهان! بسیار عالی است! "سلول A2 حاوی متن" شما! "

Power FX با همین فرمول کار می کند ، با منابع سلول جایگزین منابع کنترل شده است:

تصویر یک نوار فرمول Power FX در برنامه های برق. فرمول = راست (input. text ، len (input. text) است- پیدا کردن ("|" ، جایگزین (input. text ، "" ، "،" | "، len (input. text) -len (جایگزین (input. text، "" ، "")))) در کادر ورودی زیر فرمول ، متن "سلام ، جهان! عالی است که شما را ملاقات کنید!"از آخرین کلمه ظاهر می شود. وقتی متن کامل در کادر ورودی ظاهر می شود ، کلمه "شما!" در کادر برچسب ظاهر می شود.

با تغییر مقدار کنترل ورودی ، کنترل برچسب به طور خودکار فرمول را دوباره محاسبه می کند و مقدار جدید را نشان می دهد. در اینجا هیچ گیرنده رویداد Onchange وجود ندارد ، همانطور که در زبان های دیگر رایج است.

مثال دیگری که از فرمول برای رنگ پر کردن صفحه استفاده می کند. از آنجا که کشویی که کنترل می کنند قرمز ، سبز و آبی تغییر می کنند ، رنگ پس زمینه به طور خودکار هنگام محاسبه مجدد تغییر می کند.

هیچ اتفاقی برای کنترل کشویی وجود ندارد ، همانطور که در زبان های دیگر نیز رایج است. به هیچ وجه راهی برای تنظیم صریح ارزش خاصیت وجود ندارد. اگر رنگ همانطور که انتظار می رود کار نمی کند ، باید به این فرمول نگاه کنید تا درک کنید که چرا کار نمی کند. برای یافتن یک قطعه کد که ویژگی را در یک زمان غیر منتظره تنظیم می کند ، نیازی به جستجوی برنامه ندارید. هیچ عنصر زمانی وجود ندارد. مقادیر فرمول صحیح همیشه حفظ می شوند.

از آنجا که کشویی ها به رنگ تیره تنظیم شده اند ، برچسب های قرمز ، سبز و آبی به رنگ سفید برای جبران. این کار از طریق یک فرمول ساده در مورد خاصیت رنگ برای هر کنترل برچسب انجام می شود.

Power Fx color sliders.

نکته جالب در این مورد این است که از آنچه برای رنگ پر می شود جدا شده است: اینها دو محاسبه کاملاً متفاوت هستند. به جای روشهای بزرگ یکپارچه ، منطق قدرت FX به طور معمول از فرمولهای کوچکتر تشکیل شده است که مستقل هستند. این امر درک آنها را آسان تر می کند و پیشرفت ها را بدون ایجاد اختلال در منطق موجود امکان پذیر می کند.

Power FX یک زبان اعلانی است ، دقیقاً همانطور که اکسل است. سازنده تعریف می کند که چه رفتاری را می خواهند ، اما این سیستم وظیفه دارد که چگونه و چه موقع آن را انجام دهد. برای ساختن این کار ، بیشتر کارها از طریق توابع خالص و بدون عوارض جانبی انجام می شود ، و قدرت FX را نیز به یک زبان کاربردی تبدیل می کند (دوباره ، دقیقاً همانطور که اکسل است).

همیشه زندگی کن

جنبه مشخصی از برگه ها این است که آنها همیشه زنده هستند و تغییرات فوراً منعکس می شوند. هیچ حالت کامپایل یا اجرا در صفحه کار وجود ندارد. هنگامی که یک فرمول اصلاح می شود یا مقدار وارد می شود ، برگه کار بلافاصله محاسبه می شود تا تغییرات را منعکس کند. هرگونه خطایی که تشخیص داده می شود بلافاصله ظاهر می شود و در بقیه برگه ها دخالت نمی کند.

همین مورد با Power FX اجرا می شود. از کامپایلر افزایشی برای نگه داشتن مداوم برنامه با داده هایی که در آن کار می کند استفاده می شود. تغییرات به طور خودکار از طریق نمودار برنامه پخش می شود و بر نتایج محاسبات وابسته تأثیر می گذارد ، که ممکن است خاصیت هایی را در کنترل هایی مانند رنگ یا موقعیت ایجاد کند. کامپایلر افزایشی همچنین یک تجربه ویرایش فرمول غنی را با IntelliSense ، پیشنهادات ، خودکار و بررسی نوع ارائه می دهد.

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

هنگامی که کارمند وارد شد ، این باعث می شود که صفحه داده ها جدول کارمندان را اضافه کند ، ابرداده برای این جدول بازیابی می شود و پیشنهادات برای ستون ها بلافاصله ارائه می شود. ما فقط از یک جدول به جدول دیگر رابطه ای داشتیم و سیستم تنظیمات لازم را در منابع برنامه انجام داد. همین اتفاق در هنگام اضافه کردن یک . customer رخ می دهد.

پس از هر تغییر ، کشویی با آخرین مقدار خود ادامه می یابد و هر متغیر ارزش خود را حفظ می کند. در کل ، شماره سفارش همچنان همانطور که باید در برچسب بالا نمایش داده می شود. این برنامه به طور زنده ، پردازش داده های واقعی ، کل زمان انجام شده است. ما می توانیم آن را نجات دهیم ، دور شویم و دیگران می توانند آن را دقیقاً مانند اکسل باز کرده و از آن استفاده کنند. هیچ مرحله ساخت و ساز وجود ندارد ، هیچ کامپایل ، فقط یک مرحله منتشر شده برای تعیین اینکه کدام نسخه از برنامه برای کاربران آماده است وجود دارد.

کد

Power FX منطق کسب و کار را در فرمول های مختصر و در عین حال قدرتمند توصیف می کند. بیشتر منطق را می توان به یک خط واحد کاهش داد ، با بیان و کنترل فراوان برای نیازهای پیچیده تر. هدف این است که حداقل تعداد مفاهیمی را که یک سازنده باید درک کند ، حفظ کند - در واقع ، چیزی بیش از آنچه کاربر اکسل قبلاً نمی داند.

به عنوان مثال ، برای جستجوی نام یک کارمند برای سفارش ، شما Power FX را همانطور که در انیمیشن زیر نشان داده شده است می نویسید. فراتر از مفاهیم اکسل ، تنها مفهوم اضافه شده مورد استفاده در اینجا نقطه "است."یادداشت برای حفاری به ساختار داده ، در این مورداین انیمیشن نقشه برداری بین قسمت های فرمول FX Power و مفاهیمی را که باید صریحاً در جاوا اسکریپت معادل کدگذاری شوند ، نشان می دهد.

بیایید به همه کارهایی که Power FX برای ما انجام می دهد و آزادی که باید بهینه سازی کند ، بیشتر نگاه کنیم زیرا فرمول اعلامی بود:

ناهمزمان: کلیه عملیات داده در Power FX ناهمزمان است. سازنده نیازی به مشخص کردن این موضوع ندارد ، و همچنین سازنده پس از پایان تماس نیازی به همگام سازی عملیات ندارد. سازنده اصلاً نیازی به آگاهی از این مفهوم ندارد ، آنها نیازی به دانستن عملکرد وعده یا لامبدا ندارند.

محلی و از راه دور: Power FX از همان نحو استفاده می کند و برای داده هایی که در یک حافظه محلی و از راه دور در یک پایگاه داده یا سرویس قرار دارند ، از همان نحو استفاده می کند. کاربر نیازی به فکر کردن در مورد این تمایز ندارد. Power FX به طور خودکار آنچه را که می تواند به سرور ارائه می دهد ، برای پردازش فیلترها و انواع مختلف در آنجا کارآمدتر.

داده های رابطه ای: سفارشات و مشتریان دو جدول مختلف هستند که رابطه ای به یک به یک دارند. پرس و جو ODATA با آگاهی از کلید خارجی ، شبیه به پیوستن به SQL ، به "$ گسترش" نیاز دارد. فرمول هیچ یک از اینها را ندارد. در حقیقت ، کلیدهای پایگاه داده مفهوم دیگری است که سازنده نیازی به آن ندارد. سازنده می تواند از نماد نقطه ساده برای دسترسی به کل نمودار روابط از یک رکورد استفاده کند.

طرح ریزی: هنگام نوشتن پرس و جو ، بسیاری از توسعه دهندگان * را از جدول می نویسند ، که تمام ستون های داده را باز می گرداند. Power FX تمام ستون هایی را که از طریق کل برنامه استفاده می شود ، حتی در سراسر وابستگی های فرمول ، تجزیه و تحلیل می کند. طرح ریزی به طور خودکار بهینه شده است و باز هم ، یک سازنده نیازی به دانستن "طرح ریزی" ندارد.

فقط آنچه را که لازم است بازیابی کنید: در این مثال ، عملکرد جستجوی دلالت بر این دارد که فقط یک رکورد باید بازیابی شود و این همه برگشتی است. اگر سوابق بیشتری با استفاده از تابع فیلتر درخواست شود - برای اینکه هزاران سوابق ممکن است واجد شرایط باشند - فقط یک صفحه واحد از داده ها به صورت 100 رکورد در هر صفحه بازگردانده می شود. کاربر برای دیدن داده های بیشتر باید از طریق یک گالری یا جدول داده حرکت کند و به طور خودکار برای آنها وارد می شود. سازنده می تواند در مورد مجموعه های زیادی از داده ها بدون نیاز به فکر کردن در مورد محدود کردن درخواست های داده به تکه های قابل کنترل ، استدلال کند.

فقط در صورت لزوم اجرا می شود: ما یک فرمول برای ویژگی متن کنترل برچسب تعریف کردیم. با تغییر متغیر ، جستجو به طور خودکار محاسبه می شود و برچسب به روز می شود. سازنده نیازی به نوشتن یک کنترل کننده Onchange برای انتخاب نداشت و نیازی به یادآوری این ندارد که این برچسب به آن وابسته است. این برنامه نویسی اعلانی است ، همانطور که قبلاً بحث شد: سازنده آنچه را که می خواستند در برچسب داشته باشند ، مشخص کرد ، نه چگونه یا چه موقع باید از آن استفاده کرد. اگر این برچسب قابل مشاهده نباشد زیرا روی صفحه نمایش قابل مشاهده نیست ، یا خاصیت قابل مشاهده آن نادرست است ، می توانیم این محاسبه را تا زمانی که برچسب قابل مشاهده باشد ، از بین ببریم و اگر به ندرت اتفاق بیفتد ، آن را از بین ببریم.

Excel Syntax ترجمه: اکسل توسط بسیاری از کاربران استفاده می شود ، که بیشتر آنها می دانند که از Ampersand (&) برای جمع بندی رشته استفاده می شود. JavaScript از یک علامت به علاوه ( +) استفاده می کند ، و سایر زبانها از نقطه (.) استفاده می کنند.

نام و محلی سازی نمایش: نام اول در فرمول Power FX استفاده می شود در حالی که NWIND_FIRSTNAME در معادل JavaScript استفاده می شود. در Microsoft DataVerse و SharePoint علاوه بر یک نام منطقی منحصر به فرد ، یک نام نمایش برای ستون ها و جداول وجود دارد. نام های نمایشگر اغلب مانند این مورد بسیار کاربر پسند تر هستند ، اما کیفیت مهم دیگری دارند که می توانند بومی سازی شوند. اگر یک تیم چند زبانه دارید ، هر یک از اعضای تیم می توانند نام جدول و زمینه را به زبان خود مشاهده کنند. در کلیه موارد استفاده ، Power FX اطمینان می دهد که نام منطقی صحیح به طور خودکار به پایگاه داده ارسال می شود.

بدون کد

برای شروع بیان منطق، لازم نیست Power Fx را بخوانید و بنویسید. سفارشی سازی ها و منطق زیادی وجود دارد که می توان آنها را از طریق سوییچ های ساده و سازندگان رابط کاربری بیان کرد. این ابزارهای بدون کد برای خواندن و نوشتن Power Fx ساخته شده اند تا اطمینان حاصل شود که فضای زیادی برای استفاده بیشتر از آن وجود دارد، در حالی که اذعان می کنیم که ابزارهای بدون کد هرگز تمام بیانی بودن زبان کامل را ارائه نمی دهند. حتی زمانی که با سازنده‌های بدون کد استفاده می‌شود، نوار فرمول در جلو و مرکز در Power Apps قرار می‌گیرد تا به سازنده درباره کارهایی که از طرف او انجام می‌شود آموزش دهد تا بتواند شروع به یادگیری Power Fx کند.

بیایید به چند نمونه نگاهی بیندازیم. در Power Apps، پانل ویژگی سوئیچ ها و دستگیره های بدون کد را برای ویژگی های کنترل ها ارائه می دهد. در عمل، بیشتر مقادیر دارایی ثابت هستند. می توانید از سازنده رنگ برای تغییر رنگ پس زمینه گالری استفاده کنید. توجه داشته باشید که نوار فرمول این تغییر را منعکس می کند و فرمول را به یک تماس RGBA دیگر به روز می کند. در هر زمان، می‌توانید به نوار فرمول بروید و این کار را یک قدم جلوتر بردارید - در این مثال، با استفاده از ColorFade برای تنظیم رنگ. ویژگی رنگ همچنان در پانل خصوصیات ظاهر می شود، اما نماد fx در شناور ظاهر می شود و شما به نوار فرمول هدایت می شوید. این به دو صورت کاملاً کار می‌کند: حذف فراخوانی ColorFade رنگ را به چیزی که پانل ویژگی می‌تواند بفهمد برمی‌گرداند و می‌توانید دوباره از آن برای تنظیم یک رنگ استفاده کنید.

در اینجا یک مثال پیچیده تر است. گالری لیستی از کارمندان Dataverse را نشان می دهد. Dataverse نماها را روی داده های جدول ارائه می دهد. ما می توانیم یکی از این نماها را انتخاب کنیم و فرمول برای استفاده از تابع Filter با این نام view تغییر می کند. از دو منوی کشویی می توان برای شماره گیری در جدول صحیح و مشاهده بدون لمس نوار فرمول استفاده کرد. اما فرض کنید می خواهید جلوتر بروید و یک مرتبه اضافه کنید. ما می توانیم این کار را در نوار فرمول انجام دهیم، و پانل ویژگی دوباره یک نماد fx را نشان می دهد و تغییرات را به نوار فرمول هدایت می کند. و دوباره، اگر فرمول را به چیزی که پانل ویژگی می تواند بخواند و بنویسد ساده کنیم، دوباره می توان از آن استفاده کرد.

اینها نمونه های ساده ای بوده اند. ما معتقدیم که Power Fx یک زبان عالی برای توصیف تعاملات بدون کد است. مختصر، قدرتمند و آسان برای تجزیه است و فضای سر که اغلب مورد نیاز است را با "بدون صخره" تا کم کد فراهم می کند.

کد حرفه ای

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

حرفه ای ها می خواهند از ابزارهای حرفه ای استفاده کنند تا بیشترین بهره وری را داشته باشند. فرمول‌های Power Fx را می‌توان در فایل‌های منبع YAML ذخیره کرد، که به راحتی با Visual Studio Code، Visual Studio یا هر ویرایشگر متن دیگری ویرایش می‌شوند و Power Fx را قادر می‌سازند تحت کنترل منبع با GitHub، Azure DevOps یا هر کد منبع دیگری قرار گیرد. سیستم کنترل.

Power Fx از اجزای مبتنی بر فرمول برای اشتراک گذاری و استفاده مجدد پشتیبانی می کند. ما پشتیبانی از پارامترهای ویژگی های مؤلفه را اعلام کردیم، که امکان ایجاد توابع خالص تعریف شده توسط کاربر با پیشرفت های بیشتر در راه است.

همچنین، Power Fx در پیوند دادن اجزا و خدمات ساخته شده توسط متخصصان عالی است. کانکتورهای خارج از جعبه دسترسی به صدها منبع داده و سرویس وب را فراهم می کنند، کانکتورهای سفارشی Power Fx را قادر می سازند تا با هر سرویس وب REST صحبت کند و اجزای کد Power Fx را قادر می سازد تا با جاوا اسکریپت کاملاً سفارشی روی صفحه و صفحه تعامل داشته باشد.

اصول طراحی

ساده

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

ساده بودن برای توسعه دهندگان نیز خوب است. برای مخاطبان برنامه‌نویس، هدف ما این است که یک زبان کم‌کد باشیم که زمان مورد نیاز برای ساخت راه‌حل را کاهش دهد.

سازگاری اکسل

زبان Microsoft Power Fx به شدت از زبان فرمول اکسل وام گرفته است. ما به دنبال بهره گیری از دانش و تجربه اکسل بسیاری از سازندگانی هستیم که از اکسل نیز استفاده می کنند. انواع، عملگرها و معنای توابع تا حد امکان به اکسل نزدیک هستند.

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

اعلامی

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

برای مثال، در یک کاربرگ اکسل، نویسنده روابط بین سلول‌ها را تعریف می‌کند، اما اکسل تصمیم می‌گیرد که فرمول‌ها چه زمانی و به چه ترتیبی ارزیابی شوند. به طور مشابه، فرمول‌های موجود در یک برنامه را می‌توان بر اساس اقدامات کاربر، تغییرات پایگاه داده یا رویدادهای تایمر، به‌عنوان «مجدد محاسبه» در نظر گرفت.

عملکردی

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

بر خلاف اکسل، برنامه‌ها طبیعتاً حالت جهش پیدا می‌کنند - برای مثال، برنامه‌ها دکمه‌هایی دارند که تغییرات را در رکورد در پایگاه داده ذخیره می‌کنند. بنابراین، برخی از عملکردها دارای عوارض جانبی هستند، اگرچه ما آن را تا آنجا که عملی است محدود می کنیم.

ترکیب بندی

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

به عنوان مثال، یک کنترل گالری دارای ویژگی های مرتب سازی و فیلتر جداگانه نیست. در عوض، توابع Sort و Filter با هم در یک ویژگی Items ترکیب می‌شوند. رابط کاربری برای بیان رفتار مرتب سازی و فیلتر در بالای ویژگی Items با استفاده از ویرایشگر دو طرفه برای این ویژگی لایه بندی شده است.

به شدت تایپ شده است

انواع همه مقادیر در زمان کامپایل شناخته شده است. این امکان تشخیص زودهنگام خطاها و پیشنهادات غنی در حین نوشتن را فراهم می کند.

انواع Polymorphic پشتیبانی می شوند، اما قبل از استفاده از آنها، نوع آنها باید به یک نوع ثابت پین شود و آن نوع باید در زمان کامپایل شناخته شود. توابع IsType و AsType برای انواع تست و ریخته گری ارائه شده اند.

استنتاج تایپ کنید

انواع از استفاده آنها بدون اعلام به دست می آیند. به عنوان مثال، تنظیم یک متغیر بر روی یک عدد باعث می شود که نوع متغیر به عنوان یک عدد تعیین شود.

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

جداکننده های اعشاری حساس به محلی

برخی از مناطق جهان از نقطه ( . ) به عنوان جداکننده اعشار استفاده می کنند، در حالی که برخی دیگر از کاما ( , ) استفاده می کنند. این کاری است که اکسل نیز انجام می دهد. این معمولاً در سایر زبان‌های برنامه‌نویسی انجام نمی‌شود، که معمولاً از یک نقطه متعارف ( . ) به عنوان جداکننده اعشار برای همه کاربران در سراسر جهان استفاده می‌کنند. برای اینکه تا حد امکان برای سازندگان در همه سطوح قابل دسترس باشد، مهم است که 3،14 یک عدد اعشاری برای فردی در فرانسه باشد که در تمام زندگی خود از این نحو استفاده کرده است.

انتخاب جداکننده اعشاری بر جداکننده لیست که برای آرگومان های فراخوانی تابع و عملگر زنجیره ای استفاده می شود، تأثیر آبشاری دارد.

جداکننده اعشار زبان نویسنده جداکننده اعشاری Power Fx جداکننده لیست Power Fx اپراتور زنجیره ای Power Fx
.(نقطه) .(نقطه) ، (کاما) ;(نقطه ویرگول)
، (کاما) ، (کاما) ;(نقطه ویرگول) ;;(نقطه ویرگول دوبل)

شی گرا نیست

اکسل شی گرا نیست و Power Fx هم نیست. به عنوان مثال، در برخی از زبان ها، طول یک رشته به عنوان ویژگی رشته بیان می شود، مانند "Hello World". length در جاوا اسکریپت. Excel و Power Fx در عوض این را در قالب یک تابع، به عنوان Len ("Hello World") بیان می کنند.

اجزای دارای ویژگی ها و متدها شی گرا هستند و Power Fx به راحتی با آنها کار می کند. اما در صورت امکان، ما یک رویکرد کاربردی را ترجیح می دهیم.

قابل توسعه

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

توسعه دهنده پسند

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

تکامل زبان

توسعه زبان های برنامه نویسی هم ضروری و هم دشوار است. همه - به حق - نگران هستند که یک تغییر، مهم نیست که چقدر با نیت خوب، ممکن است کد موجود را شکسته و کاربران را ملزم به یادگیری یک الگوی جدید کند. Power Fx سازگاری رو به عقب را جدی می گیرد، اما ما نیز قویاً معتقدیم که همیشه در اولین بار آن را درست انجام نمی دهیم و به طور جمعی می آموزیم که چه چیزی به عنوان یک جامعه بهترین است. ما باید تکامل پیدا کنیم و Power Fx از همان ابتدا پشتیبانی از تکامل زبان را طراحی کرد.

با هر سند Power Fx که ذخیره شده است، یک مهر نسخه زبان گنجانده شده است. اگر بخواهیم تغییر ناسازگاری ایجاد کنیم، چیزی را می نویسیم که به آن "مبدل پشتی سازگار" می گوییم که دفعه بعد که ویرایش شد فرمول را به طور خودکار بازنویسی می کند. اگر این تغییر چیز مهمی است که باید در مورد آن به کاربر آموزش دهیم، پیامی با پیوندی به اسناد را نیز نمایش خواهیم داد. با استفاده از این امکان، علیرغم همه تغییراتی که از آن زمان تاکنون رخ داده است، همچنان می‌توانیم برنامه‌هایی را که با نسخه‌های پیش‌نمایش Power Apps از سال‌ها پیش ساخته شده‌اند، بارگیری کنیم.

برای مثال ما تابع ShowError را برای نمایش بنر خطا با پس زمینه قرمز معرفی کردیم.

Show error.

کاربران آن را دوست داشتند ، اما آنها همچنین از ما خواسته اند راهی برای نشان دادن پرچم موفقیت (پس زمینه سبز) یا یک پرچم اطلاعاتی (پس زمینه آبی) نشان دهند. بنابراین ، ما به یک عملکرد اطلاع رسانی عمومی تر رسیدیم که استدلال دوم را برای نوع اعلان می گیرد. ما فقط می توانستیم به همان روشی که در آن قرار داشت ، به اطلاع رسانی اضافه کنیم و دوش را نگه داشتیم ، اما در عوض ما Showstror را با Notify جایگزین کردیم. ما تابعی را که قبلاً در حال تولید بود حذف کردیم و آن را با چیز دیگری جایگزین کردیم. از آنجا که دو راه برای انجام همین کار وجود داشت ، این امر باعث سردرگمی - به ویژه برای کاربران جدید - می شد و از همه مهمتر این امر باعث پیچیدگی می شد. هیچ کس شکایت نکرد ، همه از این تغییر قدردانی کردند و سپس به ویژگی Next Notify خود منتقل شدند.

اینگونه است که هنگام بارگیری در آخرین نسخه برنامه های برق ، همان برنامه به نظر می رسد. کاربر برای انجام این تحول هیچ اقدامی لازم نبود ، با باز شدن برنامه به طور خودکار اتفاق افتاد.

Notify function replaces ShowError.

با استفاده از این تسهیلات ، Power FX می تواند سریعتر و پرخاشگرتر از بیشتر زبانهای برنامه نویسی تکامل یابد.

بدون ارزش تعریف نشده

برخی از زبانها ، مانند JavaScript ، از مفهوم یک مقدار نامشخص برای متغیرهای ناآگاه یا خصوصیات گمشده استفاده می کنند. به خاطر سادگی ، ما از این مفهوم اجتناب کرده ایم. مواردی که به زبانهای دیگر مشخص نمی شوند ، به عنوان یک خطا یا یک مقدار خالی رفتار می شوند. به عنوان مثال ، تمام متغیرهای غیرقانونی با یک مقدار خالی شروع می شوند. همه انواع داده ها می توانند مقدار خالی را به خود اختصاص دهند.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.