5 ms·
Latex is a fully Turing complete language as well as a typesetter. Only with JavaScript can you compare them.
by kderbyma 8y ago
Latex is a fully Turing complete language as well as a typesetter. Only with JavaScript can you compare them.
- danShumway 8y agoI mean, CSS/HTML is technically a Turing complete language given enough caveats[0]. ;) But I'm obviously just being a pedantic jerk when I say that. I get what you're getting at and you're not wrong. The real question to ask is, "is a programming language a good place to put a typesetter?" Making things more powerful doesn't always make them better, if that extra power forces you to introduce extra complexity. [0]: https://my-codeworks.com/blog/2015/css3-proven-to-be-turing-complete https://my-codeworks.com/blog/2015/css3-proven-to-be-turing-...
- taeric 8y agoWhy is that the real question to ask? The dogmatic separation of view and control is probably among the chief reasons of code bloat and bad decisions I've ever been close to.
- danShumway 8y agoAn example of good separation of model/view/control is Markdown. Markdown is ubiquitous because it's easy to learn and does one thing well. It's a very Unix-y idea. Markdown is a document markup language, not a Model-View-Controller framework. It's not trying to be the front end for your SPA, it's trying to allow you to type Reddit comments and blog posts. That comes with advantages, the big one being that here's the entire documentation you need to look at if you want to start using Markdown[0] and here's one section of LaTeX's documentation[1]. I could have an entire office (programmers and non-programmers) using Markdown in about a week to a month, I couldn't do the same with LaTeX. Of course LaTeX is more powerful that Markdown. Markdown isn't really a tool for typesetting tbh. But the point is that because extra functionality nearly always comes at the cost of extra complexity, you always need to take a step back and ask how important that extra functionality is. If someone says, "Okay, but I really need to meta-program my blog post", even at that stage I'm not sure that I push them towards LaTeX or its equivalents, because maybe it's better at that point to just jump to a full featured language like Python or Javascript. That separation of concerns also means that I can have different people handling different things. If my office is all writing Markdown, maybe I only have one or two people who are handling the CSS for how it renders. Nobody else in the office needs to know about the CSS side of things. [0]: https://daringfireball.net/projects/markdown/syntax https://daringfireball.net/projects/markdown/syntax [1]: https://www.latex-project.org/help/documentation/fntguide.pdf https://www.latex-project.org/help/documentation/fntguide.pd...
- taeric 8y agoAnd yet, I have grown to dislike markdown. Markdown it's essentially ASCII art for simple documents. Nothing wrong with that, but it is not seperation of concerns. Rather, it is simplicity of some concerns. And to make it hugely amusing, the rules in markdown for just content are not much different than TeX.
- danShumway 8y agoI think Markdown is a good argument for potentially being too simple. It's good for what it's meant for, but it stumbles for stuff like blog authoring. I am somewhat happy with AsciiDoctor[0], although I honestly feel like AsciiDoctor goes farther in the other direction than it needs to and ends up overcomplicating itself. I spend more time reading the AsciiDoctor documentation than I want to. Would you be willing to expand more on what you mean about a separation of concerns vs a simplicity of concerns? I was using the term in the sense that Markdown not only doesn't embed logic, it also doesn't embed style. It's literally just content, and you use other technologies to get at the other parts. In contrast, LaTeX embeds logic, style, and content. When I work with Markdown I don't stop thinking about style -- I just use other tools for that. That separation allows me to then give other people content access without asking them to worry about CSS. I guess I could see that it's a flat-out dropping of meta-programming from my document generation (although Markdown is a very easy compilation target for templates). But that just kind of gets back to my original point -- do you really need to meta-program blog posts and books, given that it greatly increases the complexity of LaTeX? Would it be better to have a simpler version of LaTeX that got rid of that functionality and said, "I'm just gonna do text layout really well, and nothing else"? [0]: https://asciidoctor.org/ https://asciidoctor.org/
- taeric 8y ago"Simplicity" was a typo. I blame my phone. :( I meant "simplification of concerns." Basically, if you simplify what concerns the content author can have, it is easier to encode them. In the case of markdown, you are very limited in what you can define. And I am not at all against the ideas. I'm very partial to org-mode. For example, I wrote http://taeric.github.io/Sudoku.html http://taeric.github.io/Sudoku.html using an org-mode buffer. And I've been very happy with the markup it supports. However, there is a lot of markup around some things it can do. And, I've found that the constant churn as folks improve it has been tiring. I think it has stabilized recently, which is good.
- roywiggins 8y agoThe Turing completeness just doesn't matter at all when it comes to the actual typographical output or the experience of authoring LaTeX documents. If you removed completeness artificially you'd have substantially the same thing.
- wahern 8y agoSorta. LaTeX wouldn't exist at all if TeX weren't Turing complete, not to mention the huge universe of packages.