Microsoft Unveils Bosque, Throwing Yet Another Stone Into an Ocean of Programming Languages

B. Shimmin

Summary Bullets:

  • Microsoft’s new Bosque programming language may never rival top-tier options like Python or JavaScript; it might even fail miserably as an active language, drowning amid a sea of available options.
  • But, if that failure improves the state of software development, Bosque will have succeeded admirably.

What’s wrong with JavaScript, Java, C++, C#, Python, Ruby, and the two hundred-plus active programming languages available in the market today? Do we really need one more programming language? Apparently, the folks in Redmond, Washington think so.

Microsoft has introduced a brand new programming language with grand ambitions. Released as an open source project under the MIT license, Microsoft Bosque aims to overthrow a number of long-held development paradigms with the intent of improving developer productivity and setting the stage for what the vendor calls a “second golden age” of software development.

Heavily influenced by the omnipresent JavaScript language, Microsoft’s own creation (TypeScript), and even emerging development ideas surrounding machine learning (ML), Bosque emphasizes productivity and quality by streamlining core development ideas. Most notably, the language does away with the idea of loops, which are famous for their ability to define useful recursive ideas such as “do something so long as something else persists.”

What does this second golden age look like, sans loops? Here’s a comparative example from both JavaScript and Bosque:

JavaScript

var: number[] a = [...];
var: number[] b = [];
for(var i = 0; i < a.length; ++i) {
b.push(a[i]*2);

Bosque

var a = List[Int]@{...};
var b = a.map[Int](fn(x) => x*2);

Short and sweet, albeit somewhat opaque for those steeped in JavaScript. And best of all, no pesky loops.

So, what’s the problem with looping constructs? Basically, they can introduce a great deal of complexity for both those who maintain a piece of code and the compiler responsible for turning that code into an executable application, particularly when multiple loops are nested within one another. Interdependencies between nested loops can, for example, make it particularly difficult for developers to root out the cause of an error when that error spans multiple ‘for’ loops in the code.

Enter Bosque, which completely does away with ideas like loops in order to root out what Bosque’s creator, Mark Marron, calls “accidental complexity.” The idea is straightforward: break down the requirement that software code reflects the needs of the underlying hardware and replace those notions with something that more closely matches the intent of the developer.

For Marron, this notion of intent is vitally important, as it elevates what the software does over what the software runs on, thereby evolving beyond the constraints of structured programming that have dominated software for the past four decades. For Marron, Bosque doesn’t simply do away with structured programming; rather, it functions as structured programming version 2.0, preserving what works well in languages like C++, Java, JavaScript, Python, et al. while doing away with sources of complexity like looping code structures.

And yet, Bosque remains just one more programming language in a growing sea of languages. Worse, it’s not really a true language at this time. Borrowing heavily from JavaScript and implemented on top of Microsoft’s own TypeScript, Bosque is nothing more than a core language design at this point – a core language design, not a true language. That is, it’s meant to drive conversation, not keyboards.

For that reason, and because there are still a number of unanswered questions surrounding the value of Bosque’s more severe ideals (e.g., doing away with looping structures), it is highly unlikely that it will on its own meet the author’s stated objective of enabling “a second golden age of developments in compilers and developer tooling” now or in the near future.

Nevertheless, Bosque is critically important because it opens up a dialogue, a conversation surrounding the need for programmers to build software according to intent, not in accordance with outdated notions invented back when software and hardware were not very far removed from one another.

If Bosque does nothing but influence current and future languages by calling into question what are quite simply blindly held beliefs, replacing those with something unproven but potentially compelling, then it will have succeeded. It will have moved the needle in the direction of improvement of innovation.

And who knows? The vagaries of fate may call on Bosque to meet some as yet unknown need. When Python was first introduced, no one could have guessed that it would, for instance, become the dominant language for data scientists. Conversely, despite the continued dominance of Linux, the Perl language is rapidly sinking into obscurity. What’s the difference? In a word, utility.

Languages that meet broad or specific needs stick around. Perl failed to adapt to changing developer needs, while Python in essence stumbled into a niche (but extremely influential) opportunity. The only measure between the two and between Bosque’s two possible outcomes – success or failure – is time.

What do you think?

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.