Tuts/Aritcles: Incrementasl C++-to-D conversion?
biocyberman
biocyberman at gmail.com
Fri Feb 23 12:44:51 UTC 2018
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.
More information about the Digitalmars-d-learn
mailing list