The use of alphabets in Western Europe
Due to some pretty significant life milestones, recently I've found myself needing to learn another foreign language. Fortunately for me, modern foreign languages were something I took a significant interest in school and I had the opportunity to study French, German and Spanish. These languages all share a key definining trait though in the choice of alphabet used: All of these languages predominantly use the Latin alphabet much like the characters you're reading now. Whilst some of the langugages include additional characters, the foundations of the language are all similar and it isn't too difficult for the reader to pick up the unknown characters. For example when we consider French, the only modifications are the use of accents or a cedilla. Similarly, Spanish has the addition of accents or a tilde. German is the only language of the 3 which introduces completely new character in the form of the ß (and even this is just shorthand for double s). So whilst I've had the opportunity to spend time learning 3 other languages, the only things which have had to be considered were the vocabulary and grammar.
The Korean Alphabet
Korean though is very different, relying on the Hangul alphabet. Originally from the 15th century, the original intent of Hangul was to make it easier for the population of Korea to read and write and encourage literacy across the country owing to the historic use of the complex Chinese alphabet. For me this has made it much harder for me to learn the language and introduced some significant friction since at no point in my languages career have I had to attempt to read alternative alphabets. Even though Korean introduces concepts such as syllables to simplify the process of reading, I'm often left struggling to read at any reasonable speed. The reasoning for this is due to the lack of historic exposure I have to the Korean alphabet. For me, the Latin alphabet is something that I've been reading and writing daily for several decades now and all of the characters are engraved in my memory, likely never to be forgotten. On the other hand, Hangul is fresh and whilst it's still new I'm left trying to convert Hangul to Latin before attempting to translate the romanisation of a word, because my brain doesn't yet know how to cope with these new symbols. For example the text 안녕하세요 is still not etched into my memory yet, and looking at this phrase forces me to translate letter by letter into an alphabet that I do know. In this case I get to annyeonghaseyo, which I can then translate as being hello.
How can we apply this to F#?
For many of you who have reached this part of the post you may be wondering how this relates to the usual F# content you can find on this blog. As part of our coaching, we regularly speak to developers who may be completely new to F# - and for many developers who are new to F#, they find themselves trying to learn it in the context of what they already know in other languages. In the case of C# developers moving to F#, this often involves trying to mentally "rewrite" F# as C# code. For example, expressions, discriminated unions and pipelines may not be immediately obvious and get "rewritten" as for loops. At this point, a new F# developer is able to understand the code in the context of what they already know. However, it requires a number of mental leaps and so sometimes during code reviews and explanation, a simple reframing of an operation can significantly reduce the mental overhead on the other party. When we consider the likes of Haskell or Scala developers coming to F#, they already benefit to an understanding of this new "alphabet" they're faced with and are able to focus solely on the changes in syntax and immediately get to work.
The good news for me is that a popular saying in Korea relating to the alphabet is "A wise man can acquaint himself with them before the morning is over; even a stupid man can learn them in the space of ten days." and fortunately I've been able to start to pick up the pace of reading. I still struggle with the underlying words which are written in Korean but that's a challenge for another day. In terms of people who have been put off by F# though because it feels very different to C#, I would implore you to continue as you will gradually start to become more familiar with the language and how it is written, and whilst I wouldn't be quite as blunt as the saying above, with a little bit of effort F# will become easier to understand.
And for those of us trying to teach others programming, maybe there are more similarities with modern foreign languages than we are currently considering!