3 ms·
I don't think I understand how RTTI/reflection relates to this. When I imagine how a C++ implementation of something like React would look, my first thought is
by realharo 7y ago
I don't think I understand how RTTI/reflection relates to this.
When I imagine how a C++ implementation of something like React would look, my first thought is a bunch of functions which take whatever custom types they need (props), and return a tree of UI primitives (analogous to DOM element representations). Nothing that would require inspecting types.
- asveikau 7y agoAnd that works in other languages because you can iterate through trees and properties without needing to specify how to iterate through them or how they are stored. Think about it. How do you iterate the tree? What even is a tree? The typical c++ answer depends on templates and iterators within the template. Which means they wildly change at compile time. It is clumsy for a shared library to deal with this, or, say, bind properties from an XML file or similar parsed at runtime. Hence, it would make sense for a c++ solution to impose its own format or base class for trees or models. (Perhaps a template could help to wrap it.)
- realharo 7y agoI'm thinking of a structure similar to https://reactjs.org/blog/2015/12/18/react-components-elements-and-instances.html https://reactjs.org/blog/2015/12/18/react-components-element... There may be some limitations and some things may need to be done differently because of C++, but from a brief look it should be basically possible. The UI library doesn't need to iterate through props, those can be a single opaque structure from its point of view. I tried doing something similar in Kotlin a few years back and from what I remember there wasn't any reflection used for that part. https://github.com/peterholak/mogul https://github.com/peterholak/mogul
- ptx 7y agoThat Kotlin project looks pretty cool! What happened to it – was there some fundamental problem, or just lack of time?
- realharo 7y agoMostly just lack of time, more important things got in the way, and it became less fun after the initial excitement. I'm also still not convinced that Kotlin/Native will catch on in any significant way, but we'll see.