نظرة عامة على Microsoft Power Fx

إن Power Fx عبارة عن لغة منخفضة التعليمات البرمجية سيتم استخدامها عبر Microsoft Power Platform. إنها لغة برمجية ذات غرض عام ومن نوع قوي وتصريحي ووظيفي.

يتم التعبير عن Power Fx بنص سهل الاستخدام. إنها لغة منخفضة التعليمات البرمجية بإمكان المنشئين العمل معها مباشرة في شريط صيغة على غرار Excel أو نافذة نص Visual Studio Code. ويرجع السبب في "منخفض" في التعليمات البرمجية منخفضة إلى جزاء اللغة ولطبيعة بسيطة لها، مما يسهل مهام البرمجة الشائعة على كل من صناع البرامج والمطورين. فهو يتيح التعليمة البرمجية الكاملة من "بلا تعليمات برمجية" لهؤلاء الذين لم يبرمجوا من قبل إلى "تعليمة برمجية محترفة" للمحترفين المحترفين، دون تعلم أو إعادة كتابة تعليمات برمجية بينهما، مما يساعد على تمكين فرق العمل المتعاونة من التعاون وتوفير الوقت والمصروفات.

‏‫ملاحظة‬

  • إن Microsoft Power Fx هو الاسم الجديد للغة الصيغة لتطبيقات اللوحة في Power Apps. هذه النظرة العامة والمقالات المرتبطة بها عبارة عن عمل قيد التقدم حيث نقوم باستخراج اللغة من تطبيقات Canvas، ودمجها مع منتجات Microsoft Power Platform الأخرى وجعلها متوفرة كمصدر مفتوح. لمعرفة المزيد حول لغة اليوم وتجربتها، ابدأ بإجراء الشروع في العمل باستخدام الصيغ في تطبيقات اللوحة في وثائق Power Apps وسجل مجانًا للحصول على الإصدار التجريبي المجاني من Power Apps trial.
  • في هذه المقالة، نشير إلى المنشئين عندما نصف ميزة يمكن استخدامها في أي من نهاية مجموعة المهارات البرمجية. ونشير إلى المستخدم بصفته مطورًا إذا كانت الميزة أكثر تقدمًا ومن المحتمل أن تكون خارج نطاق مستخدم Excel النموذجي.

يربط Power Fx الكائنات معًا مع صيغ تصريحية تشبه جدول البيانات. على سبيل المثال، يمكنك أن تفكر في الخاصية المريئة لمراقبة واجهة المستخدم كخلية في ورقة عمل Excel، باستخدام صيغة مقترنة تقوم بحساب قيمتها استنادا إلى خصائص عناصر التحكم الأخرى. يقوم منطق الصيغة بإعادة حساب القيمة تلقائيا، بنفس طريقة عمل جدول البيانات، والذي يؤثر على رؤية عنصر التحكم.

كما يوفر Power Fx منطقيًا إلزاميًا عند الحاجة. لا تحتوي أوراق العمل عادة على أزرار يمكنها إرسال التغييرات إلى قاعدة البيانات، إلا أن التطبيقات غالبا ما تحتوي عليها. تستخدم نفس لغة التعبير للمنطقين التصريحي والمنطقي.

سيتم توفير Power Fx كبرنامج مفتوح المصدر. إنها متكامل حاليًا مع تطبيقات اللوحة، ونحن بصدد استخراجه من Power Apps لاستخدامه في منتجات Microsoft Power Platform أخرى كمصدر مفتوح. مزيد من المعلومات: Microsoft Power Fx على GitHub

هذا المقال هو نظرة عامة على اللغة ومبادئ التصميم الخاصة بها. لمعرفة المزيد حول Power Fx، راجع المقالات التالية:

فكر في جدول البيانات

ماذا لو كان بإمكانك إنشاء تطبيق بنفس سهولة إنشاء ورقة عمل في Excel؟

ماذا لو كان بإمكانك الاستفادة من معرفتك الحالية بجداول البيانات؟

كانت هذه هي الأسئلة التي ألهمت إنشاء Power Apps وPower Fx. يقوم مئات الملايين من الأشخاص بإنشاء أوراق عمل باستخدام Excel كل يوم ؛ دعنا نوفر لهم إمكانية إنشاء التطبيق بطريقة سهلة ويستخدمون مفاهيم Excel التي يعرفونها بالفعل. من خلال فصل Power Fx عن Power Apps، سنجيب على هذه الأسئلة لبناء الأتمتة، أو مندوب افتراضي، أو مجالات أخرى.

تتضمن جميع لغات البرمجة، بما في ذلك Power Fx تعبيرات: طريقة لتمثيل عملية حسابية على الأرقام أو السلاسل أو أنواع البيانات الأخرى. على سبيل المثال، mass * acceleration في معظم اللغات يعبر عن ضرب massوacceleration. ويمكن وضع نتيجة تعبير في متغير، أو استخدامه ك وسيطة لإجراءات، أو وضعه في تداخل تعبير أكبر.

ينقل Power Fx هذه الخطوة إلى ما هو أبعد من ذلك. تعبير في حد ذاته لا يتحدث عن أي شيء عن ما يتم حسابه. ويمرر وضع هذا المتغير في المتغير أو تمريره إلى وظيفة ما. في Power Fx، بدلاً من كتابة تعبير ليس لديه أي معنى معين، يمكنك كتابة صيغة تربط التعبير بمعرف. أنت تكتب force = mass * acceleration كصيغة لحساب force. عند تغير mass أو acceleration، يتم تحديث force تلقائيًا إلى قيمة جديدة. وصف التعبير عملية حسابية، أعطت الصيغة هذه العملية الحسابية اسمًا واستخدمتها كوصفة. ولهذا السبب نشير إلى Power Fx باعتباره لغة صيغة.

على سبيل المثال، تبحث صيغة من Stack Overflow عن سلسلة في ترتيب عكسي. في Excel، تبدو مثل الصورة التالية.

عكس البحث

لقطة شاشة لشريط الصيغة في Excel بالصيغة: = =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) تحتوي الخلية A1 على النص "مرحبًا بالعالم! إنه أمر رائع أن نقابلك!" تحتوي الخلية A2 على النص "أنت!".

يعمل Power Fx مع نفس الصيغة، مع استبدال مراجع الخلايا بمراجع خاصية التحكم:

عكس البحث في Power Fx.

لقطة شاشة لشريط صيغة Power Fx في Power Apps. الصيغة هي =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) في مربع الإدخال أسفل الصيغة، يظهر النص "Hello, World! من الرائع مقابلتك!"، رسالة برسالة. في نفس الوقت في مربع التسمية، تظهر أحرف الكلمة الأخيرة. عندما يظهر النص الكامل في مربع الإدخال، تظهر كلمة "أنت!" في مربع التسمية.

ومع تغيير قيمة عنصر التحكمInput، يقوم عنصر التحكم Labelتلقائيا إعادة حساب الصيغة وعرض القيمة الجديدة. ولا توجد معالجات أحداث OnChange هنا كما قد تكون شائعة في اللغات الأخرى.

مثال آخر يستخدم صيغة Fill للون الشاشة. ومع تغيير عناصر التمرير التي تتحكم في اللون الأحمر والأخضر والأزرق، يتغير لون الخلفية تلقائيا عند إعادة حسابه.

شريط تمرير اللون.

لا توجد أحداث OnChange لمراقبة شريط التمرير كما قد تكون شائعة في اللغات الأخرى. لا توجد طريقة لتعيين قيمة الخاصية Fill بشكل واضح على الإطلاق. إذا لم يعمل اللون كما هو متوقع، ستحتاج إلى النظر إلى هذه الصيغة واحدة لفهم سبب عدم عمله. لست بحاجة للبحث من خلال التطبيق للعثور على رمز من هذه التعليمات البرمجية التي تقوم بتعيين الخاصية في وقت غير متوقع؛ لا يوجد عنصر وقت. يتم الاحتفاظ بقيم الصيغة الصحيحة دائما.

وعندما يتم تعيين منشرات التمرير على لون مهيئ، تتغير تسميات اللون الأحمر والأخضر والأزرق إلى اللون الأخضر إلى اللون الأحمر إلى اللون الأزرق. يتم ذلك من خلال صيغة بسيطة في خاصية Color لكل عنصر تحكم في التسمية.

أشرطة تمرير الألوان في Power Fx.

ما هو رائع في هذا هو أنه معزول عما يحدث لـ Fill: هاتان عمليتان حسابيتان مختلفتان تمامًا. وبدلاً من الإجراءات الكبرى أحادية الطبقة، يتكون منطق Power Fx عادة من الكثير من الصيغ الصغيرة المستقلة. هذا يجعلهم أسهل في الفهم ويمكّنهم من التحسينات دون الإخلال بالمنطق الحالي.

إن Power Fx عبارة عن لغة تصريحية، كما هو الحال مع Excel. يحدد المصنّع السلوك الذي يريده، ولكن الأمر متروك للنظام لتحديد وتحسين كيفية ومتى يتم ذلك. ولتنفيذ ذلك من الناحية العملية، يتم إنجاز معظم الأعمال من خلال وظائف خالصة بدون تأثيرات جانبية، مما يجعل Power Fx أيضا لغة وظيفية (مرة أخرى، كما هو الحال مع Excel).

مباشر دائما

يتمثل أحد الجوانب المحددة لأوراق العمل في أنها حية دائمًا، وتنعكس التغييرات على الفور. لا يوجد وضع ترجمة أو تشغيل في ورقة العمل. عند تعديل صيغة أو إدخال قيمة، تتم إعادة حساب ورقة العمل فورًا لتعكس التغييرات. تظهر أي أخطاء يتم اكتشافها على الفور، ولا تتداخل مع بقية ورقة العمل.

يتم تنفيذ نفس الشيء مع Power Fx. يتم استخدام مترجم تزايدي للحفاظ على تزامن البرنامج باستمرار مع البيانات التي يعمل عليها. يتم نشر التغييرات تلقائيًا من خلال الرسم البياني للبرنامج، مما يؤثر على نتائج الحسابات التابعة، والتي قد تدفع خصائص عناصر التحكم مثل اللون أو الموضع. كما يوفر هذا المترجم المقترن تجربة تحرير صيغة ثرية مع IntelliSense، واقتراحات، وأتمتة، والتحقق من النوع.

في التصنيف أدناه، يتم عرض رقم الأمر في عنصر تحكم بطاقة عنونة يعتمد على عنصر التحكم في التمرير، على الرغم من وجود خطأين في التسميات الموجودة أسفله. التطبيق متفاعل وتفاعلي إلى حد كبير. المحاولة الأولى لإصلاح الصيغة عن طريق إدخال .InvalidName تؤدي إلى ظهور خط أحمر فوري وخطأ عرض، كما ينبغي، لكن التطبيق يستمر في العمل.

مباشر دائمًا.

عند إدخال .Employee يتسبب هذا في أن يضيف جزء Data جدول الموظفين، يتم استرداد البيانات الوصفية لهذا الجدول، ويتم تقديم اقتراحات للأعمدة على الفور. سنقوم فقط بالعلاقة بين جدول وآخر، حيث قام النظام بإجراء التعديلات اللازمة على مراجع التطبيق. الشيء نفسه يحدث عند إضافة .Customer.

وبعد كل تغيير، يستمر شريط التمرير في آخر قيمة له، كما تحتفظ أية متغيرات بقيمتها. طوال ذلك الوقت، استمر عرض رقم الأمر في التسمية العليا كما ينبغي. كان التطبيق مباشرا، معالجة بيانات حقيقية، الوقت بأكمله. يمكننا حفظه والابتعاد عنه ويمكن للآخرين فتحه واستخدامه تماما مثل Excel. لا توجد خطوة بناء، ولا تجميع، هناك فقط خطوة نشر لتحديد إصدار التطبيق الجاهز للمستخدمين.

رمز منخفض

يصف Power Fx منطق العمل من خلال صيغ موجزة وكلن قوية. يمكن اختزال معظم المنطق في سطر واحد، مع الكثير من التعبير والتحكم لتلبية الاحتياجات الأكثر تعقيدًا. فالهدف هو الاحتفاظ بالحد الأدنى المفاهيم التي يحتاج المنشئ إلى فهمهم — عادةً، لا يزيد عما قد يعرفه مستخدم Excel بالفعل.

على سبيل المثال، للبحث عن الاسم الأول لموظف لأمر ما، تكتب Power Fx كما هو موضح في الحركة التالية. بالإضافة إلى مفاهيم Excel، فإن المفهوم المضاف الوحيد المستخدم هنا هو ترميز النقطة "." للتنقيب في بنية البيانات، في هذه الحالة .Employee.'First Name'. تعرض الحركة التعيين بين أجزاء صيغة Power Fx والمفاهيم الواجب ترميزها بشكل واضح في JavaScript المكافئ.

رمز منخفض بلغة JavaScript.

هيا نتعرف أكثر على جميع الأشياء التي يقوم بها Power Fx من أجلنا والحرية التي يتمتع بها لتحسين الأداء نظرًا لأن الصيغة كانت تصريحية:

  • غير متزامنة: كافة عمليات البيانات في Power Fx غير متزامنة. لا يحتاج المُصنِّع إلى تحديد ذلك، ولا يحتاج المُصنِّع إلى مزامنة العمليات بعد انتهاء المكالمة. لا يحتاج الصانع إلى أن يكون على دراية بهذا المفهوم على الإطلاق، ولا يحتاج إلى معرفة ما هو الوعد أو وظيفة لامدا.

  • محلية وبعيدة: يستخدم Power Fx بناء الجملة والدالات نفسها الخاصة بالبيانات المحلية في الذاكرة والبعيدة في قاعدة بيانات أو خدمة. لا يحتاج المستخدم التفكير في هذا الامتياز. يفوض Power Fx ما يمكنه القيام به تلقائيًا إلى الخادم لمعالجة عوامل التصفية والفرز بشكل أكثر فعالية.

  • البيانات العلائقية: الطلبات والعملاء هما جدولين مختلفين، تربطهما علاقة كثير إلى واحد. يتطلب استعلام OData "$expand" مع معرفة بالمفتاح الخارجي، مشابها للانضمام إلى SQL. الصيغة لا تحتوي على أي من هذا ؛ في الواقع، تعتبر مفاتيح قاعدة البيانات مفهومًا آخر لا يحتاج المصمم إلى معرفته. يمكن للصانع استخدام تسجيل نقطة بسيطة للوصول إلى الرسم البياني الكامل العلاقات سجل.

  • الإسقاط: عند كتابة استعلام، يكتب العديد من المطورين select * from table، الذي يعيد جميع أعمدة البيانات. يحلل Power Fx كافة الأعمدة المستخدمة من خلال التطبيق بالكامل، حتى عبر تبعيات الصيغة. يتم تحسين العرض تلقائيًا، ومرة أخرى، لا يحتاج المصمم إلى معرفة معنى "الإسقاط".

  • استرجع فقط ما هو مطلوب: في هذا المثال، تتضمن وظيفة LookUp أنه يجب استرداد سجل واحد فقط وهذا كل ما يتم إرجاعه. إذا تم طلب المزيد من السجلات باستخدام وظيفة Filter —التي قد تكون مؤهلة لآلاف السجلات — يتم إرجاع صفحة واحدة فقط من البيانات في المرة الواحدة، بترتيب 100 سجل لكل صفحة. يجب على المستخدم الإيماء من خلال معرض أو جدول بيانات لرؤية المزيد من البيانات، وسيتم جلبها لهم تلقائيًا. يمكن للمصنع التفكير في مجموعات كبيرة من البيانات دون الحاجة إلى التفكير في قصر طلبات البيانات على أجزاء يمكن إدارتها.

  • يعمل فقط عند الحاجة: حددنا صيغة لخاصية Text في عنصر التحكم بالتسمية. ومع تغير المتغير المحدد، يتم إعادة حسابه LookUp تلقائيا وتحديث التسمية. لم يكن الصانع بحاجة إلى كتابة معالج OnChange من أجل التحديد، ولم يكن بحاجة إلى تذكر أن هذه التسمية تعتمد عليه. هذه برمجة تعريفية، كما تمت مناقشته سابقًا: حدد المُصمم ما يريدون الحصول عليه في الملصق، وليس كيف أو متى يجب جلبه. إذا لم تكن هذه التسمية مرئية لأنها على شاشة غير مرئية، أو لأن خاصية Visible الخاصة بها غير صحيح، يمكننا تأجيل هذا الحساب حتى تظهر التسمية والقضاء عليها بشكل فعال إذا كان ذلك نادرًا ما يحدث.

  • ترجمة بناء جملة Excel: يستخدم Excel من قبل العديد من المستخدمين، ومعظمهم يعرفون أن علامة العطف (&) تُستخدم لسلسلة السلاسل. يستخدم JavaScript علامة زائد (+) ولغات أخرى تستخدم نقطة (.).

  • أسماء العرض والترجمة: يُستخدم First Name في صيغة Power Fx بينما يُستخدم nwind_firstname في مكافئ JavaScript. في Microsoft Dataverse وSharePoint، يوجد اسم معروض للأعمدة والجداول بالإضافة إلى اسم منطقي فريد. غالبًا ما تكون أسماء العرض أكثر سهولة في الاستخدام، كما هو الحال في هذه الحالة، ولكن لها صفة مهمة أخرى تتمثل في إمكانية توطينها. إذا كان لديك فريق متعدد اللغات، فيمكن لكل عضو في الفريق رؤية أسماء الجداول والحقول بلغته الخاصة. في كافة الحالات، يتأكد Power Fx من إرسال الاسم المنطقي الصحيح إلى قاعدة البيانات تلقائيًا.

بلا تعليمات برمجية

لست بحاجة إلى قراءة وكتابة Power Fx لبدء التعبير عن المنطق. هناك الكثير من التخصيصات والمنطق التي يمكن التعبير عنها من خلال المفاتيح البسيطة ومنشئي واجهة المستخدم. تم بناء هذه الأدوات ذات التعليمات البرمجية المنخفضة لقراءة وكتابة Power Fx للتأكد من وجود مساحة كبيرة لشخص ما ليأخذها إلى أبعد من ذلك ، مع الإقرار بأن الأدوات بدون تعليمات برمجية لن تقدم أبدًا كل التعبيرات عن اللغة الكاملة. حتى عند استخدامها مع منشئين من دون تعليمات برمجية، يكون شريط الصيغة في المقدمة وفي المنتصف في Power Apps لتثقيف المصمم حول ما يتم القيام به نيابة عنه حتى يتمكن من بدء تعلم Power Fx.

دعونا ننظر في بعض الأمثلة: في Power Apps، توفر لوحة الخاصية تبديلات "بدون تعليمات برمجية" ومفاتيح لخصائص عناصر التحكم. من الناحية العملية، فإن معظم قيم الخاصة ثابتة. يمكنك استخدام منشئ الألوان لتغيير لون خلفية Gallery. لاحظ أن شريط الصيغة يعكس هذا التغيير، بتحديث الصيغة إلى مكالمة RGBA مختلفة. في أي وقت، يمكنك الانتقال إلى شريط الصيغة والمضي قدمًا في هذه الخطوةفي هذا المثال، عن طريق استخدام ColorFade لضبط اللون. تظل خاصية اللون تظهر في لوحة الخصائص، لكن رمز fx يظهر عند التمرير ويتم توجيهك إلى شريط الصيغة. يعمل هذا بشكل كامل بطريقتين: تؤدي إزالة مكالمة ColorFade إلى إرجاع اللون إلى شيء يمكن أن تفهمه لوحة الخصائص، ويمكنك استخدامه مرة أخرى لتعيين لون.

لا يوجد لون رمز.

هذا مثال أكثر تعقيدًا. يعرض المعرض قائمة بالموظفين من Dataverse. Dataverse يوفر طرق عرض فوق بيانات الجدول. يمكننا تحديد أحد هذه العروض ويتم تغيير الصيغة لاستخدام وظيفة Filter مع اسم طريقة العرض هذه. يمكن استخدام القائمتين المنسدلتين لطلب الجدول الصحيح وعرضه دون لمس شريط الصيغة. ولكن لنفترض أنك تريد المضي قدمًا وإضافة نوع. يمكننا القيام بذلك في شريط الصيغة، وتظهر لوحة الخصائص مرة أخرى رمز fx وتوجه التعديلات إلى شريط الصيغة. ومرة أخرى، إذا قمنا بتبسيط الصيغة إلى شيء تستطيع لوحة الخاصية قراءته وكتابته، فإنه يمكن استخدامه مرة أخرى.

بلا فرز رمز.

وقد كانت هذه أمثلة بسيطة. نحن نعتقد أن Power Fx يشكل لغة رائعة لوصف التفاعلات التي لا تستخدم التعليمات البرمجية. إنه موجز وقوي وسهل التحليل، ويوفر المساحة التي نحتاجها غالبًا مع "عدم وجود منحدرات" حتى الشفرة المنخفضة.

الكود الترويجي

يقوم صانعو الأكواد المنخفضة أحيانًا ببناء أشياء تتطلب مساعدة خبير أو يتم الاستيلاء عليها من قبل مطور محترف لصيانتها وتحسينها. كما تقدر المتخصصات أيضا أن تطوير التعليمات البرمجية منخفضة قد يكون أسهل وأسرع وأقل تكلفة من بناء أداة احترافية. لا يتطلب كل موقف القدرة الكاملة على Visual Studio.

يرغب المتخصصون في استخدام الأدوات المهنية حتى يكونوا أكثر إنتاجية. يمكن تخزين صيغ Power Fx في ملفات مصدر YAML، وهي سهلة التحرير باستخدام Visual Studio Code أو Visual Studio أو أي محرر نصوص آخر وتمكين وضع Power Fx تحت عنصر تحكم المصدر مع GitHub أو Azure DevOps أو أي نظام آخر لعنصر تحكم التعليمات البرمجية المصدر.

الكود الترويجي في Visual Studio Code.

رمز المحترفين GitHub.

يدعم Power Fx المكونات المستندة إلى الصيغ لمشاركتها وإعادة استخدامها أعلنا عن دعم المعلمات لخصائص المكونات، مما يتيح إنشاء وظائف محددة من قبل المستخدم مع مزيد من التحسينات في الطريق.

علاوةً على ذلك، يُعد Power Fx مفيدًا لجمع معًا المكونات والخدمات التي يبنيها الأخصائيون. توفر الموصلات الجاهزة الوصول إلى مئات من مصادر البيانات وخدمات الويب، وتمكّن الموصلات المخصصة Power Fx للتحدث إلى أي خدمة ويب REST، وتمكّ مكونات التعليمات البرمجية Power Fx للتفاعل مع JavaScript المخصص بالكامل على الشاشة والصفحة.

مبادئ التصميم

بسيط

تم تصميم Power Fx لاستهداف جمهور المنشئين، الذي لم يتم تدريب أعضاءه كمطورين. إن كان ذلك ممكنا، فنحن نستخدم المعرفة التي الجمهور قد تعرفها بالفعل أو يمكن التقاطها بسرعة. ويبقى عدد المفاهيم المطلوبة لكي تنجح في الحد الأدنى.

كما أن بساطة الأمر جيد أيضا للمطورين. بالنسبة للمطور الجمهور، نقوم بالتراجع إلى لغة رمزية منخفضة تخفض الوقت المطلوب لبناء حل.

تناسق Excel

تستعير لغة Microsoft Power Fx بشكل كبير من لغة صيغة Excel. نسعى للاستفادة من معرفة وخبرة Excel من العديد من الصانعين الذين يستخدمون Excel أيضًا. تكون الانواع و عوامل التشغيل و الدلالات الخاصة بالوظيفة أقرب ما يكون إلى Excel.

إذا لم يكن لدى Excel إجابة، فسننظر بعد ذلك إلى SQL. بعد Excel، تعد SQL هي اللغة التعريفية التالية الأكثر استخدامًا ويمكن أن توفر إرشادات حول عمليات البيانات والكتابة القوية التي لا يوفرها Excel.

تصريحي

يصف الصانع ما يريدون أن يفعل منطقهم، ليس بالضبط كيف أو متى ينبغي القيام به. يسمح هذا للمترجم بالتحسين من خلال إجراء عمليات بالتوازي، وتأجيل العمل لحين الحاجة، والجلب المسبق وإعادة استخدام البيانات المخزنة مؤقتًا.

على سبيل المثال، في ورقة عمل Excel، يحدد المؤلف العلاقات بين الخلايا ولكن Excel يقرر متى وبأي ترتيب يتم تقييم الصيغ. وبالمثل، يمكن اعتبار الصيغ الموجودة في التطبيق على أنها "إعادة حساب" حسب الحاجة بناءً على إجراءات المستخدم أو تغييرات قاعدة البيانات أو أحداث المؤقت.

وظيفي

نحن نفضل الوظائف النقية التي ليس لها آثار جانبية. ينتج عن هذا منطق يسهل فهمه ويمنح المترجم أكبر قدر من الحرية في التحسين.

على عكس Excel، فإن التطبيقات بطبيعتها تقوم بتغيير الحالة، على سبيل المثال، تحتوي التطبيقات على أزرار تحفظ التغييرات على السجل في قاعدة بيانات. وبالتالي، هناك بعض الوظائف لها تأثيرات جانبية، على الرغم من أننا نقوم بقصر هذا الأمر على الحالات التي قد تكون فيها مهينة.

إنشاء

حيثما أمكن، فإن الوظيفة المضافة تتلاءم جيدًا مع الوظائف الحالية. يمكن احالة الوظائف القوية إلى أجزاء أصغر يمكن استخدامها بسهولة أكبر بشكل مستقل.

على سبيل المثال، لا يشتمل عنصر تحكم المعرض على خصائص Sort وFilter منفصلة. بدلا من ذلك، يتم إنشاء الوظائف Sort وFilter معا في خاصية Itemsواحدة. واجهة المستخدم للتعبير عن سلوك Sort وFilter موجودة أعلى خاصية Items باستخدام محرر ثنائي الاتجاه لهذه الخاصية.

كتابة قوية

تعرف أنواع كافة القيم في وقت جمعها. ويسمح هذا بالكشف المبكر عن الأخطاء والاقتراحات الثريا أثناء تأليف.

يتم دعم الأنواع متعددة الأشكال، ولكن قبل استخدامها، يجب تثبيت نوعها في نوع ثابت ويجب أن يكون هذا النوع معروفًا في وقت الترجمة. يتم توفير وظائف IsType وAsType لأنواع الاختبار واختبار البيانات التي يتم تلقيها.

استدلال النوع

تشتق الأنواع من استخدامها دون إعلانها. على سبيل المثال، يؤدي تعيين متغير إلى رقم إلى إنشاء نوع المتغير كرقم.

يؤدي تعارض نوع الاستخدام إلى حدوث خطأ في وقت جمع المعلومات.

فاصلات عشرية حساسة للسكان المحليين

تستخدم بعض مناطق العالم نقطة (.) كفاصل عشري، بينما يستخدم الآخرون فاصلة (،). هذا ما يفعله Excel أيضًا. لا يتم ذلك عادةً في لغات البرمجة الأخرى، والتي تستخدم بشكل عام نقطة أساسية (.) كفاصل عشري لجميع المستخدمين في جميع أنحاء العالم. لكي تكون ودودًا قدر الإمكان للصانعين على جميع المستويات، من المهم ذلك 3,14 هو رقم عشري لشخص في فرنسا استخدم هذا النحو طوال حياته.

اختيار الفاصل العشري له تأثير متتالي على فاصل القائمة، المستخدم لوسائط استدعاء الوظيفة، وعامل التسلسل.

الفاصل العشري للغة المؤلف فاصل عشري Power Fx فاصل قائمة Power Fx عامل تسلسل Power Fx
. (نقطة) . (نقطة) ، (فاصلة) ؛ (الفاصلة المنقوطة)
، (فاصلة) ، (فاصلة) ؛ (الفاصلة المنقوطة) ؛؛ (فاصلة منقوطة مزدوجة)

مزيد من المعلومات: الدعم العمومي

‏‏بلا كائن موجه

إن Excel غير موجه للكائنات، وهو ليس Power Fx. على سبيل المثال، في بعض اللغات، يتم التعبير عن طول السلسلة كخاصية للسلسلة، مثل "Hello World".length في JavaScript. بدلاً من ذلك، يعبر كل من Excel وPower Fx عن هذا من حيث وظيفة، مثل Len( "Hello World" ).

تكون المكونات ذات الخصائص الأساليب موجهة نحو الكائن، ويعمل Power Fx معها بسهولة. ولكن حيثما أمكن، نفضل اتباع نهج وظيفي.

الموسعه

بإمكان المنشئين استخدام مكوناتهم ووظائفهم باستخدام Power Fx بحد ذاته. يمكن للمطورين إنشاء مكوناتهم ووظائفهم من خلال كتابة JavaScript.

سهلة للمطورين

على الرغم من أن صناع القرار هم هدفنا الأساسي، إلا أننا سنحاول أن نكون ودودين للمطورين كلما كان ذلك ممكنا. إذا لم يتعارض مع مبادئ التصميم الموصوفة سابقًا، فإننا نقوم بالأشياء بطريقة يقدرها المطور. على سبيل المثال، لا يمتلك Excel القدرة على إضافة التعليقات، لذلك نستخدم التعليقات الخطية والمضمنة على شكل حرف C.

تطور اللغة

تعد لغات البرمجة المتطورة ضرورية وصعبة. يشعر الجميع،عن حق، بالقلق من أن التغيير، بغض النظر عن حسن النية، قد يكسر الشفرة الحالية ويتطلب من المستخدمين تعلم نمط جديد. يأخذ Power Fx التوافق مع الإصدارات السابقة على محمل الجد، ولكننا نؤمن بشدة أيضًا أننا لن نحققه دائمًا بشكل صحيح في المرة الأولى وسنتعرف بشكل جماعي على ما هو الأفضل كمجتمع. يجب علينا أن نتطور، وقام Power Fx بتصميم الدعم لتطوير اللغة من البداية.

يتم تضمين طابع إصدار لغة مع كل مستند Power Fx تم حفظه. إذا أردنا إجراء تغيير غير متوافق، فسنكتب ما نسميه "محول التوافق الخلفي" الذي يعيد كتابة الصيغة تلقائيًا في المرة التالية التي يتم تحريرها فيها. إذا كان التغيير شيئًا رئيسيًا نحتاج إلى تثقيف المستخدم بشأنه، فسنعرض أيضًا رسالة بها ارتباط إلى المستندات. باستخدام هذا المرفق، لا يزال بإمكاننا تحميل التطبيقات التي تم إنشاؤها باستخدام إصدارات معاينة Power Apps منذ سنوات عديدة، على الرغم من كل التغييرات التي حدثت منذ ذلك الحين.

على سبيل المثال، قمنا بعرض الوظيفة ShowError لعرض شعار خطأ بخلفية حمراء اللون.

إظهار الخطأ.

كما يقوم المستخدمون بالعرض، لكنهم طلبوا منا أيضا توفير طريقة لإظهار شعار نجاح (الخلفية الخضراء) أو شعار معلوماتي (الخلفية الزرقاء). لذلك، توصلنا إلى وظيفة Notify أكثر عمومية يأخذ وسيطة ثانية لنوع الإخطار. كان من الممكن أن نضيف فقط Notify ونحفظ على ShowError بالطريقة التي كانت عليها، ولكن بدلاً من ذلك قمنا باستبدال ShowError بـ Notify. أزلنا وظيفة كانت في السابق قيد الإنتاج واستبدلناها بشيء آخر. نظرًا لوجود طريقتين لفعل الشيء نفسه، كان من الممكن أن يتسبب ذلك في حدوث ارتباك — خاصة للمستخدمين الجدد — والأهم من ذلك أنه كان سيضيف تعقيدًا. لم يشتكي أحد، فقد قدر الجميع التغيير ثم انتقلوا إلى ميزة الإعلام التالية.

هذه هي الطريقة التي يبدو بها التطبيق نفسه عند تحميله إلى أحدث إصدار من Power Apps. لم يطلب المستخدم أي إجراء لإجراء هذا التحويل، فقد حدث تلقائيًا عند فتح التطبيق.

يحل الإعلام محل ShowError.

ومن خلال أداة الإنشاء هذه، بإمكان Power Fx أن يتطور بشكل أسرع وأكثر قوة من معظم اللغات البرمجية.

بلا قيمة غير محددة

تستخدم بعض اللغات، مثل JavaScript، مفهوم قيمة غير محددة للمتغيرات غير المهيأة أو الخصائص المفقودة. من أجل البساطة، تجنبنا هذا المفهوم. يتم التعامل مع المثيلات التي قد تكون غير معرّفة في لغات أخرى كخطأ أو قيمة فارغة. على سبيل المثال، تبدأ كافة المتغيرات أحادية القيم بقيمة فارغة. يمكن لجميع أنواع البيانات استخدام قيمة البيانات الفارغة.

أنواع البيانات
عوامل التشغيل والمعرفات
الجداول‏‎
متغيرات
منطق الاقتناع
الدعم العمومي
قواعد التعبير
قواعد صيغة YAML
الصيغ في تطبيقات اللوحة