Interpolated strings

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Tue Apr 18 17:30:31 PDT 2017


On 4/18/2017 4:58 PM, bpr wrote:
> Here's how it's done in Nim, a statically typed language similar to D, but with
> Python syntax, and macros. It takes some knowledge to understand, sure, macros
> are not a beginner tool, but wouldn't say this is extremely complex. I bet a
> D-with-macros would have a similar complexity solution.

I'm not saying you cannot do cool and useful things with AST macros. My position 
is it encourages absolutely awful code as (usually inexperienced) programmers 
compete to show how clever their macros are.

The language gets balkanized into a collection of dialects that are 
unrecognizable across user groups.

As a compiler dev who gets stuck figuring out users' bug reports, dealing with 
templates is bad enough (the first thing I do with a bug report is redo it to 
remove all the templates). I do not want to deal with some custom syntax. If I 
may pull the "I'm older" card, programmers will find as they gain experience 
that the AST macros are just not worth it.

This disastrous state of affairs has occurred with every language that supports 
macros.

If you want a nauseous example, check out the Boost C preprocessor 
metaprogramming library. Or C++ expression templates - so cool, and yet so 
utterly wretched.

Reminds me of a story from the 1980s. Microsoft's MASM stood for "Macro 
Assembler". Inevitably, Microsoft programmers invented a pile of macros that 
sort of turned asm programming into a pseudo-high-level language. This was 
shipped with every copy of MASM.

A friend of mine who worked at MS was once given the task of fixing a bug in 50K 
of MASM code written in this macro language. The author of it had long since 
moved on. Every coder assigned to this task failed. My friend got it fixed in a 
couple hours. He was asked by his astonished manager how he'd managed to do it:

"I assembled the code into an object file. Then I disassembled it with Zortech's 
OBJ2ASM, figured out how to fix it, then submitted the disassembled code as the 
new source code."



More information about the Digitalmars-d mailing list