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

Front-end development is really great right now, because of React, which makes it so you can develop in one language, but unlike past attempts like GWT [1], doesn't rely on leaky abstractions.

1: http://www.gwtproject.org/overview.html




Everything is a leaky abstraction at some point, the question is how much of a pain is it once you do need to dive underneath?

Personally I’ve found debugging and dealing with anything non-standard in React to quickly turn into a huge mess (but given all the praise heaped on it by other developers I know, I’m willing to concede that I might be doing it wrong).


JSX is a different language


JavaScript with JSX is a single language. The tags are a syntax extension. JSX is a very non-leaky abstraction. The tags are just function calls. https://reactjs.org/docs/introducing-jsx.html#jsx-represents...


I don't buy that argument. On the one hand you claim there's no leaky abstraction, yet your argument only works if "Javascript with JSX is a single language".

Then "C++ with inline assembler" is also a single language? What about English with quotes in Japanese?


JSX is syntactic sugar for JS[0]. C++ and ASM (actually, _which_ ASM?) are different languages.

[0] https://fettblog.eu/jsx-syntactic-sugar/


Since JS is the only thing you can actually use[1] in a browser you can argue that anything that runs in the browser is syntactic sugar (and in fact, Typescript is syntactic sugar).

A less flippant analogy might be macro support in Rust. It's clearly part of Rust, but the syntax is completely different and it requires IDEs to have completely separate processing just to handle it. I wouldn't consider that to be mere syntactic sugar either.

[1] Yes, yes, wasm


JS and JSX are isomorphic (in the mathematical sense) hence why JSX is considered just syntactic sugar.

JS and TS aren't isomorphic (there's no inverse morphism once you go TS->JS that can bring the resulting JS back to the original TS) hence why TS is a different language (even if a superset of and compiled to JS).


> JS and JSX are isomorphic

They are not

Or, if they are, they are in the same way of a custom XML templating language that can be translated to a specific javascript library implementation and then back to XML

In the same way, is Mustache isomorphic?

    "{{title}} spends {{calc}}"
can be translated to

    `${title} spends ${calc}`
and back to

    "{{title}} spends {{calc}}"


> because of React, which makes it so you can develop in one language

You may argue that JSX is a single language, but that is irrelevant since you still need to understand HTML and CSS.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: