Taxonomy and genealogy are loose concepts when applied to cultural artefacts such as programming languages. Lineage here represents a pattern of influence (a language can have more parents than children) and typology represents a pattern of affordance.
I have been working on a comprehensive programming language taxonomy. It is rather more complex than most, as it is attempting to use proper taxonomic science to produce a single termset.
I am currently working on a dichotomous key to help languages get identified; it is still experimental, but the keyset is here.
I have a top four-level polychotomous key here.
Of course, it could be said that all hierarchical terminological systems are bound to present some instances where there are more than one appropriate category. This is especially the case for languages that have been designed to be multiparadigmatic, such at Budd's Leda or the Poplog system. However, for the most part, it has proven to be very successful in making distinctions.
I also have a rudimentary family tree linking them all, but it is so unfathomably huge (9m x 6m) I don't quite know how to present it. Moreover the type of computer language-trees that are normally seen in such circumstances are in no way accurate maps: nothing less than a 9-tuple can show the complexity of computer language inheritance. However, the record for each language will show the relationships in a navigable format.