top | item 39320461

(no title)

aschearer | 2 years ago

My random thought for slacker news consideration:

I recently read "The evolutionary origins of modularity"[1] and it talks about NNs that are evolved based on task-performance vs task-performance plus "graph cost" and finds that the later greatly outperform the former. Graphs in the later group ended up being more "modular" which allowed them to evolve to meet changing requirements more readily.

Could we analyze computer programs and create graphs representing modules? And links between systems? A node would a method. An edge would be a call site. Graph-modules – clusters of highly interconnected nodes – would represent the real fault lines of the application, which could be juxtaposed against the developer’s conceptual model. The cost of the overall graph could be calculated and used as a metric – aiming for some lower bound.

1: https://royalsocietypublishing.org/doi/10.1098/rspb.2012.286...

discuss

order

drojas|2 years ago

As a former biologist and self-taught programmer your comment and the paper you shared made my day (thank you). I often use biological and evolutionary analogies to prioritize best practices in my head, this one goes is at the top now.