"
You are confronted with the problem of wasting a lot of time writing
basement level code to access and update deep values. You think "Great!
I can write DSL or combinators to solve this!". Now you got two
problems, and you haven't come any closer to solving the first one. The
DSL still maps to functions which needs to access and update these
values, and that code is still painful to write. Your next step is to
think "Great! Let's generate all that code then!". Now you got three
problems, and you better hope to have not made any error when writing
that code generator or you'll waste a lot more time. Speaking of time,
by the time you get to that point the PHP developer has already long
finished his bug-free implementation of the same code and is moving on
to other tasks."
Heh, interesting. That brings up this interaction, which I feel characterizes some of the problem:
http://erlang.org/pipermail/erlang-questions/2013-January/07...
Loïc's response to him is worth quoting:
" You are confronted with the problem of wasting a lot of time writing basement level code to access and update deep values. You think "Great! I can write DSL or combinators to solve this!". Now you got two problems, and you haven't come any closer to solving the first one. The DSL still maps to functions which needs to access and update these values, and that code is still painful to write. Your next step is to think "Great! Let's generate all that code then!". Now you got three problems, and you better hope to have not made any error when writing that code generator or you'll waste a lot more time. Speaking of time, by the time you get to that point the PHP developer has already long finished his bug-free implementation of the same code and is moving on to other tasks."