3 ms·
That's correct, I made it because I wanted to illustrate an idea. However I think it can still be useful, and already there are precedents: semi-visual languag
by alehander42 11y ago
That's correct, I made it because I wanted to illustrate an idea.
However I think it can still be useful, and already there are precedents: semi-visual languages with underlying text source, lisp bi-directional macroses.
Do you think my another hivemind idea can be useful? Regrouping code based on structure and intent
(e.g. Group source by class / by method / in groups of highly-connected components)
- duncanawoods 11y ago>> I think it can still be useful, and already there are precedents I have used some of these precedents so I guess I know their limitations. I have used and loathe visual languages (Ladder logic, Labview, Simulink) and consider them to be a dead-end that attracts too many people just because they are pretty. I have created and used one-way code visualisation tools which can be occasionally useful. They however have many degenerate cases where the automatic visualisation of fairly simple code is totally unreadable for me to believe there is much value in reversibility. >> Do you think my another hivemind idea can be useful? Regrouping code based on structure and intent Possibly. I use a few automatic tools for querying code and structure which are useful but given they lose the "designed to be understood" feature of hand-crafted information structure, they are only limited support tools to help solve specific problems. For example to get a handle a new huge code case, I use doxygen to create call-graphs from static analysis and profilers to create call-graphs from dynamic behaviour. Things like stats of hit-counts on various parts of a code-base can teach you a lot in seconds that is hard to grok from just reading code. I believe that creating content for communicating understanding is a huge design challenge. Its really hard when its just 1000 words of text or a small UI but when its a 1M loc code-base its a gargantuan challenge. The fundamental conceptual break down, modularisation, choice of interfaces etc. is what distinguishes good codebases from unmaintainable ones. I don't see a code base as a sea of facts which you can understand with query tools. IMHO "designing to be understood" is a greater challenge than "designing to work". I would be excited if you were thinking of a tool that could say analyse connectivity within and across modules and identify alternative high level structures that would simplify an architecture for human understanding. It feels like a graph clustering problem within the realm of modern data analysis.