"Put" and "but" both end in the same letters, so why don't they rhyme? Did they start out with the same sound, and then one of them changed? Or did they start out with different sounds, and just got spelled with the same letter because there weren't enough vowel letters to represent all of the vowel sounds in English?
Learn English – Why are “put” and “but” different in their pronunciation
historical-changehistorypronunciationpronunciation-vs-spelling
Related Solutions
I started off by posting a series of comments scattered all over the page, but I thought I should sum them up in a standalone answer.
Generally speaking, there have been similar shifts in many other languages. And they are even happening right now as we speak.
But first things first. Since you mentioned Slavic languages, as the most obvious example, in Old Church Slavonic, an o was an o. In contemporary Russian, it can be anything from a schwa to an ʌ to an ɔ, depending on the position relative to the stressed syllable (e.g. молоко, milk, /məɫɐˈko/ or /məlʌˈkɔ/; водоворот, swirl, /vədəvʌˈro̞t/). Also, in Old Church Slavonic, there were a number of nasal sounds, which are absent in pretty much all contemporary Slavic languages with the notable exception of Polish.
Secondly, don't get me started on German. If you don't know how to correctly pronounce Soest, Troisdorf, Huonker, Pankow, Laermann, Hueck, you will pronounce them wrong. It happens to native German speakers all the time.
Speaking of Germanic languages, the most notable vowel shifts happened in German and Dutch (Wikipedia even mentions them in the article on the Great Vowel Shift). It's just that there was at least some concerted effort to keep the spelling consistent with the (changing) pronunciation. The pronunciation shifts were accompanied by spelling shifts, if you will. Hence the popular but wrong assumption that there weren't pronunciation shifts to begin with.
In other words, what made the pronunciation stray so far from spelling in English was not the Great Vowel Shift; it was the absence of the accompanying Great Spelling Update.
Now, it's always a bit harder to explain the absence of something rather than its presence, though one of the other answers does provide an interesting link. On a more general note, I will say that spelling reforms are the domain of politicians, one of the most prominent and recent examples being the German orthography reform of 1996, kicked off by the Conference of Ministers of Culture and later monitored by the International Commission for German Orthography. English, however, traditionally lacks such regulatory bodies.
Anyhow, vowel shifts happen all the time, especially on the dialect level. Now that I have zeroed in on German, I'll just take Bavarian as an example. In Bavarian, viel is not pronounced as /fiːl/ and ein Haufen is not pronounced /aɪ̯n ˈhaʊ̯fm̩/. But again, there is some effort to keep the spelling consistent with the pronunciation, so if you came up with the crazy idea to write a Wikipedia in Bavarian, you would spell viel as vui, vei, vii or fui, and ein Haufen as a Haufa, to reflect the actual pronunciation. And there are also Wikipedias in Ripuarian, Plattdeutsch, Alemannic... It's hard to imagine, say, standalone Australian, Canadian or Texan Wikipedias where the spelling mirrors the local dialect in such a manner.
I guess I can sum these ramblings up as follows: vowel shifts happen all the time. Spelling conventions are a question of politics and culture.
The words now and snow have never rhymed in the history of English. Both of them are native English words; they did not come into English from Dutch or German. (Rather, English, Dutch and German all descend from a common ancestor, Proto-Germanic; that is why these three languages have similar words.) The different vowel sounds of these two words came to be spelled the same way only by coincidence.
Historically, U and V were not considered to be distinct letters, and the “double-U” W was only inconsistently distinguished from the single U (there was a lot of variation between U and W after vowel letters in particular). As a result, the digraph <ow> is usually equivalent to <ou> in terms of pronunciation: both can be pronunced either as /aʊ/ (now, noun) or /oʊ/ (snow, soul). The main difference in use is related to position: in the Modern English spelling of native words, <ou> is generally avoided in favor of <ow> at the end of a word. So in this answer, I'll discuss both of these digraphs.
<ow> has two different sounds as early as Middle English, but they come from different sources
The basic elements of Modern English spelling date back to Middle English, where we can already find the digraphs <ow> and <ou> used in many of the same words as in modern spelling. They are used in the Ellesmere manuscript of Chaucer's Canterbury tales, which is dated to around 1400:
His bootes souple / his hors in greet estaat /Now certeinly / he was a fair prelaat (203-204)
(f. 3 r)
Valerian seyde / two corones / han we / Snow white and Rose reed / that shynen cleere (253-254)
(f. 188 v)
The word snow comes from Old English snāw. (The spelling I’m using here for Old English is a modern standardization; historically, various spelling systems were used. For example, it's normal for Old English texts to have no length marker on the <a> and to use the letter wynn <ƿ> instead of <w>.) The Old English ā regularly developed to an “o” sound by the time of Middle English, which is reflected in the change of spelling to <snow>. In modern English, the “o” and “w” have merged into a diphthong /oʊ/.
The word now comes from Old English nū. So why is it not spelled with <u> in Modern English? It’s because during the Middle English period, English spelling conventions were influenced by French ones.
In French, due to sound changes, the letter <u> was used to represent the sound /y/ (a sound like /u/ but made further forward in the mouth); the sound /u/ was represented by the digraph <ou>. This French digraph (and the variant form <ow>) came to be used in English for the long /uː/ sound, while the single letter <u> was used to represent either the short /u/ sound, or the long /yː/ sound (which was quickly changed into a diphthong /iu̯/, which developed to modern English /juː/ or /uː/) that occurred in words borrowed from French.
Anglo-Norman scribes, trained in copying French and Latin, gradually contributed to the displacement of certain OE conventions. [...] Digraph <ou>, introduced around 1300, indicates /uː/ as in coeval OF and remains, e.g. in tour, pour, how or cow.
(A Practical Introduction to the History of English, by Juan José Calvo García de Leonardo and Miguel Fuster Márquez)
The Great Vowel Shift
The long /uː/ sound changed in most words to become /aʊ/ during the Great Vowel Shift that marks the start of the Modern English period. In fact, this sound change forms a nice symmetrical pair with the change of long i from /iː/ to /aɪ/.
But, there are also some words in English where <ou> represents a sound closer to the French original.
The Great Vowel Shift of /uː/ to /aʊ/ did not occur before labial consonants such as /p/ and /m/. Some words for which this is relevant had the /uː/ sound respelled with "oo" (such as "room" and "troop", both formerly spelled with "ou" or "ow") but in others such as group and croup the spelling <oup> continues to be used to represent /uːp/ in modern English. As far as I know, <owp> pronounced /uːp/ does not occur in any common nouns, but it does occur in the proper noun "Cowper", generally pronounced the same as the common noun cooper ("cowper" is in fact an older spelling of this common noun).
in several words spelled with <our>, such as tour and pour, it represents /ʊr/, /ʊə/, /uɚ/, /ɔ˞/, or /ɔː/, depending on the dialect. However, I can't think of any words where <owr> has these values.
<ough>, which is famously inconsistent in pronunciation, is also inconsistent in its correspondence to Old English vowels. For example, bough has /aʊ/ in Modern English even though it didn’t have /uː/ in Old English.
So the two main pronunciations of the "ow" digraph (/oʊ/ and /aʊ/) generally have different historical origins (the first comes from the vowel "o" + the consonant "w," and the second from the French digraph <ou>, originally used in English to represent a long /uː/).
Related Topic
- Learn English – Why are Greek letters pronounced incorrectly in scientific English
- Learn English – Why is “sauté” spelled with an accent and “repartee” not
- Learn English – Why are there 3 different ways to pronounce “oo”
- Learn English – Why are “fun” and “hulk” phonetically transcribed with the same vowel but pronounced differently
Best Answer
English is over a thousand years old, and has been through so many changes in the meantime that even very competent speakers struggle with English as it was written a few hundred years ago, and that of a few hundred more is so different as to essentially be a different language entirely.
This has left us with a great many inconsistencies, and the fact that English borrows from different languages, at different times, with different degrees of Anglicisation, leaves us with many more (though not in this case).
Some of the reasons for particular cases are hard or impossible to track, and some are open to reasonable conjecture, while others we can make more reliable statements about.
The word put was in Middle English found as putten, puten, poten and a separate word pytan. It's believed it came from a late Old English word putung.
The word but comes from Middle English buten, boute, bouten, from Old English butan.
In Middle English, these words, along with many others with a u in them would have had a /u/ sound (like a French ou as in vous). So, they would have rhymed as their spelling suggests, though neither would sound quite like they do in most modern accents.
As you have probably noticed, accents differ greatly from each other in how they pronounce many vowels. Accents differ not just with space (which we can easily realise by listening to how different people pronounce the same word differently), but also through time, which leaves some record today (listen to recordings of people from several decades ago, especially working class people, and you may find their accent doesn't match how people of the same area talk), and also helps explain how the regional differences arose.
In the early Modern English period, the /u/ sound changed, to a /ʊ/ sound (like the oo in foot).
Then it changed to first a /ɤ/ sound, which then changed further to a /ʌ/ (the sound but has today) sound in some, but not all of the words. Generally whether it changed or not depended on the surrounding consonants, but this was inconsistent so even one-time homophones put and putt now have a different vowel.
So while but, cut, put, putt, fun, full, sugar once all had the same vowel, a change in vowel happening for some, but not all, of them split them apart. This also affected some oo words that had previously shifted sound to the same /ʊ/ sound (hence blood rhyming with dud rather than with good).
This happened in different areas at different times, and there are still accents where but and cut rhyme with put. This is also one of the reasons we've clues to what happened, since people in the mid 17th Century were noticing how the words rhymed in some accents, but not in others. (The split here is called "the foot and strut split" because those accents rhyme the words foot and strut, while others do not).
Now, while you'll often hear that spelling was inconsistent in English until relatively recently, this is only true up to a point; certainly it was a lot less firmly set than today, but there were certainly conventions followed (even if they differed by region) so it wasn't a phonetic free-for-all either.
Between this, and the lack of any clear way to differentiate the too sounds (all the more so earlier in the change), we still have the same u letter used to spell them, even though they now have different sounds.