Are they?
Yes.
What do you mean by "C family"? Is it just direct descendents, eg C, C++ and D?
Yes, as I wrote.
Or is it all {} languages including Java and its descendents (eg Groovy Kotlin etc) and Javascript and the other ECMAscript languages and PHP etc?
No they have C style syntax but are completely different, they don't have such close mapping to the machine hardware.
And why are "C family" so "important" that they get their own category the user asks?
They're not, it's just a way of reducing the Programming [Static] category. There could be a JVM languages category too.
a simple categorisation is always going to be confusing.
Humans categorise. Is a peanut a nut or a legume? Most humans call it a nut.
And that also shows that nearly all of the "C family" (except C itself :) can also be counted as impure functional languages, so why are they not in that category?
Because most code in those languages is imperative.
Sure with an alphabetical range a user might have to stop for a moment and think "is j for javascript in h-l" (or whatever the letter range is) but thats better UX than having to find out by guess and experiment, which is your suggested alternative. And just like the guess and experiment method, you will get to know it if you use it commonly. But if you don't use it commonly you will not have to grope in the menus each time you do use it.
That's the difference, with letter ranges the user isn't going to learn the ranges. With categories, the user may only inspect the categories *once or twice* and remember what the categories are. The user then knows where to look next time, for any language they happen to use.
they may create a "My common languages" group.
Why make a submenu for that, they can just put their common languages under the submenus.
Also did you see my 2nd comment about user-set ungrouped filetypes?
Yes, I know that filetypes that are not in the built in filetypes table are grouped by the filetype.extensions file
No, I'm saying that without a group set custom filetypes show up in the top-level menu. This is useful for commonly-used filetypes, and is already implemented.