Development

This Week in Programming: Microsoft’s Power Fx ‘Low Code’ Language

6 Mar 2021 6:00am, by

This past week, Microsoft held its annual IT and developer conference, Microsoft Ignite, where it released a number of new products and features, among them the introduction of Microsoft Power Fx, which it calls “the low-code programming language for everyone.” Now, in reality, Microsoft Power Fx isn’t really all that new, but rather the name given to an open source “formula language for low code that’s based on Microsoft Excel” that was already serving as the basis of Microsoft’s no-code Power Apps canvas.

According to Microsoft, the release is exciting because Power Fx is open source, it’s based on the recently-made-Turing-complete Excel language, and because it is “built for low code.” This first point is important because, they point out, Power Fx is based on “the exact syntax that hundreds of millions of people are already using” as opposed to the 11.7 million software developers currently estimated to be writing JavaScript.

Beyond that, the importance in Power Fx may lie in the hope that it will serve as a bridge, as program manager Greg Lindhorst writes in the more in-depth introduction to Power Fx: “It enables the full spectrum of development from ‘no code’ to ‘pro code’ with no cliffs in between, enabling diverse teams to collaborate and save time and expense.”

On the low-code end of things, Lindhorst notes, “the goal is to keep the number of concepts a maker needs to understand to a minimum, ideally no more than an Excel user would already know,” and to this end, Power Fx acts much like Excel, in that the coder doesn’t need to be concerned with how the program functions. Instead, it acts much like Excel, recalculating whenever the code or data changes. On the pro code end of things, Lindhorst points to the ability to unpack a canvas app into constituent parts that can be edited with Visual Studio Code or Visual Studio, be put under source control with GitHub or Azure DevOps, and the ability to create pure user defined functions for reuse, as you might with any regular language.

If you find yourself looking at this news with a level of skepticism and doubt, you are not alone, of course. To find some grumblings about how the promise of low code can leave even the most experienced development teams lost in a morass, as always just head on over to Hacker News and peruse the comments. To whit: “We recently tried to build a relatively simple PowerApps application — under the assumption it would save time over pumping out a React boilerplate form. Never again.”

Similarly, Janet Swift, author of several books about spreadsheets and writer at iProgrammer, takes some issue with Power Fx, writing that “I really don’t see Power FX becoming much of a power in the land of languages — it has been done before. It will probably hang around for a few years if it’s lucky and then the plug will be pulled when fashions change. […] Personally I’d like to see Microsoft giving some love to VBA — it’s not perfect, but the object model it works with is still current. Why they abandoned their almost excellent glue language and have been trying to replace it ever since. is a mystery to me.”

Ultimately, it likely isn’t whether Power Fx can become a power among languages, but rather if it can fulfill this in-between purpose, connecting no code and low code to pro code, that will determine whether or not it hangs around. Of course, being backed by Microsoft is one argument in that direction, and the team currently says they are aiming to “extract the language and documentation from Power Apps canvas and generalize it for other contexts,” so this may be something you’ll see in other contexts soon enough.

This Week in Programming

  • Visual Studio Code Adds M1 Support: February’s release of Visual Studio Code has arrived, joining a number of other bits of software out there in adding support for Apple Silicon builds, among a number of other features. M1 support means that those of you lucky enough to have the fast new Apple silicon will be able to use VS Code without emulation with Rosetta. The popular code editor also adds some accessibility and timeline view improvements, as well as the addition of persistent terminal processes, brackets extensions, and the extensions bisect tool that we discussed last week, that makes it easier to root out the faulty extension bogging everything down. If you’d like to find out more about this latest release, as these are just a few of the latest features, the VS Code team is also hosting a livestream on Thursday, March 11 at 8 a.m. PT.

  • Visual Studio Addresses C++, Adds Repeated Edits IntelliCode: Not to be confused with Visual Studio Code, the Visual Studio IDE has released v16.9 and the v16.10 Preview 1, with several features around C++, .NET Productivity, an address sanitizer, XAML tooling, and IntelliCode teams. This release is set to be the next long-term servicing release, which means that version 16.9 will be supported with fixes and security updates for one year after the release of the next servicing baseline. As for those new features, they include C++ conformance, C++ IntelliSense improvements, and a C++ address sanitizer, as well as improved call stack handling of stack overflow scenarios, not to mention what they’re calling “frictionless repeated edits.” This last feature gets its own blog post, but the TLDR; is that IntelliCode can now detect when you might need to make repetitive code changes and do it for you, that way you don’t have to stop what you’re doing to find all the locations where the change is necessary.

  • Flutter 2 Promises Platform Agnosticism: Google has dropped Flutter 2, in what it is calling “a major upgrade” to the framework, which it now refers to as a “portable framework” instead of a “mobile framework.” That change comes with the ability to deliver native apps to not only iOS and Android, but also Windows, macOS, and Linux, as well as several browsers, and even embedded apps for cars, TVs, and other smart appliances. “Our goal is to fundamentally shift how developers think about building apps, starting not with the platform you’re targeting but rather with the experience you want to create,” they write. The biggest news from this release, they say, is “production-quality support for the web,” as enabled by Google’s Dart programming language. Dart, they note, is also seeing the release of Dart 2.12, the language’s “largest release since 2.0, with support for sound null safety.” While the blog post announcing Flutter 2 is long enough, Google says there’s far more than they could even include there, so if you’re still interested, they also provide a separate technical blog on Flutter 2 for even more details.

A newsletter digest of the week’s most important stories & analyses.