Hacker News new | past | comments | ask | show | jobs | submit login

You just need to know where your escape hatch is.

   SQL -> SQL procedures

   Angular templates -> DOM manipulation

   Puppet -> custom scripts
And you may even find it depends on the context.

For example, HTML/SVG/CSS DOM scripting can be considered "procedural", but the in other sense the DOM is a rather declarative version of rendering, whose procedural escape hatch is Canvas/WebGL.

You may even find case where they are combined tightly:

A makefile has declarative dependencies and procedural recipes.


But once you are out the escape hatch you will need to model both the new space you are working in, AND model the world you escaped from in order to interoperate, which is a special hell.

This hell has a name you will recognise: the leaky abstraction.

The idea is always to put a layer on top that simplifies things, so it's easier to use and faster to learn. But the end result is usually you have to learn both the abstraction and thing it was trying to hide.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact