The Programming Gurus Playfully Dissed JavaScript

By Darryl K. Taft  |  Posted 2012-04-03 Print this article Print


Ironically, the programming gurus€™ playful dissing of JavaScript came at the same time as the JSConf 2012 JavaScript conference was taking place in Scottsdale, Ariz.

Meanwhile, the discussion also broke down to the benefits of functional programming versus imperative programming. Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state. The difference between a mathematical function and the notion of a "function" used in imperative programming is that imperative functions can have side effects, changing the value of program state. A key tenet of functional programming is the concept of immutability. In functional programming, an immutable object is an object whose state cannot be modified after it is created.

€œThe challenge we try to solve is, we have to move from sequential programming to parallel programming, and we have to shift from imperative programming to functional programming€ to do so, Odersky said.

Yet, Hejlsberg said, €œI think the trick is getting there and having any semblance of performance left.€ He lamented the performance of functional programming languages while acknowledging the use of functional technology.

€Functional data structures are very useful,€ Hejlsberg said. He noted that Microsoft€™s "Roslyn," which is a set of APIs for exposing the Microsoft C# and Visual Basic .NET compilers as services available at runtime, is based on functional data structures.

However, he said: €œThe whole trick is making these new data structures performant enough. You can go further and further with functional, but there€™s always going to be that ultimate imperative nirvana.€

For his part, Alvaro said he believes the hard problems in programming continue to be in distributed computing, and they have become more urgent with the advent of the cloud. But, he said, €œIt€™s the same hard problem we€™ve been trying to solve.€

Alvaro recommends maximizing monotonicity. The Bloom programming language is based on the CALM principle. CALM is Consistency as Logical Monotonicity. A block of code is logically monotonic if it satisfies a simple property: Adding things to the input can only increase the output, according to a description of Bloom. By contrast, non-monotonic code may need to €œretract€ a previous output if more is added to its input.

As the discussion wound down, Alvaro noted that he believed adding support for certain complex functions in languages was a good way to go because €œverification€ can be achieved through the language.

However, Odersky said, €œWe are way past the point where we can verify against language.€

Darryl K. Taft covers the development tools and developer-related issues beat from his office in Baltimore. He has more than 10 years of experience in the business and is always looking for the next scoop. Taft is a member of the Association for Computing Machinery (ACM) and was named 'one of the most active middleware reporters in the world' by The Middleware Co. He also has his own card in the 'Who's Who in Enterprise Java' deck.

Submit a Comment

Loading Comments...
Manage your Newsletters: Login   Register My Newsletters

Rocket Fuel