On Thursday, 22 February 2018 at 08:43:24 UTC, ketmar wrote:
Nick Sabalausky (Abscissa) wrote:
[...]
from my experience (various codebases up to middle size, mostly
C, some C++): fsck the "one module at a time" idea! even in D
modules are interwined, and in C and C++ they're even more so.
besides, converting tests is tedious, it is much funnier to
have something working.
so, i'm usually converting alot of code, up to the whole
codebase. it is not fun when compler spits 100500 errors, but
when it finally stops... oh, joy!
trick: use 'sed' (or your favorite regexp search-and-replace
tool) alot. basically, before HDD crash i almost had a set of
scripts that does 80-90 percents of work translating C to D
with sed. ;-) then use editor with "jump to error line"
support, and simply compile your code, fixing errors one by one.
tip: try to not rewrite code in any way until it works. i know
how tempting it to replace "just this tiny thing, it is so
ugly, and in D we have a nice idiom!" NEVAR. this is by far the
most important thing to remember (at least for me), so i'll
repeat it again: no code modifications until it works!
personal memories: C code often using things like `a ==
&arr[idx]`, where idx can go just past the last array element.
it got me when i was doing enet conversion. nasty trick.
otherwise, sweat and blood, and patience.
These are good starting point so we don't get lost in the
process. Still not much exprience doing, but I think these pieces
of advice are especially true if the codebase is big or
complicated, making it difficult to understand what the C/C++ is
doing. When we don't understand the code, re-writing from
scratch is not possible.