Вчимо монгольську (жартую)
П'ятниця, 9 Червень 2017 17:06![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Q: What is the Mongolian vowel separator for?
I've heard of the Mongolian vowel separator from programmers, who regard it as an interesting quirk in Unicode. When I google for it, most of the hits are from those revelling in its geekiness.
But as someone dabbling a bit in Mongolian, I'd like to know: What is it used for?
A:
The formal description has been already given in the excellent @ColinFine's answer. Let me give a different description in "layman terms".
Mongolian characters usually have four distinct forms: isolate, initial, medial, and final.
Vowels A
and E
have exactly the same glyphs in their final form.
Here are the four forms for A
and E
, correspondingly.
Note, both have two versions of final glyphs:
Although choosing between A
or E
can be concluded from the the syntax (A
for masculine grammatic gender while E
is for feminine), there can be semantic difference depending on the final form (stroke up or stroke down).
For example:
[qara]
(to look), stroke up;
[qar+a]
(black), stroke down;
The Vowel Separator is used in the second word.
Phonetically, there's a little pause before the final vowel.
Note that A
does not obtain the isolate form. Instead, it only changes to the second final form. Also, R
gets the final form in the second word.
As per why the character makes programmers' hell (just in case if you wonder).
Most of the modern-day compilers allows Unicode identifiers (e.g., variable names). You may write your program with variables in your (non-English) language, and your program works just fine.
However, using U+180E
may lead you into a trouble because it may or may not be considered a symbol. Here's what happens (assume that X
is the Mongolian Vowel Separator):
integer variable aXa = 42;
print aa;
Note: since the X
symbol is invisible, the first line on your screen looks like:
integer variable aa = 42;
Trouble one: Unicode versions prior to 4.0 treat X
as a formatting (thus, valid) character, but trying to use the variable aa
leads you to an error because there is no such variable! There's only aXa
, but you can't see it.
Trouble two: Unicode 4.0 treats X
as a zero-width space. This means that you're trying to declare a variable with space in its name (a a
) which makes your code unable to compile. But again, due to invisibility you simply don't know what's wrong. The code visually looks perfectly valid.
References:
...
Дата: П'ятниця, 9 Червень 2017 15:03 (UTC)...
Дата: П'ятниця, 9 Червень 2017 15:09 (UTC)...
Дата: П'ятниця, 9 Червень 2017 15:12 (UTC)Змінна 'zapros' нічим не краща від змінної 'запрос'.
Ви ще скажіть, що ніколи не називали змінні так. :))
...
Дата: П'ятниця, 9 Червень 2017 15:21 (UTC)Друге дєло, шо там був такий англійський, шо мериканці очінь долго обіжались - всьо таки ніхорошо так іздівацця над язиком Шекспіра і Елвіса.
Впрочім, ето било давно.
...
Дата: П'ятниця, 9 Червень 2017 15:46 (UTC)Щоправда, не робив так, як на картинці вище. Правда ж, гарно?! ;)
...
Дата: П'ятниця, 9 Червень 2017 18:43 (UTC)...
Дата: П'ятниця, 9 Червень 2017 18:59 (UTC)Вулканська:
...
Дата: П'ятниця, 9 Червень 2017 19:00 (UTC)...
Дата: П'ятниця, 9 Червень 2017 19:51 (UTC)...
Дата: П'ятниця, 9 Червень 2017 19:53 (UTC)...
Дата: Субота, 10 Червень 2017 02:09 (UTC)