Good->Better->Best, Bad->Worse->Worst

How did the comparative and superlative forms of “good” and “bad” come to be so different from the ordinary adjectives?

I tried looking up the etymology at dictionary.com, and it doesn’t really answer the question. It tells the Middle English roots all the relevant words come from, but all that does is kick the question back a few centuries, not answer why we have no “gooder, goodest, badder or baddest (in anything but the blaxploitation sense)”

I can’t give an explanation, except to suggest that the comparatives and superlatives of *good * and bad, being very commonly used words, would perhaps be more susceptible to gradual change away from the standard *er/est * structure. It’s a feature seen in other languages too:

Latin

*Good/better/best * = Bonus/melior/optimus, where the normal grammatical rules would expect bonus/bonior/bonissimus
*Bad/worse/worst * = Malus/peior/pessimus, where the normal grammatical rules would expect malus/malior/malissimus

French also has construction like *meilleur/le meilleur * rather than plus bon/le plus bon.

My WAG would be that there were at one time two distinct adjectives to convey the quality of goodness, and over time they were “merged” by taking the absolute form of one adjective and the relative and superlative forms of the other.

Same goes for badness.

Same, incidentally, goes for the verb “to be”.

In German, you have the superlative progression gut -> besser -> best, and schlecht -> schlechter -> schlechtest (there are several other words used in various contexts meaning ‘bad’). According to this dictionary, ‘bad’ comes from 13th century Old English 'baedde’l and ‘baeddling’ meaning defective, morally depraved or evil. The words ‘badder’ and ‘baddest’ following the germanic progression of superlatives was used until the 19th century. They were replaced with worse and worst, both originally coming from proto-Indo European (wers-) through proto-Germanic (wers) and Old English (wyrresta) meaning “to confuse or mix up.”

Vlad/Igor