3 ms·
One of the worst classes of software is the software whose architecture starts out with "Turing completeness is bad and hard and we'll just ban it", but it turn
by jerf 5y ago
One of the worst classes of software is the software whose architecture starts out with "Turing completeness is bad and hard and we'll just ban it", but it turns out the problem space needs it, whether you like it or not, and it ends up creeping back in one step at a time anyhow.
Terraform kinda took a similar path, although the reigning champion of this style of software has to be HTML templating solutions. "Templates shouldn't have code in them! Ever! Any! Totally broken bad bad bad, and that's why I started this new template language that has no code constructs in it at all! Although, uh, we do kinda need to be able to loop through things like table rows from databases... and, well, we need if statements to highlight a particular result... and, well, we need full arithmetic support so we can use the modulo operator on those rows... and we need functions to factor out reusable functionality at the template layer... and oh crap that's all you need for Turing Completeness, isn't it? Well... uhh..." "Hi, I'm another developer and I'm starting a new template language because that previous one is broken and busted and written by dum dums because it has Turing completeness in it! Templates shouldn't have any code in them, ever! Although, uh, I do kinda need for loops for table rows from databases..."
- nukemaster 5y agoExactly! And once you bring back recursion in the new language you're without the tools and practices everyone has developed over the past half century. Everything is just so much harder. Really what we should be doing is generating data structures in <whatever> language rather than creating new languages.
- lamontcg 5y ago*cough* Chef *cough* Ruby *cough*
- polynomial 5y agoDoesn't React somewhat solve this, when used correctly? (Though it's entirely possible to make an even bigger mess with React.)
- tempodox 5y agoIsn't React Turing-complete?
- tehbeard 5y agoI think they mean it doesnt reinvent for/if like angular and vue do.. You just use the js primitives.
- polynomial 5y agoYes, exactly.
- jerf 5y agoI wasn't 100% sure enough about React to be sure, but based on my limited experience, that sounds correct, so I don't think it fits my example. I'm looking more at things like the Django template library, handlebars, Go HTML templates, etc. etc. And most especially things written with the idea that code shouldn't be in templates. Template languages that were always capable of running code, and were simply separate languages so designers don't have to learn a general-purpose programming language but can learn just this focused thing they need are obviously not what I mean. I've drunk from the "templates shouldn't have logic in them" well too, but I think as you scale up it just becomes impractical. And in that case, you're better off with a template that always knew it was going to have code in rather than a template language that was designed from the beginning to not have it, but had code sneak in through the back door anyhow. The first one will at least be designed. The second one... well....