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
"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