Why oh why are there k’s in front of words we say with n sounds? Knife, knee, know, knight, knick, dozens of others. Then there are g’s thrown in front of words like gnat and gnaw, and p’s not pronounced in front of s’s. There’s even the odd m in front of n in front of mnemonic, and don’t get me started on w or letters that pop up in the middle of words. Is there some simple, sensible reason for all this?
Answer: probably not.
Mnemonic is an easy one. It comes from the Greek mnemonikos, a word stemming from Mnemosyne, the titan of memory, and probably the Proto Indo European men, which means to think. So there’s no mystery there except why the Greeks dropped the e and please don’t make me research that. It’s hard enough to figure out English.
For kn words, it’s not our French heritage that makes the English language confusing but our Germanic ancestors. “Kn” is a sound in German, sounding exactly as it’s spelled: k’n. Instead of “nee” and “not” they have k’nie and k’noten. Although the k has disappeared in English, we did pronounce it in the days of Oldand Middle Englishand we can actually pinpoint the time we stopped pronouncing it as sometime before 1750. And before that? It was pronounced “pn”, then “hn”, “dn” and “tn”.
G and w are pretty much the same and yes, they’re Germanic in origin, too. Unlike k, they were generally dropped in both German spelling and pronunciation, while we in English kept the spelling and dropped the pronunciation. They reason why is most likely that the pronunciation changed after their spellings solidified (when the printing press made fixed spellings and grammar important).
The p in ps is another thing we can blame on the Greeks. They have that annoying letter “psi” and every word that begins with ps, like psyche, psalm, and pseudo, are all Greek in origin. Although they pronounce the pinstead of leaving there like a dead limb. There’s also pt and pn words like pterodactyl and pneumatic, although they don’t come from a letter but Greek digraphs. Again, they’re pronounced in other languages.
TL;DR: English doesn’t like to pronounce letter combinations from other languages.
Tony Jebson’s page on the Origins of Old English