EDIT: For those of you who think this question is off-topic, I asked it on a forum about linguistics because I expected the answer to come from historical linguistics. I expected the answer to be something along the lines of:
Because the mantra "English is spelt as it was pronounced around the invention of the printing press." is not true. The silent 'e' is way more common today than final 'e' ever was in spoken English. Look at the numbers 1-10: the silent 'e' in 'five' (Old English 'fif') and 'nine' (Old English 'nigon') was never pronounced.".
Or something like that...
In a paper I published in Valpovački Godišnjak and Regionalne Studije (it's basically this text, just edited differently), I measured the collision entropy of the consonants in five different languages: English, German, Italian, French and Croatian.
In a long text, Croatian has the highest collision entropy, and it also has the shallowest orthography. French has a very deep orthography (though not as deep as English), and it has the lowest collision entropy in both a long text and an Aspell word list. And the correlation seems to be even higher once you group those languages by families. Italian and French are closely related but have a very different orthography, and French has a lower collision entropy. German and English are closely related, but have a very different orthography, and English has a lower collision entropy than German. Is this correlation real?
The obvious answer (as I've explained in my paper) seems to be no, because spelling represents how the words were pronounced centuries ago, and it seems absurd to suggest that the collision entropy of languages always increases with time. But has anybody done an actual study on that?
EDIT: In case it is relevant, here is the program I used to measure the collision entropy:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <string.h>
int main() {
srand(time(0));
FILE *input=fopen("text.txt","r");
if (!input) {
fprintf(stderr,"Can't open 'text.txt'!\n"),
exit(1);
}
fseek(input,0,SEEK_END);
int length=ftell(input),sum1=0,sum2=0;
/*Variable "length" now contains the total number
of characters in "text.txt".*/
int alphabet[26]={0};
const char *vowels="aeiou";
for (int i=0; i<1000000; i++) {
int tmp=rand()%length;
fseek(input,tmp,SEEK_SET);
char first=fgetc(input);
tmp=rand()%length;
fseek(input,tmp,SEEK_SET);
char second=fgetc(input);
if (isalpha(first) &&
!strchr(vowels,tolower(first))
&& isalpha(second) &&
!strchr(vowels,tolower(second))) {
/*If both randomly chosen characters
from "text.txt" happen to be consonants...*/
sum2++;
if (first==second) {
sum1++;
alphabet[toupper(first)-'A']++;
}
}
}
printf("1/%f\n",(float)sum2/sum1);
int max=0;
for (int i=0; i<26; i++)
if (alphabet[i]>alphabet[max]) max=i;
printf("%c %f%%\n",max+'A',100.*alphabet[max]/sum1);
}