程序員改變世界:拼音輸入法

輸入法真是一個偉大的發明,尤爲是非英語母語國家的輸入法。以中文的拼音輸入法爲例,26 個英文字母組成了聲母和韻母,而這些元素足夠表示全部的漢字(固然,在編碼容許的前提下)。程序員

全拼:這是拼音輸入法裏最直白和古老的輸入方式,雖然古老,可是極其有效。只要使用者學習過拼音,而後把字的拼寫和鍵盤的字母對應便可。不過,全拼還有一些小插曲:漢語拼音裏的「ü」在字母裏彷佛沒有對應,聰明的程序員用一樣在拼音裏沒有的「v」代替了;漢語拼音裏還有叫作「總體認讀音節」的東西,如「ian」,雖然它也是韻母,但和某些聲母搭配會可能表示徹底不一樣的兩個字。打個比方,「西安」和「線」的拼音都是「xian」。而後,人們又發明了分詞符,表示兩個字的拼音用「'」分隔便可。西安——xi'an,線——xian。Bravo!學習

全拼雖然解決了人們輸入漢字的問題,但擅於偷懶的程序員試圖構造一種可以用更少的鍵表明更多的字母的方案。即,在原有的全拼編碼基礎上,對鍵盤上的字母進行二次編碼。編碼

簡拼編碼:在打字的過程當中,若是隻須要輸入聲母部分,輸入法就能聯想獲得用戶想要的結果。好比:輸入「zhrmghg」能夠表示「中華人民共和國」;「pysrf」能夠表示「拼音輸入法」;更有甚者,用戶只須要輸入「zhrm」,候選詞中就已經有「中華人民共和國」。這種方案的基本思路是建立詞庫,也就是,把用戶常常輸入的字母和漢字單詞進行映射。上面的「zhrmghg」和「中華人民共和國」就是一種映射關係。這種映射關係豐富到必定程度,就造成了相似字典的詞庫。如今主流輸入法的智能聯想、雲聯想原理相同。設計

雙拼編碼:雖然簡拼容許人們輸入更少的字母,但這種偷懶也須要付出代價,某些不經常使用的詞語可能沒法輕鬆地輸出。如,地名,專業名詞等。程序員決定回到原點,從全拼中尋找答案。既然拼音=聲母+韻母,那爲何不用一個字母表示聲母,一個字母表示韻母呢?雙拼正是基於此原則,把漢語拼音裏的聲母和韻母均用一個字母表示。並且,這種編碼方式,還解決了全拼中分詞的困擾。以小鶴雙拼爲例,若是「xian」表示「西安」,輸入「xian」便可,若表示「線」,則輸入「xm」。一個漢字,兩個字母,簡單。基礎

模式編碼:如今主流輸入法都引入一種叫作「模式」的功能,如「U 模式」,「I 模式」。簡而言之,就是把全拼中不可能做爲詞的聲母部分的字母,映射到一個功能鍵上。前面說的「U 模式」可能就是用來拆字的。按下 U 鍵 ,而後把不認識的字拆成認識的多個字拼寫出來,輸入法會匹配出該字。拿「垚」舉例,我可能不認識這個字,但我認識「土」。我只需輸入「u tu'tu'tu」,輸入法可能就匹配出「垚(yáo)」來。模式做爲輸入法的拓展雖然很好用,可是在雙拼編碼裏,又引入了不一樣的小插曲。「u」在小鶴雙拼裏表示聲母「sh」,和「U 模式」的按鍵衝突了。咱們看下萬能的程序員是如何解決這個問題的——他們用大寫的 U 表示「U 模式」,用小寫的 u 表示雙拼裏的聲母,再次 Bravo!原理

這篇小小的文章,無心代表拼音輸入法和五筆輸入法哪一個更強大的立場,只是想說明程序員在創造拼音輸入法那些精巧的設計。這些精妙的設計,可能正體現他們對已知事物強大的抽象能力,共勉。程序

相關文章
相關標籤/搜索