This is mainly because English is based on so many other languages, including German, French, Latin and Greek. Most of our silent letters were originally pronounced, either in English or in their own languages. For instance the first letters of "gnaw" and "knight", which come from Old German, were clearly pronounced in Old and Middle English (as they still would be in German today.)
Other words were adopted from Latin and gradually Anglicised, but their spelling often kept its Latin features. Debt, for example, has a silent "b" – but its Latin root word, debitum, did not. The same is true of receipt (silent "p", based on the Medieval Latin word recepta.
Some of our silent letters come from French, most notably initial "h" (heir, hour, honest): French does not pronounce "h" even today.
In addition, there are sounds we have simply stopped pronouncing. In Middle English, we pronounced words more fully, so that "literature", say, would have had four distinct syllables. Now it's usually pronounced "litrecher" with three syllables; many longer words have gradually lost an "e" sound in this way (think of Wednesday, interesting etc.)
Other words were adopted from Latin and gradually Anglicised, but their spelling often kept its Latin features. Debt, for example, has a silent "b" – but its Latin root word, debitum, did not. The same is true of receipt (silent "p", based on the Medieval Latin word recepta.
Some of our silent letters come from French, most notably initial "h" (heir, hour, honest): French does not pronounce "h" even today.
In addition, there are sounds we have simply stopped pronouncing. In Middle English, we pronounced words more fully, so that "literature", say, would have had four distinct syllables. Now it's usually pronounced "litrecher" with three syllables; many longer words have gradually lost an "e" sound in this way (think of Wednesday, interesting etc.)