Re:I’m porting the TypeScript type checker tsc to Go
by mrkentutbabi on Tuesday January 25, 2022 @04:20PM
(#30078212)
What is the difference between porting and complete rewrite? I thought they are the same?
[ Parent
| on HN ]
Re:I’m porting the TypeScript type checker tsc to Go
by scottlamb on Tuesday January 25, 2022 @04:28PM
(#30078326)
> What is the difference between porting and complete rewrite? I thought they are the same?
As with so many terms in computing, there aren't universally agreed definitions. But in the author's post, I read "porting" as switching languages while changing as little as possible vs "complete rewrite" as redesigning/rearchitecting it along the way.
Re:I’m porting the TypeScript type checker tsc to Go
by azakai on Tuesday January 25, 2022 @07:07PM
(#30079961)
To add to that, I would say that simple forms of "porting" can be done without really understanding the overall architecture. You just need to understand each line (or a few lines around it) at a time. I understood the post to mean something like that, which sounds like a good plan here, to minimize the risk of adding bugs.
And in comparison, a "complete rewrite" would require a full understanding of the big picture design of the original code, come up with a perhaps different one in the rewrite, and keep the differences in your head as you go (or, forget about the original design entirely and solve it from scratch - and keep that in your head as you go). Far more work and risk, and it would have been a bad choice here.
Re:I’m porting the TypeScript type checker tsc to Go
by cwalv on Wednesday January 26, 2022 @01:02AM
(#30082306)
If that's the case, it seems unlikely that they'll be able to get the hoped for performance improvements
Re:I’m porting the TypeScript type checker tsc to Go
by jacobr1 on Tuesday January 25, 2022 @04:33PM
(#30078403)
Porting can involve a spectrum of changes. If you are porting to a different language, often for bug-for-bug compatibility you try to maintain the same rough code and class/object structure as the source codebase. This might give you some non-idiomatic code at first, but once you have good test coverage you can refactor. In this case you might maintain some of the upstream code structure to better match future changes.
Re:I’m porting the TypeScript type checker tsc to Go
by travisd on Tuesday January 25, 2022 @04:32PM
(#30078381)
I think here “rewrite” means completely changing the internal structure of the code (while preserving the functionality) whereas “port” means copy the structure of the internal code with as little modification as possible. And it’s hard to do the latter in Rust since Rust is not garbage collected.