Microsoft представила новый язык программирования Power Fx

12.03.2021      41846

Компания Microsoft расширила возможности своей платформы Power Platform и представила язык программирования Power Fx. Его синтаксис вдохновлен формулами электронных таблиц Microsoft Excel.

Ключевые особенности

Power Fx – проект с открытым исходным кодом. В качестве основы для него выбрали Microsoft Excel потому, что много пользователей уже знакомы с электронными таблицами и смогут быстро начать писать код на новом языке. Таким образом, Power Fx будут использовать не только профессиональные разработчики, но и другие специалисты из самых разных областей бизнеса. Язык позволит им быстро реализовать логику программы и решить практически любую прикладную задачу.

Power Fx разрабатывается в рамках концепции low-code. Она предполагает, что создание, настройка и совершенствование даже сложных программных систем не требует написания большого количества кода.

Обычно low-code-платформы используют визуальные интерфейсы и позволяют составить программу из готовых блоков. Интуитивно понятные инструменты позволяют строить готовые решения без знаний об архитектуре ПО, процессах разработки, жизненном цикле. Один из примеров low-code – Scratch, который преподают в начальной школе для обучения основам программирования.

 

 

Цель проекта

Зачем low-code-платформам отдельный язык программирования, если они изначально рассчитаны на визуальное проектирование – когда вы перетаскиваете готовые объекты в нужные места экрана, задаете связи между ними и устанавливаете параметры? В Microsoft пояснили, что в задачах реального мира этого часто недостаточно. Поверх такой модели нужен слой логики, который точно отразит рабочие процессы. Например:

  • нужно быстро вывести список клиентов, которые за последние 7 дней выходили в сеть в пределах 15 км от определенного места;

Или:

  • нужно просмотреть информацию об определенном клиенте, а по клику на его имени невыполненные действия отображались в верхней части экрана.

С помощью готовых блоков реализовать подобные сценарии часто не получается. Настраиваемая логика – именно то, чего не хватает многим low-code-платформам. А те, которые ее поддерживают, предлагают написать код на традиционных языках программирования – сложных и неочевидных для начинающих. Power Fx в этом плане значительно проще и доступнее.

 

 

Связь с Excel

Power Fx использует практически тот же синтаксис создания функций, что и Excel. Формулы здесь декларативны и мгновенно пересчитываются, как и в электронных таблицах. Таким образом, обновлять вручную значения переменных и данные, рассчитанные ранее, не придется – и это сэкономит время.

Кроме того, при создании решений на традиционных языках программирования порой сложно найти и понять все части кода, которые влияют на переменную. В формулах существует только один способ вычисления значения. Это гарантирует, что вы будете знать, почему данные изменились.

Сравните, насколько проще создать решение несложной задачи на Power Fx по сравнению с JavaScript:

 

 

Перспективы Power Fx

По данным IDC, самый популярный язык программирования, JavaScript, сегодня используют 11,7 млн разработчиков. К 2024 году число профессиональных программистов, которые трудятся полный рабочий день, вырастет на 32% и достигнет 19,4 млн.

В Microsoft верят, что Power Fx также продемонстрирует подобный рост аудитории. Язык расширит круг людей, которые потенциально могут создавать сложные программные решения – даже тех, кто не занимается разработкой профессионально.

В Power Fx доступны инструменты, привычные для специалистов, например, редактирование в сторонних программа – от «Блокнота» до Visual Studio Code, поддержка систем контроля версий. Таким образом, программисты и люди от бизнеса смогут работать быстрее и находить точки соприкосновения с миллионами других людей – архитекторов ПО, производителей, клиентов, партнеров.

 

 

Power Fx уже используется в Microsoft Power Apps. В ближайшее время разработчики обеспечат поддержку нового языка в других проектах Power Platform: Dataverse, Power Automate, Power Virtual Agents.

В будущем Power Fx можно будет задействовать для создания ботов и решения других задач автоматизации. С его помощью удобно работать не только с цифрами, но и с другими видами контента. Он позволит обновлять значения в реальном времени и создавать системы любой сложности, не вникая в нюансы использования неочевидных синтаксических конструкций.

 


Автор:
Обозреватель


См. также

Новость ИТ и 1С

Минцифры подготовило проект постановления по запуску платформы, на которой ИТ-специалисты могут пройти добровольное тестирование и подтвердить свою квалификацию.

11.12.2024    868    user1915669    3       

2

Новость ИТ и 1С ФНС ЭДО

Федеральная налоговая служба запустила интерактивный сервис, позволяющий формировать в машиночитаемом виде договоры, контракты, соглашения и спецификации. Чтобы создать документ и скачать получившийся файл, регистрация не требуется.

03.12.2024    723    user2114475    0       

2

Новость ИТ и 1С

Российский Альянс по искусственному интеллекту обновил требования к специалистам по ИИ: вышла новая модель с основными профессиями и навыками. Теперь базовых профессий в сфере ИИ осталось только четыре.

01.11.2024    880    user1915669    0       

3

Новость ИТ и 1С

Система платежей «Волна» по планам сделает возможной бесконтактную оплату для владельцев IPhone в России, а BRICS Pay позволит совершать безналичные расчеты иностранцам по картам Visa и Mastercard.

23.10.2024    1150    AnastasiaKl    0       

4

Новость ИТ-компания ИТ и 1С

Конструктор сайтов Wix уходит из России с 12 сентября 2024 года – перестанут работать все российский аккаунты. Сайты, привязанные к аккаунтам, также перестанут работать.

11.09.2024    1178    user1915669    2       

2

Новость Искусственный интеллект ИТ и 1С

ИИ научат разработке цифровых интегральных микросхем – несколько российских научных институтов заявили об участии в проекте. Проект рассчитан на 3 года – с 2024 по 2026.

23.07.2024    802    user1915669    0       

2

Новость Дата-центры Искусственный интеллект ИТ и 1С

Развитие искусственного интеллекта и цифровых сервисов в России стало причиной роста потребности в мощных центрах обработки данных. Эксперты прогнозируют, что дефицит ЦОД, который уже наблюдается сегодня, в ближайшие годы будет только усиливаться.

18.07.2024    925    AnastasiaKl    0       

1

Новость ИТ и 1С

В сентябре 2024 года видеоигры в России начнут маркировать – пока на добровольной основе. Геймерам будут сообщать о семи видах чувствительного (неприятного) контента в игре.

17.07.2024    1006    user1915669    0       

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 34 12.03.21 14:30 Сейчас в теме
К какому поколению стоит отнести данный язык: 4GL или 5GL?
Но, если честно, ничего особого в приведённом примере не увидел
Более короткий синтаксис - ну дык это решается просто библиотеками.
Хотя, если честно, вообще не понял как работает ни первый ни второй листинг, хотя вроде бы понял, что идёт банальный поиск первой строки по некой таблице "Orders" c отбором по Номеру (видимо в именованной ячейке "Selected"), и выводом в вложенного поля Фамилии сотрудника из этой строки (с конкатенацией со строкой - причём на выходе должна быть полностью пустая строка - если не нашли).
Это я понял из примера на коде "Power FX" - но где-то за кадром осталось то - как задаются (короткие имена) и этой таблицы "Orders" и ячейки "Selected".
Код на JavaScript вообще какой-то явно перегруженный. Пример составлен специально чтобы очернить JavaScript
Артано; +1 Ответить
2. Darklight 34 12.03.21 15:15 Сейчас в теме
Вот так бы выглядела реализация этой функции в Python (на псевдофремоврке)

def LookUp(DataSource, **Filter)
	if DataSource is none :
		return none;

	filter = DataSetFilter();
	for flt in Filter:
		filter.Add(flt.Key,flt.Value, DataSetFilter.Operation.Equal)

	return DataSource.filter(filter).first();
Показать


Единственное чего не хватает Питону для полноты - это встроенной проверки на null (Power FX судя по всему поддерживает nullable изначально, и изначально же везде использует безопасные операторы, в т.ч. разыменования "." (аналогично как в C# или Kotlin "?." - но в этих языках нет нефиксированных именованных аргументов).

Конечно, можно предположить, что обычным фильтром на "=" возможности "Power FX" не ограничивается - и на нём можно написать и такой вызов "LookUp(Order, Number in AllowedList, Date between [DateFrom, DateTo], Employee != CurrentEployee)" (ну тут понятно - что в правой части перечисляемых выражений стоят какие-то именованные источники значений, а "[ ]" формирует массив или список)
Такой синтаксис уже именованными аргументами не передать. Но это всё-равно не повод делать ради этого отдельный язык программирования!
Можно было бы просто либо расширить синтаксис языка (как когда-то в питоне появились нефиксированные именованные параметры функций)
Или - я бы ввёл специальный тип - "Expression" - от которого можно было бы наследовать свои типы выражений с заданными параметрами формата ) - вот так бы мог выглядеть заголовок такой функции на Питоне "def LookUp(DataSource, *Filter : FilterExpression)" - ну сами элементы FilterExpression - уже бы содержали в себе текстовые имена поля, оператора, а так же ссылки на значение - которые нужно было бы уже просто перевести в алгоритм заполнения экземпляра объекта фильтрации источника данных аналогично приведённому выше примеру (оператор только найти надо будет в перечислении типа оператора, ну и если надо - отдельно обработать случай с двойными значениями интервалов - переданных в списке/массиве)
Ну а списки в Python тоже определяются квадратными скобками

Так же можно было расширить Kotlin, C#....
Всё пользовательское удобство выражается только удобным API библиотек с небольшой долей синтаксического сахара
Ну я бы ещё макрофункции добавил (хотя бы как в Nemerle) - вообще лепота была бы!

Так в чём новаторство то Power Fx?
4. Darklight 34 12.03.21 16:47 Сейчас в теме
(2)Немного подумав, решил предложить ещё более простое решение, чем ввод cпециального типа "Expression" (хотя это было бы круто). Но уже на языке Kotlin - в нём есть инфиксные функции - с помощью них очень удобно делать комбинции левого и правого выражения
например так

class EQExpression : OperationExpression {...} //Обычный класс
...

infix fun eq(filed : String, value : Any)  = EQEx * pression(field, value)
infix fun neq(filed : String, value : Any) = NEQEx * pression(field, value)
infix fun inside(filed : String, value : list<Any>) = INEx * pression(field, value)
infix fun between(filed : String, value : list<Any>) = BetweenEx * pression(field, value)
...

fun LookUp(DataSource : DataSourceTable, *Filter : Expression) {

return DataSource?.with {
   myfilter = DataSetFilter();
   Filter.foreEach { myfilter.Add(it.Left,it.Right, it.Operator) }
   filter(myfilter).first(); //this = DataSource контекст объекта, и возвращает из with значение последнего вычисления, красота
}
}

LookUp(Order, "Number" inside AllowedList, "Date" between [DateFrom, DateTo], "Employee" neq CurrentEployee)
Показать

Может и выглядит не так красиво как на Power Ex (особенно необходимость указывать имена в кавычках) - но если нужно красивее - то нужно просто немногого доработать существующий язык - чем делать новый!

P.S.
В этих словах "Ex * pression" - это движок infostart код попортил - зёздочек с пробелами там быть не должно
3. booksfill 12.03.21 16:02 Сейчас в теме
Не понял - это какой-то учебный язык (для альтернативно одаренных?), или специализированный вариант для конфигурирования объектов "производственного процесса"?
Например, на металлургическом комбинате можно таким образом настроить очередность открытия бункеров с присадками и т.п..

Если нет, то зачем?

Или это такой троллинг: "Язык расширит круг людей, которые потенциально могут создавать сложные программные решения – даже тех, кто не занимается разработкой профессионально"?

Я, не владея данными об устройстве телевизора, могу, потенциально (прелестный оборот речи) обеспечить управление сложной системой посредством пульта управления и "языка", который, например, позволяет вбить ip адрес роутера, или задать наименование каналов.
Называть себя не то. что электронщиком, но даже продвинутым пользователем телевизора, было бы несколько странно.

Кстати, "надежно" вбить ip адрес тоже не получается - где-то раз в квартал телевизор от интернета отключается :(


P.S.
IMHO надо создавать системы, которыми могут пользоваться даже идиоты, но не стоит доверять их создание идиотам.

Я за облегчение работы программистов, хоть визуально (5GL), хоть при помощи ИИ.

Единственное чего я не могу понять, почему авторы подобных "языков" надеются, что у пользователей получится создать неэффективные, но надежные программы, если 90% сложности большой программы - это именно архитектура.

Болит голова - топор! Не хватает программистов? Обучим грузчиков складывать "блоки", им не привыкать.
5. Darklight 34 12.03.21 16:54 Сейчас в теме
(3)полностью с Вами согласен.
Как я понял язык создан сейчас в виде эксперимента для новой версии Excel не совсем для идиотов, а для тех, кто в состоянии освоить формы Excel - время покажет как оно приживётся

Ещё поправлю - что визуальное программирование - общепринято относить к 4GL (4-е поколение языков) - хотя это некоторая условность
А вот применение ИИ при трансляции программного кода в исполняемые команды - это как раз уже языки 5GL - но таковых практически не существует пока ещё

И да - наверняка тут тоже будут какие-то графические ассистенты для задания таких расширенных формул практически одной только мышью
7. booksfill 12.03.21 17:17 Сейчас в теме
(5)
Как я понял язык создан сейчас в виде эксперимента для новой версии Excel


А, ну тогда даже хорошо. Т.к. мало кто из пользователей Excel умеет готовить даже VBA.
Я, кстати, за остутсnвием практики, тоже сходу мало чего вспомню. :)

Может быть даже сумеют сделать так, чтобы не объяснять чем округление отличается от форматирования, а то мой "любимый" вопрос: "Почему я складываю 20 + 15 и получаю 26"?
6. awk 745 12.03.21 17:15 Сейчас в теме
SQL - то же придуман для пользователей, однако терпеть его приходится программистам.
Darklight; zqzq; Cерый; +3 Ответить
8. booksfill 12.03.21 17:19 Сейчас в теме
(6)
Боялся это написать.:)
Ибо нет более наглядного примера, когда хотели шоб пользователи сами такой ерундой занимались.
А вылилось в непростые курсы для программистов и пучок диалектов.

Справедливости ради, многие пользователи в то время были куда как более продвинутыми.
Darklight; shard; PowerBoy; Jeka44; awk; +5 Ответить
11. Darklight 34 15.03.21 10:52 Сейчас в теме
(8)Справедливости ради, пользователей, которые умеют написать запрос в 1С (в ручную или хотя бы конструктором запросов) - я встречаю до сих пор, но их очень мало, примерно столько же, сколько и тех, кто готов пользоваться (настраивать) готовые запросы в консоли запросов или настраивать СКД.
Абсолютное большинство современных способно лишь заполнять пару полей на основной форме отчёте (акромя периода и организации) и нажать "Сформировать".

Вот я и думаю, нафига вообще нужны такие пользователи - не проще ли автоматизировать всю их работу и перевести документооборот полностью в электронную форму (оставив только нескольких продвинутых пользователей для анализа и контроля, ну и формирования задач автоматизации) - это же какой профит по бюджету должен быть
9. Darklight 34 15.03.21 10:44 Сейчас в теме
(6)Тогда пользователи сами были либо программистами, либо инженерами. Гуманитариев тогда к настройкам программ вообще не допускали ;-)
10. awk 745 15.03.21 10:51 Сейчас в теме
(9) Да что вы говорите? Пересмотрите фильмы "Привидение" и "Терминатор 2". От там биржевой инженер и инженер полиции хорошо показаны.. :P
12. Darklight 34 15.03.21 10:52 Сейчас в теме
(10)Это кино...
В котором рядовой пользователь сам чинит глюки компьютера или ведёт его взлом ударом ладонью (в особых случаях - кулаком) по.... МОНИТОРУ
14. awk 745 15.03.21 10:55 Сейчас в теме
(12) Ага... Более того это фантастика. Только там показана жизнь в 80-х. Эра создания SQL.
16. Darklight 34 15.03.21 11:18 Сейчас в теме
(14)Считаю язык SQL - абсолютно устаревшим (даже такие современные и развивающиеся диалекты как Transact SQL, PL/SQL).
Не считаю их пригодными (на будущее) ни для профессионалов, ни для автоматизации (кодогенерации) ни для применения на пользовательском уровне.

Нужен(ы) более практичные и простые языки. А самое главное, нужны более продвинутые ИИ-анализаторы этих языков - чтобы запросы как можно более терпимыми к тому как они составлены (насколько хорошо) - не важна форма запроса данных, важна точность (хотя и над тем, что важна точность - тоже можно поспорить - ведь это тоже усложняет построения запроса, а зачастую - точность (в пользовательских запросах) не так уж и важна - но это уж очень сложный вопрос). Но ИИ должен уметь понимать, что точность можно повысить, и, либо сразу её повышать - если это можно сделать однозначно, либо давать простые рекомендации для пользователя - когда возможны неоднозначные нюансы).

Вот язык Power FX - это, возможно попытка Microsft в создании такого языка - более простого и дружественного для всех (без ущерба в производительности), особенно на фоне других современных языков программирования.

Но, пока, я не увидел в этом языке ничего особо инновационного, что сделало бы его более удобным языком, чем Python или Kotlin (с библиотеками и небольшими расширениями языка). В сравнении с Java - да, конечно, разница будет видна - но ведь есть куда более дружественные, мощные и современные языки - чем Java

Хотя, может просто не хватает примеров, чтобы полноценно оценить всю мощь синтаксиса нового языка (именно синтаксиса, а не API встроенных библиотек).

Я, вот тоже, прорабатываю идею замены языка SQL (и вообще языка обработки данных в т.ч. вне СУБД) - именно языка 5-го поколения (ну или как минимум поколения 4GL+), который должен быть прикиданным-декларативно-императивно-функциональным (гибрид - как это модно нынче), но алгоритм на нём перед выполнением должен анализироваться, оптимизироваться (по смыслу) и транслироваться ИИ в более чёткий императивный язык - а далее уже компилироваться в тот или иной байткод оптимизирующим компилятором (и далее уже исполняться в т.ч. компилироваться в машинный код при необходимости). Считаю, что будущее за такими языками! А SQL устарел! Как устарел и VBA, Java, Python, Kotlin... как язык бизнес-приложений и обработки данных!
13. user1534961 15.03.21 10:55 Сейчас в теме
Интересно, сколько организаций имеют настроенное oData для получения данных из 1с в ексель.?
15. user1534961 15.03.21 10:57 Сейчас в теме
А если sql 'це рiдна мова', чему удивляться? При капитализме жить жизнью предприятия нормально.
17. MikhailDr 15.03.21 12:58 Сейчас в теме
1С тоже изначально задумывался как язык программирования для бухгалтеров, но что-то пошло не так. Не верю я, что обычный пользователь полезет что-то программировать, а если и будут, то их количество будет в долях процентов от общего измеряться.
Оставьте свое сообщение