4 ms·
You can also say that for JavaScript, and see how successful TypeScript is. Yes, you can rewrite everything in Elm, PureScript or even anything that is more si
by egeozcan 6y ago
You can also say that for JavaScript, and see how successful TypeScript is.
Yes, you can rewrite everything in Elm, PureScript or even anything that is more similar to JS, but step by step conversion to TS enables a significant quality improvement for large codebases (I personally think it doesn't fare so well on small codebases, where there are some people who use it even for one-off scripts, but at least we can agree on large codebases I think)
- hiq 6y ago> You can also say that for JavaScript, and see how successful TypeScript is. I'm not sure that's what you meant, but interoperability between C and Rust does seem to be a selling point of Rust (like TS and JS), and allows C codebases to be oxidized gradually rather than rewritten from scratch.
- egeozcan 6y agoBut you can't just add types to C and it becomes rust. It needs serious refactoring. You'd probably go lib by lib, whereas you can rename a JS file to TS and it starts checking types (even without, if you configure it that way). By the way, I love rust, but I just don't understand the "rewrite all the things" hype. Being battle tested means a lot for low-level libs. You can't guarantee that you ported everything exactly, with bugs and all. Pragmatic solutions like "Checked C" prove a lot in that regard.
- TazeTSchnitzel 6y ago> you can't just add types to C and it becomes Rust You actually can “just” turn C into Rust with something like c2rust. But you haven't gained any safety without refactoring. Is that not also the case for Checked C?
- egeozcan 6y agoYou cannot be sure that you kept 100% of the semantics when you use c2rust. You need to focus on semantics plus the types. With checked c, you can just keep your focus on the types.
- TazeTSchnitzel 6y agoTypeScript doesn't have to solve memory safety problems because JavaScript effectively does not have them. Marking whether things are strings, integers or objects is a much easier problem than e.g. assigning correct lifetimes to C pointers.