|
|
|
|
|
by Jtsummers
3447 days ago
|
|
This one is not little-known or little-discussed, but I found org-mode really nice when paired with tup. I have a small shell script I put in my ~/bin which calls emacs' org-mode's tangle functions on each of my .org files in a project. I write everything (at home) as literate projects. Going back to the nice feature of tup (recognizing that a target file hasn't changed and ceasing build actions) comes in handy. My .org files may change, but the .c or whatever files don't as often, or they do but it's white space so the .o files don't change, etc. It's all in the documentation or the layout, or changes to the export (as html/pdf) options. So the whole project doesn't get rebuilt (like it might with make) just because I added a paragraph describing an algorithm. It's also great for source code dissection. Using the noweb aspect I can break a file down from one initial source block into dozens, creating cross references across files and documents very easily, and then export this in a distributable format (currently doing this for a new project at work). I have a 100k SLOC project that we've taken on and while we understand the high level, none of us have ever worked on this source code (we work at the maintenance end mostly, this project has entered maintenance). Technically there's documentation on it. Doxygen can generate nice reports. But that doesn't beat the act of tearing the code apart line-by-line for really learning and understanding it. This'll be the largest project I've attempted this on, so that's a new challenge. Usually sub-10k projects that I've tried this with, or just small sections of larger ones. But I'll be one of three guys on the developer side of this one (one above me, responsible for more than just code, and a junior dev just out of college with us). So either we fumble or one of us becomes a SME. This work is also shareable by generating a PDF or set of html files from my efforts and distributing it to them so what I learn can be more easily shared with others. |
|