Pimp My Programming Language - Page 2

Meanwhile, Siek, who started the tangent, said, "We don't have to 'open' the language to do that sort of thing." He said as long as he can do compilation at compile time and manage chunks of code that is "pretty much as powerful as I would want."

Meanwhile, Meijer also asked if syntax was the reason a language succeeds or not-basically how important syntax is. Anders Hejlsberg, a Microsoft technical fellow and creator of C#, said, "I think it [syntax] matters a lot. Our brain is a pattern recognizer and syntax helps us think in certain ways."

Well, "it does and it doesn't," Bracha said, "because people are trained to certain syntax, but they're not geared to learn a new syntax. I think Parkinson's Law of Triviality applies here: 'The smaller an issue, the more people will discuss it.' Where you put a semicolon shouldn't matter."

For his part, Crockford said he believes the whole thing comes down to fashion.

"We like to imagine the process of programming language design is a scientific process, but it's actually all about fashion," Crockford said. "I think the process of language design has more to do with fashion than the question of the ideas behind them, and I think that's unfortunate."

On a different note, Hejlsberg said metaprogramming is "high on my list of things to attack in C#-to make it a better metaprogramming system. To open up the black box ... Enterprise applications live and die by metaprogramming. There's code generation everywhere. And the tools for doing this are terrible; we need a modern approach to that."

However, Schulte said, "I think metaprogramming at the syntax level is a really bad idea. You don't want to open up the box."

Metaprogramming is the writing of programs that write or manipulate other programs-or even themselves-as their data, or that do part of the work at compile time that is otherwise done at run-time.

Indeed, that is what Bracha reflects on. "It's really about reflection," he said. "Metaprogramming is just about one program manipulating another; reflection is about a program manipulating itself."