Trang 6 trên tổng số 6 Đầu tiênĐầu tiên ... 456
Từ 51 tới 59 trên tổng số 59 kết quả

Đề tài: một phương pháp mã hóa tiếng Việt

  1. #51
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Mặc định một phương pháp mã hóa tiếng Việt

    Ở [bài #22] mình viết rằng để dịch từ mã D sang mã C không cần dịch mã âm đầu, thậm chí mã thanh. Điều này có thể gây thắc mắc cho vài người. Hai mã C, D có cùng bảng mã phụ âm đầu nhưng có bảng mã thanh khác nhau.

    Trọng tâm của bài ấy là mã C', vốn chỉ có hai thành phần là số thứ tự (n) của chữ không dấu thanh, theo sau là mã thanh (t). Và câu trên ngụ ý rằng việc dùng mã thanh từ mã D hay C trong mã C' là tương đương. Nói cách khác, với hai chữ Việt x, y bất kỳ, n(x) tC(x) < n(y) tC(y) nếu và chỉ nếu n(x) tD(x) < n(y) tD(y).

    Vài người có thể nghi ngờ điều đó. Trong mã D, thứ tự 8 thanh là ngang, huyền, hỏi, ngã, "sắng", nặng, sắc, "nặc" [bảng 2b]. So với thứ tự 6 thanh trong mã C, là ngang, huyền, hỏi, ngã, sắc, nặng [bảng 2], nó dường như không tương đồng: sắc đứng trước nặng trong mã này mà lại đứng sau nặng trong mã kia.

    Để lý giải điều này, chỉ cần nhớ rằng khi so sánh hai chữ, thanh chỉ được so sánh khi hai chữ ấy đã trùng nhau ở dạng không dấu thanh. Và chỉ cần xem một ví dụ về 8 chữ, như manh, mành, mảnh, mãnh, mánh, mạnh, mách, mạch, vốn chỉ khác nhau ở thanh trong mã D. Nhắc lại rằng trong mã này, manhmach là một.

    Nhưng khi phần chữ được dịch sang mã C (và rồi C'), nơi manh khác mach, theo phần chữ chung, tự nhiên chúng tách thành hai lớp: (i) lớp manh, gồm manh, mành, mảnh, mãnh, mánh, mạnh và (ii) lớp mach, gồm mách, mạch. Thanh chỉ được xem xét để so sánh 2 chữ khi chúng thuộc về cùng một lớp. Nếu so sánh mạnh với mách, ta không nhìn vào thanh.

    Vậy, khác với trật tự 6 thanh ngang < huyền < hỏi < ngã < sắc < nặng của mã C vốn là một quan hệ thứ tự toàn phần (đầy đủ), trật tự 8 thanh của mã D là một quan hệ thứ tự bộ phận (không đầy đủ), gồm hai dãy (i) ngang < huyền < hỏi < ngã < "sắng" < nặng và (ii) sắc < "nặc"; giữa hai dãy này không có liên hệ nào cả. Bất đẳng thức nặng < sắc trong mã D không bao giờ được dùng. Nó chỉ là một sự trùng hợp ngẫu nhiên do cách đánh số thanh.

    Bất kỳ cách đánh số 8 thanh nào mà bảo toàn 6 bất đẳng thức sau (như mã D) đều tương đồng với bất cứ cách đánh số 6 thanh nào mà bảo toàn 5 bất đẳng thức đầu (như mã C) vốn chính là tiêu chuẩn từ điển VN. Nếu gán cho 8 mã số liên tiếp 6 thanh của mã C, lần lượt, 0=ngang, 1=huyền, 2=hỏi, 3=ngã, 4=--, 5=--, 6=sắc, 7=nặng thì kết quả vẫn cứ đúng như thường. Tương tự, kết quả vẫn đúng như thường nếu đánh số 8 thanh của mã D theo thứ tự chẳng hạn, ngang, huyền, hỏi, ngã, sắc, "nặc", "sắng", nặng. (Còn thứ tự mới này có cho những công thức dịch mã tốt hay không lại là chuyện khác.)

    Như mã C', các mã trung gian khác được trình bày sau đó (C2, C*, C2*, B, B+, B++, B2+, A, A1, A2, A3, A3', A4, A4') đều có mã thanh. Trên lý thuyết, nó là tC. Trên thực tế, có gì dùng nấy: tC hay tD đều được cả.
    Đã được chỉnh sửa lần cuối bởi Ada : 30-03-2021 lúc 08:31 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #52
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Nhân dịp vài âm vần thêm bớt, đã nói trên, mình xếp đặt lại bảng mã C*. Sự thay đổi này không có ý nghĩa thực tiễn trước mắt nào, chỉ để tăng tính trật tự, giảm tính bất quy tắc, tóm lại, chỉ để làm đẹp.

    Bảng 3a (phiên bản 2021). 192 mã âm vần của mã C*
    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0  ao    âu    o     ô     ơ     ưu    ươu   uy    oao   oe    i     e   
                                                        uao   ue              
                                                                              
    _1  ai    ây    oi    ôi    ơi    ưi    ươi   uyu   oai   oeo   iu    eo  
                                                        uai   ueo             
                                                                              
    _2  am    âm    om    ôm    ơm    ưm    ươm   uym   oam   oem   im    em  
                                                        uam   uem             
                                                                              
    _3  ap    âp    op    ôp    ơp    ưp    ươp   uyp   oap   oep   ip    ep  
                                                        uap   uep             
                                                                              
    _4  an    ân    on    ôn    ơn    ưn    ươn   uyn   oan   oen   in    en  
                                                        uan   uen             
                                                                              
    _5  at    ât    ot    ôt    ơt    ưt    ươt   uyt   oat   oet   it    et  
                                                        uat   uet             
                                                                              
    _6  ang   âng   ong   ông   ơng   ưng   ương  uynh  oang  oeng  inh   eng 
                                                        uang  ueng            
                                                                              
    _7  ac    âc    oc    ôc    ơc    ưc    ươc   uych  oac   oec   ich   ec  
                                                        uac   uec             
                                                                              
    _8  au    uâu   u     ua    uơ    ư     y     uê    oau   a     ia    ê   
                                                        uau                   
                                                                              
    _9  ay    uây   ui    uôi   uơi   ưa    uya   uêu   oay   oa    iêu   êu  
                                                        uay   ua    yêu       
                                                                              
    _A  ăm    oong  um    uôm   ôông  --    anh   uênh  oăm   oanh  iêm   êm  
                                                        uăm   uanh  yêm       
                                                                              
    _B  ăp    ooc   up    uôp   ôôc   --    ach   uêch  oăp   oach  iêp   êp  
                                                        uăp   uach  yêp       
                                                                              
    _C  ăn    uân   un    uôn   uơn   uưn   uyên  uên   oăn   êng   iên   ên  
                                                        uăn         yên       
                                                                              
    _D  ăt    uât   ut    uôt   uơt   uưt   uyêt  uêt   oăt   êc    iêt   êt  
                                                        uăt         yêt       
                                                                              
    _E  ăng   uâng  ung   uông  uơng  uưng  uyêng uêng  oăng  ing   iêng  ênh 
                                                        uăng        yêng      
                                                                              
    _F  ăc    uâc   uc    uôc   uơc   uưc   uyêc  uêc   oăc   ic    iêc   êch 
                                                        uăc         yêc
    Do sự thay đổi này, mọi mã khác liên quan, như B, C, C2, C2*, D,... vốn đều liên hệ với mã C* bằng những công thức (hơn là bằng bảng số) cũng được thay đổi một cách tương ứng. Mình không in lại các bảng mã đó nữa.
    Đã được chỉnh sửa lần cuối bởi Ada : 04-04-2021 lúc 09:16 PM. Lý do: Cập nhật bảng mã
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #53
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Khác với hai sửa đổi vừa nêu, vốn nằm ở dạng chuẩn (mã D), sửa đổi thứ ba trong revision 2021 này nằm ở dạng mã (mã V), là dạng cuối cùng, dạng lưu trữ lâu bền trong bộ nhớ máy tính. Mục đích là để tương thích với định dạng C-xâu (C-string).

    Ở [bài #12] viết về revision 2017, mình viết rằng định dạng mã của mình tương thích với UTF-8 do các xâu mã bao hàm cả các xâu UTF-8 và, do các xâu UTF-8 bao hàm cả các xâu ASCII, tính tương thích này cũng đương nhiên bao hàm cả tương thích với ASCII. Tuy nhiên, tính "tương thích với định dạng X" còn được hiểu theo một nghĩa khác, là "tương thích với ứng dụng hiểu định dạng X". Và sự bao hàm khi ấy tồn tại theo chiều ngược lại. Ứng dụng hiểu được xâu mã của mình nằm trong số các ứng dụng hiểu được UTF-8 và số sau, đến lượt mình, nằm trong số các ứng dụng hiểu được xâu ASCII.

    Vâng, tính tương thích với C-xâu mình đang nói ở đây chính là theo định nghĩa thứ hai này. Định dạng xâu tương thích với C-xâu nghĩa là nó có thể được xử lý đúng bởi thư viện xâu của ngôn ngữ C. Nghĩa là, chẳng hạn, có thể xác định độ dài của nó nhờ strlen, có thể sao chép nó nhờ strcpy, có thể so sánh nó với một xâu khác nhờ strcmp, ít ra cũng để biết hai xâu có bằng nhau hay không. Vâng, các xâu định dạng hỗn hợp mã ASCII + U + V của mình tương thích với định dạng C-xâu nếu chúng được bao hàm trong tập hợp các C-xâu.

    Nói đơn giản, nó tương thích với C-xâu nếu về hình thức, nó là C-xâu. Nói trắng ra, nếu nó không có byte nào bằng 0.

    Yêu cầu này xung khắc với tính trực giao, một nguyên tắc nền tảng, đã viết ở [bài #35]. Tính trực giao bảo rằng mọi xâu byte đều là xâu mã, đều có nghĩa. Kể cả các xâu có một hay nhiều byte bằng 0. Một sự xung đột sâu sắc, mang tính nguyên tắc, khó hóa giải.

    Trong một ký tự UTF-8+, mọi byte đều khác 0. Nhưng trong một chữ Việt trong mã V, chỉ byte đầu khác 0, byte còn lại được phép nhận giá trị bất kỳ.

    Nhắc lại, dạng chuẩn (mã D) là
    Code:
    v1 v2 v3 v4 v5 v6 v7 v8    t1 t2 t3 p1 p2 p3 p4 p5
    trong đó, v1...v8 là mã âm vần, t1...t3 là mã thanh, p1...p5 là mã phụ âm đầu. Các mã âm vần chiếm 120 trong 128 giá trị của khoảng [0,0x80), nghĩa là chúng có v1 = 0.

    Trong revision 2018 [bài #17], dạng chuẩn được dịch sang dạng mã (mã V) bằng cách lật 3 bit:

    • Lật v1, nghĩa là đưa chữ Việt từ nửa trên xuống nửa dưới của bản đồ quy hoạch không gian mã [Hình 4b, 5b], nhờ đó tránh né khỏi vùng bị chiếm bởi các ký tự ASCII. (Nói riêng, nhờ đó, byte đầu của một chữ Việt luôn khác 0.)
    • Lật v2, nghĩa là hoán đổi hàng trên với hàng dưới của [nửa dưới] bản đồ, hoán đổi dãy 64 âm vần [nửa] khép với dãy 48 âm vần [nửa] mở, 8 mã số bỏ trống và 8 âm vần [nửa] khép. Và lật t2, nghĩa là hoán đổi 2 cột ở nửa trái [của nửa dưới] cho nhau và 2 cột ở nửa phải [của nửa dưới] cho nhau, nói riêng, hoán đổi 2 thanh khứ ("sắng", nặng) với 2 thanh nhập (sắc, "nặc") [Bảng 2b]. Chữ Việt nhờ thế đã né tránh khỏi 7/8 đầu ô vuông hàng dưới cột thứ ba, nơi đã bị chiếm bởi các ký tự UTF-8+ [Hình 5b, 5c].



    Sửa đổi lần này, mình lật thêm 5 bit nữa:

    • Lật t3, nghĩa là hoán đổi 4 thanh phù (ngang, hỏi, "sắng", sắc) với 4 thanh trầm (huyền, ngã, nặng, "nặc") [Bảng 2b]. Cùng với phép lật t2 ở trên, vốn dĩ cũng hoán đổi 2 thanh bằng (ngang, huyền) với 2 thanh gãy (hỏi, ngã) [Bảng 2b], thanh t bất kỳ được hoán đổi với thanh t XOR ngã. Rút cuộc, nói riêng, ngang hoán đổi với ngã.
    • Lật p1...p4, nghĩa là phụ âm đầu bất kỳ p hoán đổi với phụ âm đầu p XOR y [Bảng 1]. Nói riêng, phụ âm đầu trống hoán đổi với phụ âm đầu y.


    Vậy, dạng mã (mã V) bây giờ là
    Code:
    u1 u2 v3 v4 v5 v6 v7 v8    t1 s2 s3 q1 q2 q3 q4 p5
    Trong đó
    Code:
    u1 u2 s2 s3 q1 q2 q3 q4  =  ~v1 ~v2 ~t2 ~t3 ~p1 ~p2 ~p3 ~p4
    Nói cách khác, gọi xD, yV là các số 16 bit biểu diễn một chữ Việt lần lượt trong mã D và mã V, có thể mã hoá (xD -> yV) và giải mã (yV -> xD) nhờ hệ thức
    Code:
    xD ^ yV == 0xC07E
    Tóm lại, trong mã D byte 0 thuộc về một chữ có phụ âm đầu trống và thanh ngang, nhưng trong mã V, byte 0 thuộc về một chữ có phụ âm đầu y và thanh ngã.

    Đó là phần dễ. Phần khó là phải chứng tỏ byte như thế, dù được phép trên lý thuyết, trên thực tế không bao giờ xuất hiện. Nói cách khác, phải chứng tỏ tổ hợp y + ngã không tồn tại trong bất cứ văn bản Việt nào đã, đang hay sẽ được viết ra.

    - - - Nội dung đã được cập nhật ngày 25-03-2021 lúc 11:51 AM - - -

    Ý tưởng mã hoá y + ngã bằng 0 dựa trên một thực tế hiển nhiên. Chính âm VN không có chữ y với tư cách là một phụ âm. Nghĩa là chữ y chỉ dùng làm phụ âm đầu khi ký âm ngoại ngữ. Còn thanh ngã thì dường như không bao giờ dùng để ký âm ngoại ngữ. Vì nó xem ra chỉ có trong tiếng Việt mà thôi.

    Ý tưởng đơn giản thế, nhưng trước khi quyết định dùng nó, phải xem xét thấu đáo mọi trường hợp. Để "xem xét thấu đáo", mình đã phải dùng hết cả sở học bình sinh.

    Thanh ngã là thanh rất hiếm có. Trừ tiếng Việt ra, nó không có trong bất cứ ngôn ngữ nào, kể cả tiếng Mường, là tiếng gần với tiếng Việt nhất. Kể cả tiếng Mèo, tiếng Thái, là những tiếng giàu thanh hơn cả tiếng Việt. Ngay cả người Kinh, trừ đồng bằng Bắc Bộ, không ai nói thanh này. Qua đèo Hải Vân, nghễu nghện (kiêu ngạo, hiên ngang, oai vệ) đã trở thành nghểu nghến (kiêu kỳ, chảnh choẹ, uể oải). Ngay cả khi viết sai chính tả, ngã bị biến thành hỏi chứ không bao giờ ngược lại. Nếu miền Bắc không có nơi nào nói hỏi thành ngã thì "em chã" (Vũ Trọng Phụng) đã chả có trên đời.

    Nó hiếm, vì khó phát âm. Thanh ngã, nói rõ hơn, dấu thanh ngã, theo mọi mô hình đều thể hiện một thanh vị duy nhất, là ngã. Thanh vị phức tạp nhất. Theo mô hình [4] chẳng hạn, giải thích ở [bài #45], thanh điệu của nó có những 3 "nốt nhạc" là số lớn nhất có thể có ở một thanh, và thanh giọng của nó có giọng "ạt", giọng đặc biệt nhất, với chức năng khu biệt đặc thù (không thể thay thế bằng bất cứ giọng nào khác khi đối chiếu ngã với một thanh khác có cùng thanh điệu, là hỏi).

    Trái với đó, phụ âm đầu y, nói rõ hơn, âm vị j ở đầu âm tiết, phổ biến trong hầu hết mọi ngôn ngữ (1). Từ jatôi (Nga) và vâng (Đức), jeanh (Catalonia) và vâng (Anh), joanh (Tây Ban Nha), vâng (Tiệp Khắc) và rồi (Phần Lan), mắt trong tiếng Pháp và , giơ, trong tiếng... Việt. Trung, Nam Bộ đều nói d, gi, vài nơi thậm chí cả v, thành j. Chẳng hạn, dỗ, giỗ và thậm chí cả vỗ đều thành jỗ. (2)

    Tương tự như y trong yeah (je) của tiếng Anh, trong tiếng Việt, phụ âm đầu y được dùng để ký âm từ ngoại nhập hay ký âm ngoại ngữ, như yàng (trời), yo yỉng (phụ nữ), thành phố Niu Yoóc, bác sỹ Yéc-xanh, tổng thống Yen-xin, đức cố giáo hoàng I--han-ne Pao-lút hay đức cố đạo sỹ Yìn Trư Pỉng (3). Xin nhấn mạnh rằng lối ký âm cho ví dụ cuối, gọi là bính âm (4), không bao giờ dùng đến dấu ngã bởi vì tiếng Hán hiện đại không có thanh nào giống thanh ngã.

    Nó phổ biến, vì dễ phát âm. Thế nhưng chính vì dễ phát âm, từ lâu phụ âm đầu j trong tiếng Việt đã phát triển theo một cách riêng và được thể hiện cũng theo một cách riêng.

    Trong chính âm, phụ âm đầu j, vốn là nửa nguyên âm, đã hoàn toàn phụ âm hoá (trở thành d hay gi) hoặc nguyên âm hoá (trở thành i/y). Ví dụ, "yang goá" (Hán) đã trở thành "dương quá" (Việt) và "yao goái" (Hán) đã trở thành "yêu quái" (Việt).

    Trong chính tả, do thế, ý niệm chữ y là một phụ âm đã biến mất khỏi tiềm thức của người Việt, nhường chỗ cho ý niệm nguyên âm. Theo xu hướng đó, khi muốn nhấn mạnh bản sắc phương ngữ Nam Bộ, Trung Bộ, phụ âm đầu j không viết bằng chữ y, mà bằng chữ dz (5). Chẳng hạn, dỗ, giỗ, vỗ không viết là yỗ, mà viết là dzỗ. Cũng theo xu hướng đó, chữ yàng dần dần biến ra giàng, đức cố giáo hoàng I--han-ne Pao-lút quen thuộc hơn dưới tên Gio-an Phao-lô hay Giăng Pôn và đức cố đạo sỹ Yìn Trư Pỉng quen hơn dưới tên Doãn Chí Bình.

    Lối ký âm cho ví dụ cuối, gọi là phiên thiết (4), cũng là trường hợp duy nhất một ngoại ngữ [đã từng] có thanh giống ngã. Tuy nhiên, nó thuộc chính tả, vốn biểu thị chính âm, nghĩa là đã hội nhập với tiếng Việt từ lâu, nên chẳng gây sự cố bất ngờ nào. Phụ âm đầu j của tiếng Hán chỉ có thể phiên thành d, gi hay y và, nếu y, thì cũng là nguyên âm chứ không bao giờ phụ âm. Nhắc lại, "yêu quái" là ví dụ.

    Cuối cùng, phụ âm đầu y còn có thể tham gia ký âm e đã được mềm hoá ở vài nơi trên miền Bắc, như yeo (eo), yem (em), yép (ép), yén (én), [chữ] Yét (Ét, tức S), yeng yéc (eng éc), theo một cách tương đồng với [cá] chiẽm (chẽm), kiẽm (kẽm), [áo] chiẽn (chẽn), tiẽn (tẽn) [tò], biẽn liẽn (bẽn lẽn), [người/tiếng] Miẽo (Mẽo), liẽo điẽo (lẽo đẽo), kiẽo kiẹt (kẽo kẹt). Nhưng do từ vựng không có ẽm, ẽn, ẽng, nên yẽm, yẽn, yẽng cũng không có lý do tồn tại. Chữ yẽo có thể tồn tại, vì ẽo tồn tại (trong ẽo ợt).

    Nhưng khả năng đó chung quy chỉ là tiềm năng. Nó có lý, nhưng không có thực. Mình đã nghe thấy những âm yem, yén, yẽo,... chứ chưa nhìn thấy chúng viết ra thành chữ (để ký âm tiếng miền Bắc) bao giờ. Có lẽ cũng bởi vì âm e chỉ mềm đi, nghĩa là cùng lắm giống je, chứ chưa "mềm" đến mức trở thành ie/ye (trong con mắt của người Việt, vốn xem i/y là nguyên âm). Chữ điếu, chữ duy nhất mình đã thấy mà có thể dùng làm chứng về việc ký âm e mềm trong đời thực, vốn được tác giả tế nhị sáng tạo ra có lẽ chỉ vì nó tục tĩu nếu không nhẹ tay viết ếu thay cho éo, vẫn còn cách y + ngã rất xa.

    Các trường hợp vừa duyệt qua được tóm tắt bởi Bảng 11. Phương ngữ miền Nam và miền Bắc được tách ra khỏi chính âm, trong đó đã kể cả e mềm, vốn có thể xem như je và có thể viết gần đúng bằng ie/ye. Các âm Hán-Việt được tách ra khỏi chính âm thành một nhóm riêng, gọi là "Hán, phiên thiết" (6), trong đó đã kể cả nguyên âm đôi phát sinh từ ja, je, trong tiếng gốc. Các âm Hán viết theo lối bính âm được tách khỏi các ngoại ngữ khác thành một nhóm riêng, "Hán, bính âm" (7), trong đó, đã kể cả chữ j vốn được dùng để chỉ phụ âm gi (hơn là y) trong hệ thống bính âm "xịn" của Trung Quốc, Đài Loan. Việc này nhằm liên tưởng đến một hiện tượng khác: tiếng Việt có một lượng từ ngoại nhập nói gi hay y mà viết bằng j; một tác giả có thể viết ja-va để chỉ gia-va hoặc ya-va vì đó là 2 giá trị khả dĩ cho chữ j trong mọi tiếng dùng bảng chữ cái Latin.

    Bảng 11. Biểu thị phụ âm đầu j của các âm [tiết] ngoại nhập và sự xuất hiện của dấu thanh ngã. Kể cả e mềm, xem như je. Kể cả nguyên âm đôi phát sinh từ ja, je, của tiếng gốc. Kể cả phụ âm đầu gi. Các âm Hán - Việt thuộc nhóm "Hán, phiên thiết". Các âm Hán viết lối hiện đại thuộc nhóm "Hán, bính âm". Phương ngữ hai miền Nam, Bắc được xem như hai ngoại ngữ riêng. Các tiếng dân tộc ít người thuộc về "ngoại ngữ khác". Ký hiệu "*" nghĩa là có, "-" nghĩa là không.
    Code:
    Nguồn                d  dz gi j  v  y  ~ 
    ==================== == == == == == == ==
    Chính âm             -  -  -  -  -  -  * 
    Phương ngữ miền Nam  *  *  *  -  *  -  * 
    Phương ngữ miền Bắc  -  -  -  -  -  *  * 
    Hán - phiên thiết    *  -  *  -  -  *  * 
    Hán - bính âm        -  -  -  *  -  *  - 
    Ngoại ngữ khác       -  -  *  *  -  *  -
    Mình vừa chứng tỏ rằng trong 256 tổ hợp của 32 phụ âm đầu với 8 thanh, y + ngã là ngoại lệ có một không hai: nó không tồn tại.

    Như đã nêu ở cuối bài trước, tính chất này đảm bảo một ngoại lệ cho nguyên tắc về tính trực giao: byte 0 vắng mặt trong mọi từ mã thực tế của mã V và, do đó, trong mọi xâu mã thực tế trong định dạng hỗn hợp mã ASCII + U + V của mình (nhắc lại, ASCII + U = UTF-8), miễn là nó vắng mặt ngay từ đầu trong phần ASCII của nguyên bản (UTF-8). Nói cách khác, hễ nguyên bản là C-xâu thì bản mã cũng thế. (8)

    EDIT 2021-9-12. Trong một phiên bản cũ của bài này, mình đã viết

    Tuy nhiên, chú ý rằng chữ (trong ầm ỹ, khi không muốn viết là ầm ĩ, hay trong òn ỹ, khi không bị viết sai thành òn ỷ) có thể được mã hoá là y-ỹ theo công thức chung yx mã hoá thành y-yx, tương tự như các chữ có dạng u thành y-u, gix thành gi-ix, giêu thành gi-u, để tiện giải mã tiền tố sang B+ (và A3). Phương án mã hoá này dựa trên mô hình giản, vốn bỏ qua sự khác biệt tinh tế giữa yêu với yao, nghĩa là xem mọi chữ y dẫn đầu đều là phụ âm j. Nó không đảm bảo tính C-xâu và chữ là ví dụ minh chứng.
    Mình nhầm. Ngay cả trong phương án này, chữ y không mã hóa bằng y-y, mà chỉ đơn giản bằng --y. Không có "công thức chung" nào cho chữ có dạng yx (mà không phải là dạng u), đơn giản vì y là chữ duy nhất có dạng ấy. Tóm lại, phương án này đảm bảo tính C-xâu.

    Tính C-xâu được đảm bảo, dĩ nhiên, bởi phương án cấm hẳn phụ âm đầu y (chỉ chấp nhận yêu, từ chối yao) để tiện giải mã tiền tố sang B++ (và A4).

    Và chủ yếu, tính C-xâu được đảm bảo bởi phương án mã hoá chữ y thành phụ âm đầu chỉ khi nó thật sự là phụ âm đầu, nghĩa là khi nó dẫn trước một nguyên âm, ngoại trừ khi u/uyêu/uya. Đó cũng là phương án mạnh nhất, phải thực thi bằng cách "mẫu mực" nhất, trả giá cao nhất, là giải mã tiền tố sang B (và A2).






    ____________________
    (1) Phụ âm đầu j không có trong tiếng Mường, phù hợp với việc nó không có trong chính âm [tiếng Việt].

    (2) Cá nhân mình cho rằng [chữ] dz, cũng như d, gi, v trong tiếng miền Nam không phải là [âm] j mà là đ mềm. Tựa như sự khác biệt giữa yeux () (mắt) và dieu (dzơ) (trời) trong tiếng Pháp, giữa yevochka (cô bé) và devochka (cô gái) trong tiếng Nga, hay giữa jez (đập chặn dòng) và děs (nỗi kinh hoàng) trong tiếng Tiệp Khắc. Bằng chứng ủng hộ quan điểm này là việc làm nổi bật bản sắc Nam Bộ ở phụ âm này bằng chữ dz, vốn trông giống như chữ d, hơn là chữ y. Thí dụ để ủng hộ quan điểm này, trong một vở cải lương mà mình rất tiếc đã quên tên tác giả, một khách hàng người Pháp thất vọng đã mỉa mai chào "adieu" (vĩnh biệt); và tay chủ tiệm người Sài Gòn, tiếng Pháp tuy thiếu nhưng mồm mép có thừa, đã đáo để đáp "ai dơ thì biết." Nhưng thôi, dẹp cải lương qua bên, j là quan điểm của đa số [Wikipedia, "Vietnamese Phonology"]. Vả lại, điều đó không có bất cứ tác động nào đến chủ đề đang bàn. Không giống như tiếng Pháp, Nga hay Tiệp Khắc, khác biệt giữa hai âm này trong tiếng miền Nam không phải là khác biệt âm vị học. Nghĩa là không có tác dụng xác định từ nghĩa. Nói cách khác, bất chấp người nói phát âm đ mềm hay j (hay cả hai), người nghe dù sinh trưởng ở miền Nam như người nói cũng không thể phân biệt (chẳng hạn) dzơ, , giơ, và đôi khi, cả . Vậy, dù định âm sao đi nữa, trong tiếng miền Nam phụ âm đầu yd, gi, dz và cả v ở vài nơi vẫn đồng âm, vẫn phải đem ra xem xét, bàn luận cùng lúc với nhau. Tương phản với đó, trong tiếng miền Bắc, tuy phụ âm đầu zd, đôi nơi cả gi và/hay r, cũng đồng âm, nhưng z khác y, nên không cần xem xét.

    (3) Thí dụ khác về dùng chữ y để ký âm ngoại ngữ, một nhân viên tình báo Mỹ mang quân hàm thiếu tá hải quân đáp lời sếp mang quân hàm đại tá lục quân, "xơ yét xơ" (sir, yes, sir) (Đặng Thanh). Chúng ta còn có thể hạ giọng từ yes để nhấn mạnh hai từ sir, cho nó đúng kiểu quân nhân, nghĩa là viết "xơ yẹt xơ".

    (4) Cả hai thuật ngữ "bính âm", "phiên thiết" ở đây chỉ là mượn tạm để chỉ 2 lối ký âm chữ Hán thành chữ Việt. Thật ra, bính âm là phép ký âm đương đại thành chữ Latin, để dạy chữ Hán cho người đọc phương Tây, phiên thiết là phép ký âm cổ truyền thành chữ Hán, giống như đánh vần, để dạy chữ Hán cho người đọc Trung Hoa.

    (5) Cá nhân mình không nghĩ rằng dz, hay f, j, w, z, là "công dân hạng nhì" của tiếng Việt. Ngoài ví dụ về "nói dzóc" đã nêu [bài #33], có thể kể thêm "dzọc" (nghịch, chọc, ngoáy, quậy) và "mắng dzốn" (nhiếc, móc, quở, trách). Những từ đó không thuộc về tiếng Việt phổ thông, nên chẳng ai có quyền phán viết sao cho đúng. (Mặt khác, từ cách nói , , vỗ, vỡ, , da, di, , , du của người Sài Gòn chính gốc, những người phát âm v hoàn hảo, phân biệt rành rọt với d, có thể đoán vọc, mắng vốn là cách viết sai.) Cách nhìn không định kiến, không thiên vị đó đã dẫn đến quyết định chọn tổ hợp của thanh ngã với phụ âm đầu y, hơn là dz, f,... để giải quyết vấn đề này.

    (6) Các từ Hán-Việt, vốn là thành phần cốt lõi của tiếng Việt, lẽ ra phải thuộc về nhóm "chính âm"; nhưng ở đây chúng được xem như một phương tiện biểu thị âm nên tách thành một nhóm riêng, "Hán, phiên thiết", để xem xét tỉ mỉ. Đặt tên như thế để lưu ý rằng nhóm gồm các âm hơn là các từ, và nó không những ký âm từ ngoại nhập (Hán-Việt) mà còn ký âm ngoại ngữ (Hán), nghĩa là gồm cả những chữ tuy dễ đọc, nhưng không dễ hiểu cho một người Việt bình thường. Những cụm từ thường nghe như "tối tân nhất", "tối ưu nhất", "siêu việt hơn", "ưu việt hơn", "thấu hiểu sâu sắc", "quán triệt đầy đủ", "người giáo viên", "người chiến sỹ", "người quân tử", thậm chí cả "người doanh nhân" đã chứng tỏ người nói chẳng hiểu tối, việt, thấu, quán, viên, tử, sỹ, nhân nghĩa là gì.

    (7) Các âm Hán bính không có gì đặc biệt hơn ngoại ngữ khác. Tách thành nhóm riêng chỉ để tiện thấy sự khác nhau với các âm Hán-Việt (đặc biệt, về chữ y) và làm ví dụ về một nguồn khả dĩ của các chữ Việt có chữ cái j.

    (8) Ngược lại, nếu nguyên bản không phải là C-xâu, nghĩa là nếu chứa byte 0 vốn là ký tự NUL, thì bản mã cũng thế bởi vì chỉ các chữ cái và dấu thanh mới có thể được mã hoá, còn NUL cũng như mọi ký tự khác đều giữ nguyên.
    Đã được chỉnh sửa lần cuối bởi Ada : 12-09-2021 lúc 08:22 PM. Lý do: Sửa "phiên âm" thành "ký âm". Bài này phân biệt 2 lối ký âm ngoại ngữ: phiên và bính.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  4. #54
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Để tiện theo dõi, mình liệt kê tất cả 16 âm vần mà mình thấy khá hợp lý, nhưng đã loại bỏ sau khi cân nhắc lợi ích và chi phí. Chúng có thể dùng để phiên âm ngoại ngữ. Nhưng đó chỉ là tiềm năng. Chúng có lý, nhưng xem ra không có thực. Bảng mã của mình không có chỗ cho chúng, nhưng những ứng dụng khác, như bộ gõ, có thể xem xét chấp nhận chúng.

    Bảng 12. Các âm vần đã từng được cân nhắc và từ chối.
    Code:
    uâm   uơu   uưi   ơu  
    uâp   uơm   uưu   uyêu
    uêm   uơp   uưm   uyêm
    uêp   uư    uưp   uyêp
    Đã được chỉnh sửa lần cuối bởi Ada : 02-04-2021 lúc 11:21 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  5. #55
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Mình vừa mới cập nhật Bảng 3a (phiên bản 2021) -- bảng mã âm vần của mã C* [bài #52].
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  6. #56
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Mặc định một phương pháp mã hóa tiếng Việt

    Bảng mã của mình không chỉ định thuật toán mã hóa. Nhưng thuật toán giải mã cần thí dụ minh họa bằng số. Nghĩa là cũng phải cài đặt một thuật toán mã hóa nào đó. (Chứ nếu không thì lấy đâu ra dữ liệu để giải mã.)

    Để tránh gây quá nhiều bất ngờ cho người dùng, mình chọn thuật toán không cứng nhắc theo một luật nào, mà theo tiền lệ trong văn chương, báo chí Việt. Chữ nào không có tiền lệ thì mình phán đoán. Cụ thể như sau.

    Code:
    Chữ     Mã
    ======= ========
    giạ     gi-ạ
    gịa     N/A
    giú     gi-ú
    gíu     N/A
    giễu    gi-iễu
    giêng   gi-iêng
    giếc    gi-iếc
    giên    gi-ên
    giết    gi-iết
    giêm    gi-êm
    giếp    gi-iếp
    giênh   gi-ênh
    giếch   gi-ếch
    yeo     y-eo
    yêu     --yêu
    Trong đó, chữ yeo không có tiền lệ, nhưng cũng không cần phán đoán vì mã hóa như thế là hiển nhiên. Tương phản với nó, chữ yêu có quá nhiều tiền lệ (quá thông dụng) nhưng mã hóa như thế không phải là lựa chọn hiển nhiên vì còn một cách mã hóa khác, y-yêu, được ủng hộ bởi lý do kỹ thuật [#24, #28, #29], mà rút cuộc mình không chọn vì cơ sở khoa học có thể tranh cãi [#30]. Quyết định này được áp dụng tương tự cho mọi chữ khác có dạng u, như yên, yết, yểm,... Hai chữ giếpgiênh không có tiền lệ, mình phán đoán. Chữ gịa, tuy có thể mã hóa thành gi-ịađó là tiền lệ, nhưng mình quyết định không mã hóa vì nó xung khắc với mô hình chính tả làm cơ sở cho các thuật toán đặt dấu thanh; theo đó, vị trí đặt dấu thanh được suy từ âm và, đến lượt mình, âm được suy từ chữ, dĩ nhiên, không dấu thanh [#27, #35]. Cho nên nếu một chữ không dấu thanh có thể suy ra 2 âm thì phải từ chối 1, chỉ chấp nhận 1. Cụ thể, với chữ gia, giữa 2 cách phát âm khả dĩ (có tiền lệ), gi-a được chấp nhận vì thông dụng hơn gi-ia và, hệ quả, giạ được chấp nhận còn gịa bị từ chối. Chữ gíu cũng được quyết định một cách tương tự. Trường hợp này khác với một số chữ đã được xác định ngay từ đầu là thừa và vì thế, không có mã, như lynh, qui, quịt, quíu,... [#2, #31]. (Những chữ này đều có tiền lệ cả. Có ai biết lynh-sơ nghĩa là gì không nhỉ?) Nó cũng khác với trường hợp 2 chữ có chung một mã (do đồng nghĩa, đồng âm, cùng chữ cái và chỉ khác nhau ở vị trí dấu thanh) như góagoá. Vậy, quyết định cho gịa, gíu cũng dựa trên tiền lệ. Một thứ tiền lệ khác, không phải là văn chương, báo chí, mà là kỹ thuật, công nghệ.

    Vấn đề ở đây cũng tương tự như bảng mã tiếng Việt chuẩn tương thích với Unicode [TCVN 6909:2001]. Chữ chẳng hạn, có 5 cách mã hóa khác nhau (, ư huyền, ù móc, u móc huyền, u huyền móc) và chuẩn không chỉ định cách nào. Hai cách đầu, mà ta thấy trong các bộ gõ ngày nay dưới tên gọi dựng sẵntổ hợp, là lựa chọn của những người cài đặt. Chúng phản ánh tiền lệ của thị trường phần mềm thời ấy.
    Đã được chỉnh sửa lần cuối bởi Ada : 12-09-2021 lúc 08:13 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  7. #57
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Còn một vấn đề mình muốn giải quyết luôn trong năm 2021 này. Mã hóa các chữ qui, quịt, quíu,...

    Ngay từ đầu và đến tận hôm qua, chúng vẫn được xem là thừa, thậm chí là sai [#2]. Nhưng thật ra thì từ lâu mình đã cảm thấy nhận định đó không ổn.

    Một, khi cho phép đồng thời tồn tại cả "kỹ sư" và " nữ", không có cớ gì để chấp nhận quy mà lại từ chối qui. Nếu chấp nhận quy, quỵt, quýu và cả qui, thì phải chấp nhận cả quịt, quíu mới đúng.

    Hai, nếu bảo ai đó viết chữ quỵt (trốn, chạy, né, giựt, xù (nợ)), một người Hà Nội chắc sẽ viết quịt; nếu bảo ai đó viết chữ quýu (bối rối, lúng túng, bấn loạn, líu ríu chân tay, như gà mắc tóc), một người Sài Gòn chắc sẽ viết quíu (1). Tính chắc chắn trong những trường hợp này có lẽ cao hơn cả khi ai đó phải quyết định giữa 2 từ "bác " và "bác sỹ" (2).

    Ba, điều trên vẫn đúng kể cả khi người viết không đến từ Hà Nội mà cũng chẳng Sài Gòn. Bất cứ bộ gõ thông dụng nào, phần mềm ngoài hay tích hợp sẵn trong hệ điều hành, cũng cho phép viết các chữ trên, dù tác giả của nó thậm chí có thể là người... Mỹ.

    Cái tồn tại là cái có lý. Nếu trông thấy một thứ tồn tại vô lý, thì cái vô lý không phải là thứ ấy, mà là cái "lý". Lý thuyết ấy.

    Trong mô hình âm tiết được dùng, (âm_đầu) (âm_đệm chủ_âm âm_cuối), gọi một cách nôm na là xờ-oai-xoai-huyền-xoài, những chữ này sai (không tồn tại). Nhưng chúng lại đúng (tồn tại) trong một mô hình khác [2], là (âm_đầu âm_đệm)(chủ_âm âm_cuối), gọi nôm na là xoà-ai-xoai-huyền-xoài, từng được viện dẫn [#37] như một sự phê phán mang tính xây dựng đối với mô hình trước. Hãy xem chữ qui trong sự so sánh với chữ đồng âm là quy: chúng được tách thành qu-iqu-y trong mô hình sau, nhưng được tách thành q-uiq-uy theo mô hình đầu. Mô hình sau chấp nhận cả hai chữ vì vần i và vần y đồng âm. Mô hình đầu từ chối chữ qui bởi vì nó chấp nhận chữ quy (do quy = q-uy là đúng) và vì ui (uj) và uy không đồng âm (nên qui = q-ui là sai). Một lần nữa, mô hình sau đã chứng tỏ là tinh vi hơn, nghĩa là phản ánh tiếng Việt và chữ Việt chính xác hơn (3). Mặc dù, như đã phân tích [#35], phức tạp hơn và mình đã quyết định không dùng nó sau khi cân nhắc lợi ích từ tính chính xác với chi phí cho tính phức tạp ấy.

    Không lý sự dông dài nữa. Thêm 1 chữ được chấp nhận là bớt 1 chữ bị từ chối. Mã hoá được thêm 1 chữ là giảm bớt được 1 điều bất ngờ khó chịu cho người dùng. Sau đây là lựa chọn của mình.

    Code:
    Chữ     Mã
    ======= ========
    qui     q-i
    Nói cách khác, chữ qi phải nhường chỗ cho qui. Nếu gọi tên đúng, mã q phải được gọi là mã q/qu, hoặc nếu khôngi phải được gọi là mã i/ui.

    Các chữ quịt, quíu,... cũng được mã hoá một cách tương tự.

    Chi tiết hơn, trong mã B, C*, C, D, V, có mã q (luôn biểu thị chữ q) và 10 mã có dạng ix được mở rộng thành ix/uix, để mã hóa cả chữ quing, quic (nhưng không mã hóa chữ quia và các chữ dạng quiêu; chả có ai viết quiên, chỉ có quyên.) Thuật toán giải mã C -> B [#23] được bổ sung thêm 1 quy tắc: mã ix/uix nói chung được hiểu là ix; chỉ hiểu là uix nếu mã phụ âm đầu là q. Sự cập nhật này chỉ làm phát sinh thêm 9 ký tự cho mã B (là uix, x không trống) và tương ứng, thêm 9 ký tự cho mã A2 (là ix, x không trống). Mã A2 có thể điều chỉnh để không vượt ngưỡng 128 ký tự: 108 ký tự ban đầu [#24], cộng với 4 ký tự ở [#50 ghi chú (1)] và 9 ký tự mới này. Nên việc giải mã vẫn giữ được tính hữu hiệu trong "ngân sách" eo hẹp của bộ nhớ ROM.

    Dù không cảm thấy loại bỏ chữ qi, qịt, qíu,... là tổn thất gì lớn lao cho tiếng Việt, mình đã phải mất 12 năm đắn đo để quyết định lựa chọn này.

    Nó vi phạm nguyên tắc "trọng âm khinh tự" mà tinh thần là mỗi mã một âm, mỗi âm một mã. Phụ âm đầu q và cụm âm đầu qu (qw) không đồng âm. Âm vần iui (wi) không đồng âm. Dùng mã q để biểu thị phụ âm qw, hay dùng mã i để biểu thị vần wi là vô lối. Nếu cứ khư khư ôm chặt nguyên tắc này, thì chữ qui phải mã hoá bằng c-uy hoặc k-uy. Nghĩa là mã uy phải biểu thị uy/ui và đồng thờic phải biểu thị c/q hoặc mã k phải biểu thị k/q.

    Song, c-uyk-uy là những phương án không an toàn. Đối với người Việt, những chữ cuy, kuy trông rất thân thuộc, rất dễ phát âm nên rất có thể ai đó đã/sẽ thực sự dùng đến chúng. Ấn Độ đã từng có thành phố Calcutta, cho nên văn chương, báo chí Việt rất có thể cũng đã từng có Can-cuýt-ta. Và cứ xem những típ (mẫu) người đã bị biến thành tuýp (ống) người tự bao giờ, có thể dự đoán rất sớm thôi, "bí kíp" cũng sẽ trở thành "bí kuýp" (4).

    Mình đã xem xét phương án mã hóa chữ qui bằng w-uy. Dẹp nguyên tắc sang bên, phương án này thoạt nhìn rất an toàn: vì chữ uy được phát âm là wy, nên chữ wuy chắc hẳn là không tồn tại trong tiếng Việt. Không may, chữ w, mà người Anh gọi là đúp u còn người Pháp gọi là v đúp, không chỉ có 1, mà những 2 cách đọc (phát âm): đọc như u và đọc như v. Chữ kiwi, chẳng hạn, có thể đọc là ki-uy hoặc ki-vi (5).

    Từ Wien, thủ đô nước Áo, đọc là Viên; và từ Warszawa, thủ đô Ba Lan, đọc là Vác-sa-va. Một cách đọc trong tiếng nước ngoài, nếu chưa du nhập thì sớm muộn gì cũng sẽ du nhập vào tiếng Việt thôi. Như chữ c chẳng hạn, xưa chỉ có 1 cách đọc là c nhưng nay đã có thêm 1 cách đọc mới là x: các từ "xăng-ti-mét", "xen-ti-mét" của một thời, ngày nay đã trở thành "cen-ti-mét" (âm không đổi, chỉ đổi chữ.) Chữ wuy rất có thể đọc là vuy và hễ đã đọc được thì có thể tồn tại được (6). Vậy, phương án w-uy thật ra cũng chẳng an toàn (7).

    Mình chỉ quyết định sau khi thấy rõ rằng (i) có thể giải mã C* thành mã A2 (hay A, hay trực tiếp hơn, Unicode) thông qua mã B, (ii) tính chất này vẫn được duy trì nếu thay đổi mã, cho phép chữ qui mã hoá bằng q-i, và (iii) tính chất này không thể duy trì nếu mã hoá chữ qui bằng mã âm vần uy theo sau bất cứ mã phụ âm đầu nào khác q (, như c-uy, k-uy, chẳng hạn.)

    Ở đây, "giải mã C* thành A2, A,... thông qua B" ngụ ý có thể tính được phụ âm đầu mà không mất thêm một phép tính nào. Nhắc lại [#26, #28], mỗi mã có tính "nước đôi" như c/q, q/qu, uy/ui hay i/ui đòi hỏi 01 phép cộng, tức là 01 xung nhịp, để tính được hình thái đúng giữa hai hình thái khả dĩ. Khử được xung nhịp thừa này là then chốt cho tính hữu hiệu của việc giải mã [tiền tố hay toàn phần], vốn chủ yếu dùng cho việc so sánh thứ tự các chữ Việt nói riêng và các xâu nói chung, một phép toán cơ bản để tìm kiếm dữ liệu trong các hệ thống thông tin.






    ________________________
    (1) Hơi tiếc là mình đã không nghĩ ra ngay một từ rất phổ thông để làm ví dụ. Đó là quíu quít (vội vàng, hấp tẩp, rối rít, quýnh quáng).

    (2) Có thể mình chủ quan. Nhận định của mình trái ngược với Từ điển tiếng Việt (Hoàng Phê). Trong từ điển, quỵt được giải nghĩa, còn quịt trỏ đến quỵt. Nghĩa là theo quan điểm chính thống, quỵt mới là cách viết chính, thông dụng hơn.

    (3) Các nhà Việt ngữ sẽ không cười hay cáu khi mình nghiễm nhiên bê "nguyên xi" mô hình âm tiết từ ngữ âm áp dụng sang chính tả. Sự bất tương đồng giữa âm tiết ngữ âm và âm tiết chính tả là cội nguồn của một chủ đề tranh luận giữa các nhà tâm lý trên nhiều thứ tiếng từ phương Tây sang phương Đông: con người đọc, viết bằng tư duy âm thanh (tiếng nói) hay tư duy hình ảnh (chữ viết)? May thay, tiếng Việt có cấu tạo từ giống như tiếng Hán (mỗi chữ là một hình vị) và lại có chữ viết là chữ La-tinh (mỗi chữ cái là một âm vị), một sự kết hợp hay, đẹp đến hoàn hảo, nên có lẽ không có sự bất tương đồng và do đó, bất đồng nào.

    (4) Điều mình nói, thật ra không phải là dự báo mà là hiện thực. (Ai không tin, hãy thử search kuýp trên Google.) Hiện thực, bất chấp mọi bộ gõ đều không cho phép viết chữ này. Dễ đoán ra, nếu cho phép thì điều gì sẽ đến.

    (5) Ngay cả cùng một thứ tiếng, cùng một từ, cũng đã phát âm có lúc thế này, có khi thế nọ. Trong tiếng Nga, từ (quý vị) có khi nói là vy và có khi khác là uy.

    (6) Âm vuy không phải là một âm thuần Việt. Nhắc lại [#32], phụ âm v, cũng như ph và nhiều phụ âm khác, không dẫn trước âm đệm w; nhưng quy luật này có nhiều ngoại lệ, như [khăn] voan và [thùng] phuy, vốn du nhập từ tiếng Pháp.

    (7) Vả lại, nó làm liên tưởng đến một đề xuất cải cách chữ quốc ngữ, trong đó chữ w được gán một giá trị âm vị mới toanh, chẳng phải u, cũng chẳng phải v. Khi xem đề xuất ấy, mình đã bật cười.
    Đã được chỉnh sửa lần cuối bởi Ada : Hôm qua lúc 09:47 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  8. #58
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Nhân dịp điều chỉnh mã, mình xếp đặt lại bảng mã âm vần (mã C*). Vẫn đi theo hướng khởi xướng từ bài #30, các âm vần gần nhau được gán mã gần nhau. Trọng tâm điều chỉnh lần này là sai biệt có/không âm đệm w và sai biệt giữa nguyên âm đôi với nguyên âm đơn cấu thành. (Cụ thể, 2 nguyên âm u, ô gần /ua, 2 nguyên âm ư, ơ gần ươ/ưa và 2 nguyên âm i, ê gần /ia.) Ví dụ về 2 âm vần gần nhau là cặp a-oa chỉ sai khác nhau âm đệm w, cặp ơi-uơi cũng thế, cặp ơi-ươi chỉ sai khác nhau nguyên âm ư và cặp ưng-ương chỉ sai khác nhau nguyên âm ơ. Ngoài ra, ong-oong gần nhau và ông-ôông cũng thế.

    Bảng mã đã được xếp đặt để trừ vài ngoại lệ nhỏ, 2 mã của 2 âm vần gần nhau chỉ sai khác nhau 1 bit.



    Bảng 3a (phiên bản 2021 Sep). 192 mã âm vần của mã C*.
    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0  au    uâu   uyu   ư     ưu    âu    u     o     oau   oeo   iu    eo  
                                                        uau   ueo   uiu       
                                                                              
    _1  ay    uây   uy    ưa    ưi    ây    ui    oi    oay   oe    i     e   
                                                        uay   ue    ui        
                                                                              
    _2  ăm    oong  uym   --    ưm    âm    um    om    oăm   oem   im    em  
                                                        uăm   uem   uim       
                                                                              
    _3  ăp    ooc   uyp   --    ưp    âp    up    op    oăp   oep   ip    ep  
                                                        uăp   uep   uip       
                                                                              
    _4  ăn    uân   uyn   uưn   ưn    ân    un    on    oăn   oen   in    en  
                                                        uăn   uen   uin       
                                                                              
    _5  ăt    uât   uyt   uưt   ưt    ât    ut    ot    oăt   oet   it    et  
                                                        uăt   uet   uit       
                                                                              
    _6  ăng   uâng  uynh  uưng  ưng   âng   ung   ong   oăng  oeng  inh   eng 
                                                        uăng  ueng  uinh      
                                                                              
    _7  ăc    uâc   uych  uưc   ưc    âc    uc    oc    oăc   oec   ich   ec  
                                                        uăc   uec   uich      
                                                                              
    _8  ao    uơ    y     uêu   ươu   ơ     ua    ô     oao   a     iêu   êu  
                                                        uao         yêu       
                                                                              
    _9  ai    uơi   uya   uê    ươi   ơi    uôi   ôi    oai   oa    ia    ê   
                                                        uai   ua              
                                                                              
    _A  am    ôông  anh   uêng  ươm   ơm    uôm   ôm    oam   oanh  iêm   êm  
                                                        uam   uanh  yêm       
                                                                              
    _B  ap    ôôc   ach   uêc   ươp   ơp    uôp   ôp    oap   oach  iêp   êp  
                                                        uap   uach  yêp       
                                                                              
    _C  an    uơn   uyên  uên   ươn   ơn    uôn   ôn    oan   êng   iên   ên  
                                                        uan         yên       
                                                                              
    _D  at    uơt   uyêt  uêt   ươt   ơt    uôt   ôt    oat   êc    iêt   êt  
                                                        uat         yêt       
                                                                              
    _E  ang   uơng  uyêng uênh  ương  ơng   uông  ông   oang  ing   iêng  ênh 
                                                        uang  uing  yêng      
                                                                              
    _F  ac    uơc   uyêc  uêch  ươc   ơc    uôc   ôc    oac   ic    iêc   êch 
                                                        uac   uic   yêc


    Với tính chất đó, nỗ lực xếp đặt bảng mã của mình đã bắt đầu sinh lợi ích thực tiễn. Nó cho phép cài đặt thuật toán giải mã bằng phần cứng. Trong đó, phép tính phức tạp nhất, phép chuyển vị ma trận (C -> C*) có thể cài đặt bằng 1 vi mạch tính được hàm số

    Code:
    x     0   1   2   3   4   5   6   7   8   9  10  11
    ===================================================
    f(x)  0   3   6   9   1   4   7  10   2   5   8  11
    Đã được chỉnh sửa lần cuối bởi Ada : 14-09-2021 lúc 09:21 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  9. #59
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    706

    Tuy nhiên, tính khả thi của mã B++, hơn là B+ hay B, mới là nhân tố quyết định. Bởi vì trong 3 mã này, B++ có nhiều ký tự nhất và nó, cũng như B+, mất tính ưu việt so với mã B khi số ký tự vượt ngưỡng 256. Phiên bản cuối cùng của bảng mã C* chưa thể xác định khi chưa giải đáp được câu hỏi dựng được hay không một phiên bản hiệu quả của mã B++ và trong phiên bản ấy, chữ q được mã hóa bằng gì (q, qu, hay là q/qu).

    Nhắc lại [#24], hai chữ giếnggiường được biểu diễn lần lượt bằng gi-iếnggi-ường trong mã V và cũng thế khi giải lần lượt sang mã D, C và C*. Khi giải sang mã B, chúng trở thành g-iếnggi-ường. Điều này không phải là trở ngại (cho bài toán so sánh 2 chữ Việt theo thứ tự từ điển) với mã A2 bởi vì iếng sẽ được tiếp tục giải thành i-ếng. Nhưng điều này là trở ngại đối với mã A3 (A3') và A4 (A4'), vốn chỉ dành cho mã âm vần 1 ký tự và, trong thí dụ này, ký tự ấy là êng. Vậy, trong việc giải mã thành A3 (A3') và A4 (A4'), mã B không dùng được và phải bị thay thế, lần lượt, bằng mã B+ và B++. Mã gi-iếng trong C* trở thành gi-ếng trong B+ và B++ rồi g-i-ếng trong A3 (A3') và A4 (A4'), để so sánh được với g-i-ường trong cùng một mã.

    Mã B++ ban đầu (revision 2018) [#28] có 250 ký tự, tháng 3/2021 đã bỏ bớt 6 ký tự (uêm, uêp, uâm, uâp, uơm, uơp) và thêm 4 ký tự (uưn, uưt, uưng, uưc), nay lại thêm 9 ký tự (uiu, uim, uip, uin, uit, uinh, uich, uing, uic), nghĩa là đã có 250 - 6 + 4 + 9 = 257 ký tự, đã vượt ngưỡng 256 ký tự.

    Một giải pháp khả dĩ là bỏ các chữ quing, quic ra khỏi tiếng Việt và, nhờ thế, bỏ 2 ký tự uing, uic. Nhìn vào bảng mã B++ hiện hữu [#28] vốn có cỡ 16 * 16, dễ thấy rằng với giới hạn đó, mọi âm vần của mã B++ [mới] vẫn lọt gọn vào bảng, nghĩa là mã B++ [mới] thực sự chỉ chiếm 256 byte cho các âm vần.

    Nhưng hôm nay, mình phác họa một giải pháp khác, không bỏ đi chữ nào cả. Cần nói ngay rằng tuy chỉ giải quyết 1 vấn đề nhỏ, là 1 byte vượt định mức, nhưng nó đã đòi hỏi thay đổi lớn, có tính căn bản, trong bảng mã và thuật toán giải mã. Thay đổi ấy là mã q nói chung được hiểu là qu. Thí dụ, mã q-inh trở thành qu-inh và mã q-uynh trở thành qu-ynh khi dịch từ C* sang B++.

    Bài vừa rồi, mình đã giới thiệu một bảng mã âm vần cho mã C* mà với vài ngoại lệ, hai âm vần gần nhau chỉ sai khác nhau 1 bit.

    Bài này, vẫn ý tưởng ấy, nhưng được phát triển theo một hướng hơi khác. Hai âm vần chỉ được xem là gần nhau nếu sai khác ở chỗ có hay không một âm nhất định, là âm đệm w (tức o/u) (1). (Ví dụ, a-oa/ua gần nhau, ia-uya gần nhau, yên-uyên gần nhau, ây-uây gần nhau, ôi-uôi gần nhau, ơng-uơng gần nhau, nhưng ua ()-uôi, ung-uông, ên-iên, ưa (ươ) - ương, ơng-ương, ưng-ương hay oc-ooc thì không.) Cũng như trước, hai mã của âm gần nhau chỉ sai khác nhau 1 bit. Nhưng bao nhiêu bit chỉ là điều thứ yếu. Điều chính yếu là [các] bit ấy nay được chỉ rõ là bit nào, nghĩa là từ giờ [chúng] nó đã có một vị trí nhất định. Và hơn nữa, sự xếp đặt đó là một luật không có ngoại lệ. Nói cách khác, có một hằng số Δ sao cho hai âm vần xwx bất kỳ tự nhiên ghép thành đôi với nhau theo hệ thức x XOR wx = Δ giữa 2 mã số tương ứng.

    Ở đây, mình chọn bit sai biệt [duy nhất] là bit 4, tức bit hàng thấp nhất của chỉ số cột khi xếp các mã số vào ma trận chủ cột 16 hàng, vốn là định dạng quen thuộc của bảng mã ASCII, Unicode, cũng như bảng mã âm vần C*, B, B+, B++ (2). Nói trắng ra, mình chọn Δ = 0x10 (3).

    Nhờ xếp đặt thế, như ta sẽ thấy sau này, mã B++ bớt đi nhiều ký tự có dạng ux. Thí dụ, tuy vẫn cần ký tự oai để giải mã chữ xoài, nhưng để giải mã chữ quai thì không cần ký tự uai. Ký tự ai là đủ.

    Một cách chi tiết, mã C* được dựng, với các tiêu chuẩn (điều kiện ràng buộc) nhất định, như sau. Một số ràng buộc chỉ trở thành hiển nhiên khi đọc đến cách dựng mã B++ ở phần sau của bài này.


    1. Bố trí 2 nhóm âm vần có dạng ixx vào 1 cột chẵn, cùng với âm cùng cặp đôi của chúng (là uyx, uyêx) vào cột [lẻ] kế tiếp. Riêng ingic (do không đủ chỗ) phải bố trí vào một cột chẵn kế cận và (do không có đôi, vì uyng, uyc không tồn tại) theo sau là 1 cột [lẻ] trống. Theo tập quán, mình chọn chỗ cho ing, ic đứng trước i, iu. Cả khối 4 cột liên tiếp này phải là 4-column aligned (, nghĩa là số hiệu của 4 cột này phải là 4k + [0,4), k là số tự nhiên.) Vậy, khối 4 cột này có thể đặt ở một trong 3 vị trí, là 0_, 4_ và 8_. Mình chọn 4_.

    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0                                      iu    uyu   
                                            uiu         
                                                        
    _1                                      i     uy    
                                            ui          
                                                        
    _2                                      im    uym   
                                            uim         
                                                        
    _3                                      ip    uyp   
                                            uip         
                                                        
    _4                                      in    uyn   
                                            uin         
                                                        
    _5                                      it    uyt   
                                            uit         
                                                        
    _6                                      inh   uynh  
                                            uinh        
                                                        
    _7                                      ich   uych  
                                            uich        
                                                        
    _8                                                  
                                                        
                                                        
    _9                                      ia    uya   
                                            uia         
                                                        
    _A                                                  
                                                        
                                                        
    _B                                                  
                                                        
                                                        
    _C                                      iên   uyên  
                                            yên         
                                                        
    _D                                      iêt   uyêt  
                                            yêt         
                                                        
    _E                          ing         iêng  uyêng 
                                uing        yêng        
                                                        
    _F                          ic          iêc   uyêc  
                                uic         yêc

    2. Bố trí các âm vần có dạng ex, êx vào một cột chẵn có số hiệu chỉ sai khác 1 bit so với cột ix, x vừa dựng. Riêng êngêc (do không đủ chỗ) phải bố trí vào một cột [chẵn] khác. Bố trí các âm vần cặp đôi của chúng, là oex, x, vào cột [lẻ] kế tiếp. Ở đây, chỉ có 2 vị trí khả dĩ cho cột {eo, êu} là 2_ và A_, mình chọn 2_. Riêng {êng, êc} so với {ing, ic} phải sai khác đúng 1 bit, không kể bit hàng đơn vị (bit 0). Theo tập quán, mình chọn chỗ cho êng, êc vào cùng cột và liền kế với ing, ic.

    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0              eo    oeo               iu    uyu   
                          ueo               uiu         
                                                        
    _1              e     oe                i     uy    
                          ue                ui          
                                                        
    _2              em    oem               im    uym   
                          uem               uim         
                                                        
    _3              ep    oep               ip    uyp   
                          uep               uip         
                                                        
    _4              en    oen               in    uyn   
                          uen               uin         
                                                        
    _5              et    oet               it    uyt   
                          uet               uit         
                                                        
    _6              eng   oeng              inh   uynh  
                          ueng              uinh        
                                                        
    _7              ec    oec               ich   uych  
                          uec               uich        
                                                        
    _8              êu    uêu                           
                                                        
                                                        
    _9              ê     uê                ia    uya   
                                            uia         
                                                        
    _A                                                  
                                                        
                                                        
    _B                                                  
                                                        
                                                        
    _C              ên    uên   êng   uêng  iên   uyên  
                                            yên         
                                                        
    _D              êt    uêt   êc    uêc   iêt   uyêt  
                                            yêt         
                                                        
    _E              ênh   uênh  ing         iêng  uyêng 
                                uing        yêng        
                                                        
    _F              êch   uêch  ic          iêc   uyêc  
                                uic         yêc

    3. Bố trí từng cặp đôi (x, wx) còn lại vào cùng hàng và 2 cột chẵn, lẻ liên tiếp. Vẫn như 2 bước trên, tuy không bắt buộc, nhưng để bảng mã dễ coi, mình chọn đặt x vào cột chẵn.

    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0  ao    oao   eo    oeo               iu    uyu   ơ     uơ                
              uao         ueo               uiu                                 
                                                                                
    _1  ai    oai   e     oe                i     uy    ơi    uơi               
              uai         ue                ui                                  
                                                                                
    _2  am    oam   em    oem               im    uym                           
              uam         uem               uim                                 
                                                                                
    _3  ap    oap   ep    oep               ip    uyp                           
              uap         uep               uip                                 
                                                                                
    _4  an    oan   en    oen   ưn    uưn   in    uyn   ơn    uơn               
              uan         uen               uin                                 
                                                                                
    _5  at    oat   et    oet   ưt    uưt   it    uyt   ơt    uơt               
              uat         uet               uit                                 
                                                                                
    _6  ang   oang  eng   oeng  ưng   uưng  inh   uynh  ơng   uơng              
              uang        ueng              uinh                                
                                                                                
    _7  ac    oac   ec    oec   ưc    uưc   ich   uych  ơc    uơc               
              uac         uec               uich                                
                                                                                
    _8  au    oau   êu    uêu                           âu    uâu   ô     ua      
              uau                                                                 
                                                                                  
    _9  ay    oay   ê     uê    a     oa    ia    uya   ây    uây   ôi    uôi     
              uay                     ua    uia                                   
                                                                                  
    _A  ăm    oăm               anh   oanh                          ôm    uôm     
              uăm                     uanh                                        
                                                                                  
    _B  ăp    oăp               ach   oach                          ôp    uôp     
              uăp                     uach                                        
                                                                                  
    _C  ăn    oăn   ên    uên   êng   uêng  iên   uyên  ân    uân   ôn    uôn     
              uăn                           yên                                   
                                                                                  
    _D  ăt    oăt   êt    uêt   êc    uêc   iêt   uyêt  ât    uât   ôt    uôt     
              uăt                           yêt                                   
                                                                                  
    _E  ăng   oăng  ênh   uênh  ing         iêng  uyêng âng   uâng  ông   uông    
              uăng              uing        yêng                                  
                                                                                  
    _F  ăc    oăc   êch   uêch  ic          iêc   uyêc  âc    uâc   ôc    uôc     
              uăc               uic         yêc

    4. Bố trí nốt các âm vần còn lại vào các ô còn trống một cách tùy ý. Vẫn như 3 bước trên, và cũng như cách dựng mã C* ở các phiên bản trước đây, tuy không bắt buộc, nhưng để cho bảng mã dễ coi, mình cố gắng xếp các âm vần cùng chủ âm vào cùng 1 cột và cùng âm cuối vào cùng 1 hàng.

    Bảng 3a (phiên bản 2021 Sep bis.) 192 âm vần của mã C*.
    Code:
        0_    1_    2_    3_    4_    5_    6_    7_    8_    9_    A_    B_  
    ==========================================================================
    _0  ao    oao   eo    oeo   ưu    ươu   iu    uyu   ơ     uơ    o     u   
              uao         ueo               uiu                               
                                                                              
    _1  ai    oai   e     oe    ưi    ươi   i     uy    ơi    uơi   oi    ui  
              uai         ue                ui                                
                                                                              
    _2  am    oam   em    oem   ưm    ươm   im    uym   ơm    ôông  om    um  
              uam         uem               uim                               
                                                                              
    _3  ap    oap   ep    oep   ưp    ươp   ip    uyp   ơp    ôôc   op    up  
              uap         uep               uip                               
                                                                              
    _4  an    oan   en    oen   ưn    uưn   in    uyn   ơn    uơn   on    un  
              uan         uen               uin                               
                                                                              
    _5  at    oat   et    oet   ưt    uưt   it    uyt   ơt    uơt   ot    ut  
              uat         uet               uit                               
                                                                              
    _6  ang   oang  eng   oeng  ưng   uưng  inh   uynh  ơng   uơng  ong   ung 
              uang        ueng              uinh                              
                                                                              
    _7  ac    oac   ec    oec   ưc    uưc   ich   uych  ơc    uơc   oc    uc  
              uac         uec               uich                              
                                                                              
    _8  au    oau   êu    uêu   ư     ưa    iêu   y     âu    uâu   ô     ua  
              uau                           yêu                               
                                                                              
    _9  ay    oay   ê     uê    a     oa    ia    uya   ây    uây   ôi    uôi 
              uay                     ua    uia                               
                                                                              
    _A  ăm    oăm   êm    --    anh   oanh  iêm   ươn   âm    oong  ôm    uôm 
              uăm                     uanh  yêm                               
                                                                              
    _B  ăp    oăp   êp    --    ach   oach  iêp   ươt   âp    ooc   ôp    uôp 
              uăp                     uach  yêp                               
                                                                              
    _C  ăn    oăn   ên    uên   êng   uêng  iên   uyên  ân    uân   ôn    uôn 
              uăn                           yên                               
                                                                              
    _D  ăt    oăt   êt    uêt   êc    uêc   iêt   uyêt  ât    uât   ôt    uôt 
              uăt                           yêt                               
                                                                              
    _E  ăng   oăng  ênh   uênh  ing   ương  iêng  uyêng âng   uâng  ông   uông
              uăng              uing        yêng                              
                                                                              
    _F  ăc    oăc   êch   uêch  ic    ươc   iêc   uyêc  âc    uâc   ôc    uôc 
              uăc               uic         yêc


    Bảng mã B++ được dựng từ bảng mã C* như sau.

    0. Mặc định, B++ thừa kế các mã số của C*:
    • x -> x. Thí dụ, b-a -> b-a.

    1. Diễn dịch lại bảng mã C*, xoá u ở đầu âm vần có âm đệm w. Để giải một mã số có tính "nước đôi", ưu tiên o hơn u và ưu tiên hơn . Phép dịch mã thứ nhất có thể thực hiện bằng cách lật bit 4 (XOR 0x10) và đó là một tính chất sẵn có của bảng mã B++, thừa kế từ C*, do cách dựng. Nói cách khác:
    • ux -> xox/ux -> x. Thí dụ, q-uê -> qu-ê, q-uốc -> qu-ốc, q-oai/uai -> qu-ai.
    • ox/ux -> ox. Thí dụ, x-oay/uay -> x-oay.
    • x/x -> x. Thí dụ, đ-iên/yên -> đ-iên.

    2. Mở rộng bảng mã C* thêm 4 cột để xoá u khỏi uixuyx, xoá i khỏi ix và chọn giá trị x từ x/x. Tương tự trên, mỗi phép dịch mã có thể thực hiện được bằng cách lật các bit nhất định nào đó, nghĩa là XOR với một hằng số nhất định nào đó. Nói cách khác:
    • ix/uix -> ixuyx -> yx. (Chú ý, uyx bao hàm cả uya, uyêu.) Thí dụ, q-it/uit -> qu-it, q-uynh -> qu-ynhq-uyên -> qu-yên.
    • ix/uix -> xx/x -> êx. Thí dụ, gi-in -> gi-ngi-iêu/yêu -> gi-êu.
    • x/x -> x. Thí dụ, ---iên/yên -> ---yên.






    Bảng 3g (phiên bản 2021 Sep bis.) Bảng mã âm vần của mã B++.
    Code:
         0_   1_   2_   3_   4_   5_   6_   7_    8_   9_   A_   B_   C_   D_   E_   F_  
    =====================================================================================
    _0   ao   oao  eo   oeo  ưu   ươu  iu   uyu   ơ    uơ   o    u    yêu       iu   yu  
    _1   ai   oai  e    oe   ưi   ươi  i    uy    ơi   uơi  oi   ui   ia   --   i    y   
    _2   am   oam  em   oem  ưm   ươm  im   uym   ơm   ôông om   um   yêm  m    im   ym  
    _3   ap   oap  ep   oep  ưp   ươp  ip   uyp   ơp   ôôc  op   up   yêp  p    ip   yp  
    _4   an   oan  en   oen  ưn   uưng in   uyn   ơn   uơn  on   un   yên  n    in   yn  
    _5   at   oat  et   oet  ưt   uưt  it   uyt   ơt   uơt  ot   ut   yêt  t    it   yt  
    _6   ang  oang eng  oeng ưng  uưng inh  uynh  ơng  uơng ơng  ung  yêng nh   inh  ynh 
    _7   ac   oac  ec   oec  ưc   uưc  ich  uych  ơc   uơc  ơc   uc   yêc  ch   ich  ych 
    _8   au   oau  êu   uêu  ư    ưa   iêu  y     âu   uâu  ô    ua        êu            
    _9   ay   oay  ê    uê   a    oa   ia   uya   ây   uây  ôi   uôi                 ya  
    _A   ăm   oăm  êm   --   anh  oanh iêm  ươn   âm   oong ôm   uôm                     
    _B   ăp   oăp  êp   --   ach  oach iêp  ươt   âp   ooc  ôp   uôp       êp            
    _C   ăn   oăn  ên   uên  êng  uêng iên  uyên  ân   uân  ôn   uôn                 yên 
    _D   ăt   oăt  êt   uêt  êc   uêc  iêt  uyêt  ât   uât  ôt   uôt       êt        yêt 
    _E   ăng  oăng ênh  uêng ing  ương iêng uyêng âng  uâng ông  uông ing  êng  ng   yêng
    _F   ăc   oăc  êch  uêc  ic   ươc  iêc  uyêc  âc   uâc  ôc   uôc  ic   êc   c    yêc

    Mỗi mục trong danh sách trên là 1 phép dịch mã đơn nhất, không thể chia nhỏ được. Thí dụ, ix/uix -> ixuyx -> yx là 1 phép dịch mã đơn nhất, thực hiện bằng 1 phép tính số học - luận lý duy nhất (cụ thể, phép XOR 0x80.) Lý do là hiệu năng: ta chỉ muốn tiêu dùng 1 phép tính để xét nghiệm mã âm vần và trong "ngân sách" ấy, chỉ nhận biết được nó có dạng ix/uix hoặc uyx hay không, chứ không biết được nó có dạng nào (nếu có) trong hai dạng ấy. Với một cái cân đòn và chỉ 1 lần cân, ta không muốn biết chiếc nhẫn nào nặng nhất trong 3 chiếc.

    Các hằng số "nhất định nào đó" trong các phép XOR nói trên có thể suy từ bảng mã đã dựng [Bảng 3g]. Hằng số 0x80 trong thí dụ vừa rồi, chẳng hạn, có thể tính bằng uyu XOR yu = 0x70 XOR 0xF0.

    Nhắc lại "ngân sách". Thuật toán giải mã [#26] từ C* đến A2 (A3', A4') là một lệnh switch với 32 case tương ứng với 32 giá trị khả dĩ của mã phụ âm đầu. Mỗi case chỉ có nhiều nhất 1 phép tính xét nghiệm mã âm vần và nhiều nhất 1 phép tính biến đổi mã âm vần hoặc mã phụ âm đầu, theo sau là 2 phép tra bảng (đọc mảng), bảng mã phụ âm đầu và bảng mã âm vần. "Ngân sách" này là tiêu chuẩn tiên quyết cho việc dựng mã, trước hết là mã B hay biến thể của nó (B+, B++).

    Tốc độ của B++ vẫn tương tự như các phiên bản trước. Nếu bỏ qua êng, êc, ing/uing, ic/uic (nói riêng, không chấp nhận chữ lô-gíc), chỉ mất 01 phép tính là xác định được một mã âm vần có dạng nào để phân giải, chẳng hạn, mã phụ âm đầu g/gh, ng/ngh hay gi/g (4). Và tính chất này vẫn được duy trì với cách dịch mã phụ âm đầu q, mới được đưa ra ở phiên bản này. Cũng chỉ mất 01 phép tính để tính được giá trị đúng của x cho mọi mã có dạng q-x nếu bỏ qua âm vần trống (nói riêng, không chấp nhận chữ q'ran, qu'ran).

    Ở revision này, một lần nữa chúng ta chứng kiến phép dịch mã như một phép biến đổi không chỉ có mục đích kỹ thuật, đơn thuần hình thức giữa 2 văn phạm, mà có cơ sở khoa học, có nội dung hẳn hoi, giữa 2 mô hình âm vị học. Lần đầu tiên, ở revision 2018, mô hình 8 thanh được biến thành mô hình 6 thanh qua phép giải mã D -> C. Còn lần này, ở đây, với phép giải mã C* -> B++, mô hình truyền thống "quờ-ai-quai" [2] thay thế mô hình chính thống "qờ-uai-quai". Dẫu chỉ áp dụng một cách khiêm tốn lên các chữ dẫn đầu bằng q (để "đỡ đòn", "chữa cháy" mô hình chính thống, cứu nó thoát một bàn thua trông thấy ngay trên sân nhà là định dạng mã của nó), mô hình truyền thống đã xếp đặt lại hầu hết bảng mã.

    Bảng mã C* mới, tuy trông hơi "xấu" (lộn xộn) hơn phiên bản cũ, nhưng thật ra là có quy tắc, có trật tự, dễ coi hơn nhiều. Nó vẫn nhằm tiêu chí mỗi bit đều phải có một nội hàm, lý tưởng xuyên suốt các nguyên tắc thiết kế mã [#31-#37]. Lý tưởng tiên phong bởi những người đặt ra thi pháp cổ truyền 14 thế kỷ trước, những nhà khai sáng đích thực của âm vị học VN. Nó đã ghi dấu thành công cho việc mình làm từ 2018 đến nay.






    _________________
    (1) Kể cả nguyên âm u trong nguyên âm đôi vốn dĩ, theo mô hình [giản lược] dùng xuyên suốt chủ đề này, cũng được coi là âm đệm w.

    (2) Ngược lại, bảng mã âm vần của mã C, D được trình bày ở dạng ma trận chủ hàng 16 cột.

    (3) Lựa chọn cụ thể này chỉ để cho bảng mã dễ coi, nghĩa là dễ kiểm tra, dễ tìm lỗi thiết kế bảng mã và lỗi thi công viết code [phần mềm/cứng], chứ không ảnh hưởng tính đúng/sai, số xung nhịp, số byte, số gate,... tiêu dùng trong thuật toán giải mã.

    (4) Để 01 phép tính có thể xét nghiệm một mã âm vần có thuộc về một tập mã số nào đó hay không, điều kiện cần là tập ấy có 2^k mã số (k là một số tự nhiên) và điều kiện đủ là tập ấy vét cạn 2^k giá trị khả dĩ của một tập con k bit của mã, cố định 8 - k bit còn lại. Tập {ing, ic} có giá trị [hex] 4E4F, tức [nhị phân] 0100111_, nghĩa là vét cạn mọi giá trị của bit 0. Tập {êng, êc, ing, ic} có giá trị [hex] 4C, 4D, 4E4F, tức [nhị phân] 010011__, vét cạn 2 bit {0, 1}. Không kể ing, ic, 16 mã số ix có giá trị [hex] 6_, tức [nhị phân] 0110____, vét cạn 4 bit {0, 1, 2, 3}. Không kể êng, êc, ing, ic, 32 mã số ex, êx, ix có giá trị [hex] 2_ hoặc 6_, tức [nhị phân] 0_10____, vét cạn 5 bit {0, 1, 2, 3, 6}. Mỗi xét nghiệm cho 4 tập kể trên đều cần đúng 01 phép tính.
    Đã được chỉnh sửa lần cuối bởi Ada : Hôm nay lúc 05:01 PM. Lý do: Cập nhật bảng mã
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Trang 6 trên tổng số 6 Đầu tiênĐầu tiên ... 456

Các đề tài tương tự

  1. Dịch vụ gửi hàng hóa đi Australia, gửi hàng hóa đi France, gửi hàng hóa đi Germany, gửi hàng hóa đi Janpan giá rẻ.
    Gửi bởi sales5ttico trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 30-07-2014, 02:51 PM
  2. Tính thành tiền trong bảng hóa đơn từ bảng chi tiết hóa đơn
    Gửi bởi tuanvi261 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 2
    Bài viết cuối: 06-05-2013, 08:32 PM
  3. Hóa chất làm giảm điện trở đất, bột than tiếp địa, cọc tiếp địa, cọc thép mạ đồng, kim thu sét ese
    Gửi bởi chong set trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 18-04-2012, 12:33 PM
  4. Gọi hàm con.. tiến hóa khôn lường
    Gửi bởi luckyfor trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 06-10-2011, 03:58 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn