The strengths and weaknesses of different IF languages

Thanks for the replies thus far! I suppose I should clarify, though, that even though I have limited experience writing IF, I’m not exactly a newbie. I have used TADS 2 in the past. I am interested in branching out since a lot has changed since the heyday of TADS 2, and, hey, maybe I’ll get some ideas for my own language if I ever decide one day to write one (even if only as a hobby).

In regards to what I’m alluding to, here are some quotes from other people:

TADS 3 has by far the best support for NPC handling, when I7 has by far the best support for act-based IF and an excellent handling of adaptive prose (said handling even got implemented in TADS3.1.x), and ALAN has the maximum flexibility in parser definition (from verb-noun to a sophisticated one) and together with Hugo, are the easiest to code. TADS 2 and Inform 6 are very flexible and have a large contribuition library, and are the twin foundation stones of IF programming. IMO, a serious IF coder must know both as their hands. Lastly, Dialog is the “black horse”, based on goal-orienting general-use language (Prolog), and I think that a goal-oriented language can be be an interesting innovation in IF coding.
So does TADS 3 have "by far the best support for NPC handling"? How so? Does Inform 7 have "by far the best support for act-based IF and an excellent handling of adaptive prose"? How so? Does ALAN have "the maximum flexibility in parser definition (from verb-noun to a sophisticated one)"? How so?

Eric Eve writes:

Multiple inheritance and the encapsulation of code and data clearly enable programming strategies that can be pursued readily in TADS 3 but only with difficulty in Inform 7 — this is one barrier I've found to providing an Inform 7 version of the TADS conversation system I'm really happy with.
Is TADS's conversation system so much better than Inform's? How so?

These are just some things I’ve come across and which I’m providing for some context.