home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / std / internat / 1072 < prev    next >
Encoding:
Text File  |  1993-01-06  |  7.0 KB  |  132 lines

  1. Newsgroups: comp.std.internat
  2. Path: sparky!uunet!elroy.jpl.nasa.gov!ames!agate!dog.ee.lbl.gov!hellgate.utah.edu!fcom.cc.utah.edu!cs.weber.edu!terry
  3. From: terry@cs.weber.edu (A Wizard of Earth C)
  4. Subject: Re: Dumb Americans (was INTERNATIONALIZATION: JAPAN, FAR EAST)
  5. Message-ID: <1993Jan7.033153.12133@fcom.cc.utah.edu>
  6. Keywords: Han Kanji Katakana Hirugana ISO10646 Unicode Codepages
  7. Sender: news@fcom.cc.utah.edu
  8. Organization: Weber State University  (Ogden, UT)
  9. References: <2615@titccy.cc.titech.ac.jp> <1993Jan5.090747.29232@fcom.cc.utah.edu> <id.EAHW.92A@ferranti.com>
  10. Date: Thu, 7 Jan 93 03:31:53 GMT
  11. Lines: 119
  12.  
  13. In article <id.EAHW.92A@ferranti.com> peter@ferranti.com (peter da silva) writes:
  14. >In article <1993Jan5.090747.29232@fcom.cc.utah.edu> terry@cs.weber.edu (A Wizard of Earth C) writes:
  15. >> >>or
  16. >> >>"pollutes" the files (all files except those stored in US-ASCII have file
  17. >> >>sizes which no longer reflect true character counts on the file).
  18. >
  19. >> Destruction of this information is basically unacceptable for Western users
  20. >
  21. >Gee, since this information is already non-existant for anything but computer
  22. >source (computer programs and other data intended to be read by a compiler
  23. >or other plain text parser), and even there information is hidden in white
  24. >space (is that a tab or 8 spaces?), I find it hard to understand this
  25. >statement.
  26.  
  27. Consider a newline terminated text database containing fixed length lines,
  28. or consider a database consisting of variant text records in fixed fields.
  29. In either case, the amount of data per field is now variant on Runic encoding.
  30. For instance, if we accept the Plan-9 soloution, an application used in
  31. both England and the US will vary as to how much data is representable per
  32. fixed field based on whether or not that data contains the English "#"
  33. character.  This gets worse the further you get from base ASCII coding.
  34.  
  35. Now consider a database, one of the primary methods of implementation being
  36. memory mapped files.  Thus the storage and the in core representation must
  37. be the same.
  38.  
  39. Now consider the mapping, which, by definition, must be done in the kernel,
  40. for NFS mounts to and from our internationalized machine and both other
  41. internationalized machines and currently installed machines.  Of course
  42. Ohta would term this mapping a political (re interoperability) or economic
  43. (re updating all machines) issue.  I do not believe this to be the case.
  44. Remember that the primary distinction wil not be made for compact files,
  45. but for non-compact (multilingual and therefore 16 bit or larger characters)
  46. file contents, as well as for directory information, which, by definition,
  47. must be legible to all users (without proposing a localized per user or
  48. per language file system view -- both Ohta and Vadim abhor "locale").
  49.  
  50. Further suppose a distributed application with clients for the database
  51. running on old and new hardware.  Only those datum with the same localization
  52. as the (non-updated) client machine's software will be usable remotely.  A
  53. potential example of this is available in OLTP for ticketing and reservation
  54. systems for international airlines.
  55.  
  56. Any COBOL program stores data in this fashion,  Many other programs store
  57. data in this fashion to avoid a direct wire-translation of important values
  58. by character encoding them in the files.  This allows a direct record seek
  59. based on offset.  Many Ada programs also take advantage of this.
  60.  
  61. Consider that Runic encoding is antithetical in terms of single character
  62. changes for fixed record length files by virtue of it's ability to either
  63. change record size (destroying the seek-offset record addressing) or by
  64. changing the amount of data representable in a field (destroying the
  65. ability to use fixed-length fields for input in the front end client).
  66.  
  67. Consider the program that performs a fast record count based on a division
  68. of the number of characters in a file by the *fixed* record size.
  69.  
  70. >> Consider for a moment, if you will, changing the first character of a
  71. >> field in a 1M file.  Not only does this cause the record size ot become
  72. >> variant on the data within it (thus rendering a computed lseek() useless,
  73. >> since the records are no longer fixed size), but it requires that the entire
  74. >> file contents be shifted to accomodate what used to be ther rewrite of a
  75. >> single block.
  76. >
  77. >Files containing fixed sized fields will be unable to contain runic data within
  78. >the fields, or the feilds will have to be padded, just as they are now. The
  79. >occasions you can do this sort of meddling in a plaintext file are pretty
  80. >limited already.
  81.  
  82. Limited in applicability, but, I would argue, wide in use.
  83.  
  84. Padding is unacceptable, both because it destroys the meaning of field width
  85. in the front end and because of the need for memory-mapping of files.  A
  86. database program is likely to require the ability to either partially or
  87. fully control it's own pages.  Consider a two-stage commit database with
  88. a need to compute transitive closure on potentially intersecting record
  89. range locks (ie: locks spanning more than one record) during the acquistion
  90. of a lock in a potential deadlock situation (ie: P1 wants locks on a+b and P2
  91. wants locks on b+c and P3 wants locks on c+a [in that locking order]).  This
  92. is a rather common need in any multi-client database (a file server is an
  93. instance of a multi-client database).
  94.  
  95. There are a great many reasons to avoid Runic encoding, not the least of
  96. which is that storage requirements are diminished to current levels for
  97. all small glyph-set languages (<=256 characters) at the cost of local
  98. attribution.  We must accept partial locale information for the input
  99. mechanisms if nowhere else, and this provides a promiscuous tagging for
  100. us at nearly 0 additional cost.
  101.  
  102. Attributed non-Runic encoding also buys us 2 bytes rather than 2-5 bytes
  103. per glyph for large glyph-set languages (ie: Japanese).
  104.  
  105. Runic encoding has too many significant drawbacks, and the only penalty
  106. on non-Runic encoding is +17% of disk space on an average UNIX system
  107. (20% of the files on an average UNIX system are text files) for 16-bit
  108. encoding, or +35% for 32-bit encoding, or 0% (with a space reduction and
  109. a restoration of meaning to file, field, and record lengths for all
  110. non-7-bit ASCII languages) with the assumption of a "locale" mechanism.
  111.  
  112.  
  113. PS: I notice that you, as well as Vadim, are dragging me from 386BSD
  114. localization (in comp.unix.bsd) into a discussion of multinationalization
  115. (in comp.std.internat).  It was not my intent to be involved in the
  116. now distorted scope of this discussion when I started the news thread
  117. "INTERNATIONALIZATION: JAPAN, FAR EAST" in comp.unix.bsd for discussion
  118. of OS localization issues.  I hope you know what you are letting me in for.
  119. 8-(.
  120.  
  121.                     Terry Lambert
  122.                     terry@icarus.weber.edu
  123.                     terry_lambert@novell.com
  124. ---
  125. Any opinions in this posting are my own and not those of my present
  126. or previous employers.
  127. -- 
  128. -------------------------------------------------------------------------------
  129.                                         "I have an 8 user poetic license" - me
  130.  Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial
  131. -------------------------------------------------------------------------------
  132.