← Back to context

Comment by xnx

18 hours ago

If we could do it over, knowing that we'd eventually get to this point, would https://en.wikipedia.org/wiki/JavaScript_Style_Sheets have been the better path?

If we could do over, web browsers should have supported two document formats from the beginning - HTML for plain text markup and the preexisting Turing-complete formatting language of either PostScript or encapsulated PostScript.

I would say no. I think CSS is a good language and made good choices.

And honestly we already essentially have this with CSS related apis in js. The examples in that article are basically identical to how you set css in js on modern web browsers with slightly different naming conventions.

If I had a time machine I would go back and ensure that DSSSL (https://en.wikipedia.org/wiki/Document_Style_Semantics_and_S...) was the standard that got up.

  • All hail the embedded Scheme interpreter to apply Style transformations!

    Although I feel like we've already explored this with XSL. The XML syntax was perhaps too much to swallow.

  • You write your markup in an xml syntax, your scripts in a C syntax, and your styles in a lisp syntax... a perfect trio.

Knowing what we know, we would probably have stepped out of our time machine to make sure that Brendan Eich kept the Scheme-based syntax and added semantic HTML enrichment for styling, sparing untold grief over the last generation...

I actually wonder if transpiling calc/min/max/etc. expressions to JS is a viable path to implementation, considering that you already need a fast interpreter for these.

Probably not. There is a lot of optimizations browsers do to make the stylesheets super fast[1], and I think quite a few of those rely on CSS not being Turing complete.

1: https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-en...

  • CSS is Turing complete :-) You can find pure-CSS implementations of Game of Life, for instance.

    • The implementations I have seen rely on the inclusion of HTML form elements, and a manual step to update the state.

      So in that sense CSS + HTML + User Interaction is Turing complete. But that is a different language then CSS, even if a part of that language happens to be written in CSS.

    • I don’t think that’s true, unless you count hardcoding the state evolution into CSS variables, one var per cell per step.