* Aleksandr Skobelev <holych...@mail.ru> | "Most of the work is done" might be more correctly to speak. IMHO ANSI | CL standard is lacking in support for locales/charsets.
ANSI CL is also lacking in support for printing the new Euro notes on ordinary office laser printers, another would-be useful thing that is outside the scope of the standard.
If you have actually tried using locales to achieve localizability and still think they serve a useful purpose beyond marketing rhetoric, I would like to see your code.
| So any non-Latin-1 user [...]
ANSI Common Lisp is not even defined for ISO Latin 1, but for a character set that closely matches ASCII or ISO 646 IRV. However, that is only a minimum requirement -- the implementation is obliged to document what it actually supports. Several Common Lisp implementations support a 16-bit Unicode. Note that there is no standard way to add case information to the supported character set, so if you want to depend on the language support for case conversion, you are SOOL if what you want it is not supported, especially if the char-up/downcase functions are inlined as tests for a-z so you cannot even redefine them. (E.g., this is still a problem in Allegro CL's 8-bit-character version despite excellent support for character sets in the 16-bit-character version.)
| And when I think about some funny features in the language like | YES-OR-NO-P or ~R in FORMAT, I understand that they were designed with | English taken in consideration only.
This is a good thing. If it were designed by the usual "international" tactics, it would lack a lot of useful features because some rinkydink language with a few hundred speakers could not support it, like plurals.
The fact that you react to these things with some hosility is a good sign that Common Lisp would have suffered had it been intended to placate all the sourpusses in the world who envy the United States is position and who loathe the role that English has acquired -- instead of French or German, both or either which "deserve" it much more than English does, if you poll several large segments of the European population.
Fortunately, I can say all these things because I am _not_ American, but happen to come from and live in a rinkydink country with three official languages for less than 5 million people, one of which is a pathetic rural rebellion against national standards set by the cities and which today differ much less than British and American English. Just how hard do you have to lose to think such a stunt is a good idea for the _same_ people? Right! So pardon me while I think "locales" and supporting loser dialects is a Bad Idea.
Erik Naggum wrote: > The fact that you react to these things with some hosility is a good > sign that Common Lisp would have suffered had it been intended to > placate all the sourpusses in the world who envy the United States is > position and who loathe the role that English has acquired -- instead of > French or German, both or either which "deserve" it much more than > English does, if you poll several large segments of the European > population.
> Fortunately, I can say all these things because I am _not_ American, but > happen to come from and live in a rinkydink country with three official > languages for less than 5 million people, one of which is a pathetic > rural rebellion against national standards set by the cities and which > today differ much less than British and American English. Just how hard > do you have to lose to think such a stunt is a good idea for the _same_ > people? Right! So pardon me while I think "locales" and supporting > loser dialects is a Bad Idea.
My English is far from being good, but I finally came to the opinion that I don't see German the language as very important. I read all CS literature in English even if German translations are available because if I want to discuss this topics I will have to do it in English and will have to know the English terms and not the German translations. I even tend to read romans in English because I think it will help me to improve my language skills and because I really like the language. More and more often I catch me that I at least partially think in English or that I only know a term in English but do not have a direct German translation at hand. Compared to German, English seems to be a very "fuzzy" language with many ambiguities that get resolved through context. Some English authors make use of this fact to express multiple things in the same part of sentence depending on how you look at it. German makes those things much more explicit which makes it a rather boring language.
So I think _I_ could certainly live with computer programs that only support English as language...
Erik Naggum <e...@naggum.net> writes: > * Aleksandr Skobelev <holych...@mail.ru> > | "Most of the work is done" might be more correctly to speak. IMHO ANSI > | And when I think about some funny features in the language like > | YES-OR-NO-P or ~R in FORMAT, I understand that they were designed with > | English taken in consideration only.
> This is a good thing. If it were designed by the usual "international" > tactics, it would lack a lot of useful features because some rinkydink > language with a few hundred speakers could not support it, like plurals.
Hmm, I'd hardly call Japanese a rinkydink language.
> The fact that you react to these things with some hosility is a good sign > that Common Lisp would have suffered had it been intended to placate all > the sourpusses in the world who envy the United States is position and > who loathe the role that English has acquired -- instead of French or > German, both or either which "deserve" it much more than English does, if > you poll several large segments of the European population.
> Fortunately, I can say all these things because I am _not_ American, but > happen to come from and live in a rinkydink country with three official > languages for less than 5 million people, one of which is a pathetic > rural rebellion against national standards set by the cities and which > today differ much less than British and American English. Just how hard > do you have to lose to think such a stunt is a good idea for the _same_ > people? Right! So pardon me while I think "locales" and supporting > loser dialects is a Bad Idea.
Certainly the idea of locales can be (and is) taken to a silly extreme. However, there are a few languages that are really important, and being able to deliver applications in them is important. English, Spanish, maybe French, Arabic, Chinese, and Japanese, should all be usable. We should be able to assume that all programmers have at least basic English skills, but the same is not true of users.
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
* Duane Rettig <du...@franz.com> | As for yes-or-no-p et al, it is true that we have not implemented the | LC_MESSAGES category, but it is entirely possible. And I may be wrong, | but my reading of the definition of yes-or-no-p in the spec doesn't | preclude an implementor from basing either the message string or the | actual "yes"/"no" responses on the locale.
Fixing yes-or-no-p in the locale is the wrong place to do it. This is clearly a user-interface function that depends on a particular mode of user interaction with specific programmer and user expectations. Making it more general is a mistake. A more elaborate user interface would need more than just yes-or-no-p and y-or-n-p. _If_ these functions match the user interface needs, they will be used, and then all parties involved expect them to be exactly as they were when they got into the language. If they are not satisfactory for user interaction, some other functions will be written and used in their place. Please do not bother making "localized" versions of these functions.
I work in two languages all the time -- have been since I were a kid, and I consider myself fluent in both. I am constantly deeply annoyed by the incompetence of the fools who think they can translate movies and books, and can only imagine what kind of mistakes are made in translations of languages I cannot read in the original. Not many years ago, fluency in several European languages were common among academics and the lingua franca (!) was Latin _long_ after that language had ceased to be spoken. It is somewhat unfortunate that computer science uses a living language for its lingua franca, in contrast to law and medicine, which are both firmly based in much older languages and cultures, because that makes a lot of people who fail to grasp the function of a common language think it is a natural language and can be replaced by another, particularly those who speak it naturally and are overcome with political correctness and think they should be guilty of the fact that historic accidents favored their language. The common language is, however, _not_ a natural language except by accident, and it cannot be replaced by another natural language without replacing the whole culture with it. Those who think _their_ natural language should be the common language should just get over their egoistic provincialism and learn to deal with reality.
And speaking as a user of Norwegian software, I do not accept some two-bit "translation". If I have to translate the incompetent Norwegian back to what I think the natural English would have been in order to understand what the Norwegian probably means, all parties involved would have been better off with the original. Like the other day, I saw "IP header compression" translated on a cell phone to what best translates back to "reduced headlines". I think translation between English and Norwegian is important enough that I contribute to dictionaries and try to help companies who pay their translators basically nothing to write the local version of text that somebody else paid a large sum of money to get just right in English. Thankfully, however, original-language paperbacks in British and American English are now outselling translated versions, and several major film releases are available in original versions, so there is hope for this undersized country. English is now taught from the first grade.
The more I have worked with software in these two different languages, the more I am convinced that message catalogs is one of the worst non-solutions. It works OK only if you have a primary language and subordinate languages that you do not care if suffer from stilted expression and phony flow of logic. We have to realize that the logic flow of the primary language is deeply engrained in the program itself and that "translating" what appears to be a step-by-step procedure in one language may require fewer or more steps and with a different order in another language, like in which order you provide the components of your name and postal address, etc. The whole user interface/experience needs to be tailored to each culture and language. "Translation" must be done by programming.
This naturally leads to the conclusion that software should not speak natural languages to users, but formalized protocols to user interface engines. In other words, yes-or-no-p would be a protocol element, not a _specific_ user interaction in my view.
* Thomas F. Burdick | Certainly the idea of locales can be (and is) taken to a silly extreme. | However, there are a few languages that are really important, and being | able to deliver applications in them is important. English, Spanish, | maybe French, Arabic, Chinese, and Japanese, should all be usable. We | should be able to assume that all programmers have at least basic English | skills, but the same is not true of users.
Well, you cannot write a program that works in English, Spanish, French, Arabic, Chinese and Japanese unless you know _all_ these languages and _prepare_ for the translation.
The only way to make a program work in more than one language is to make it work in _none_: formalize a protocol and write user-interface front- ends to it. Let those who understand the application _and_ the target language write that user-interface front-end.
English happens to be the _common_ language of the field of computer science. It no longer has the role of a natural language in computer science. That this leaves a large number of people "handicapped" by being misled to believe that _their_ language is the common language, is nothing but unfortunate.
Forget the whole locale business and write software that speaks about objects and units and internal stuff, and let several user-interface guys handle the user-interface portion that talks to people in various cultures. This is not hard at all, once you get past the misguided notion that all computer programs should talk directly to users.
Erik Naggum <e...@naggum.net> writes: > * Duane Rettig <du...@franz.com> > | As for yes-or-no-p et al, it is true that we have not implemented the > | LC_MESSAGES category, but it is entirely possible. And I may be wrong, > | but my reading of the definition of yes-or-no-p in the spec doesn't > | preclude an implementor from basing either the message string or the > | actual "yes"/"no" responses on the locale.
> Fixing yes-or-no-p in the locale is the wrong place to do it. This is > clearly a user-interface function that depends on a particular mode of > user interaction with specific programmer and user expectations. Making > it more general is a mistake. A more elaborate user interface would need > more than just yes-or-no-p and y-or-n-p. _If_ these functions match the > user interface needs, they will be used, and then all parties involved > expect them to be exactly as they were when they got into the language. > If they are not satisfactory for user interaction, some other functions > will be written and used in their place. Please do not bother making > "localized" versions of these functions.
Right. As I said, we have not implemented them. My argument is purely one for possibility, and not for practicality or desirability. I agree that a programmer who wants a specific si/no or ja/nein or oui/non interface can write their own functionality to do just that. I am only saying that the CL spec doesn't preclude such responses from an implementation.
> I work in two languages all the time -- have been since I were a kid, and > I consider myself fluent in both. I am constantly deeply annoyed by the > incompetence of the fools who think they can translate movies and books, > and can only imagine what kind of mistakes are made in translations of > languages I cannot read in the original.
A gripe I used to have as an English speaker was when I would buy a Japanese (or other nationality) bicycle and get instructions purportedly in English, and which indeed used only English words, but in such a way as to be unintelligible. I still buy products from other countries, and still receive instructions in English, but fortunately they are much better written nowadays, since companies have learned that their products sell better when proper translations of instructions are done.
> Not many years ago, fluency in > several European languages were common among academics and the lingua > franca (!) was Latin _long_ after that language had ceased to be spoken. > It is somewhat unfortunate that computer science uses a living language > for its lingua franca, in contrast to law and medicine, which are both > firmly based in much older languages and cultures, because that makes a > lot of people who fail to grasp the function of a common language think > it is a natural language and can be replaced by another, particularly > those who speak it naturally and are overcome with political correctness > and think they should be guilty of the fact that historic accidents > favored their language. The common language is, however, _not_ a natural > language except by accident, and it cannot be replaced by another natural > language without replacing the whole culture with it.
A good example of this is music; as a musician, I do know a few words of Italian (including Allegro! :-) Translation of these musical terms into English are usually not done; when they are attempted, the music is usually rejected as not authentic.
> Those who think > _their_ natural language should be the common language should just get > over their egoistic provincialism and learn to deal with reality.
Well, as a native English speaker, I understand that English is an important language used in computer science, but for the very reason you cite I do not want to assume too much. Whether non-native-English speakers (or more importantly, whether non-English speakers) accept English-only interfaces is going to be up to you/them. And the acceptability of such English-only interfaces are likely to vary according to the audience; whether to the programmer or to the end-user. To use my music analogy, it takes some understanding of Italian terms (piano, forte, pizzicato, cresendo, etc) to play written music, but it takes no such knowledge to listen nd enjoy the same music.
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
# So pardon me while I think "locales" and supporting loser dialects # is a Bad Idea.
Only an arrogant moron, living in a loser country could utter such loser sentences. If that half brain that this lower life has rented were still half working [we're talking 25% of full regime here, if you can't do the math yourself] we would be spared such loser posts which don't bring any value _at all_ to that thread.
Jochen Schmidt
# My English is far from being good, but I finally came to the opinion # that I don't see German the language as very important.
I would agree too...if my native language were German that is ;-)
It turns out that my English is far better, and that my French is near perfection. If I had more time, I would certainly learn more winner languages (Russian and Arabic spring to mind).
# More and more often I catch me that I at least partially think # in English
No you don't. Only mono-linguists can argue they do, until proven wrong.
When you utter some sentence (in any language) you know, ahead of the words coming out of your mouth, what the sentence is going to affirm. (that is, unless you are a politician of course ;-). Yet those words that will appear in the near future, are not _verbalized_ yet, and are only _translated_ to your utterance language as your tongue makes some progress.
While, according to Bergson, the language is the support of the thought, it is _not_ the thought itself, even though a given language _shapes_ the way you think.
Multiplying the languages you know can only give you more perspectives, and ways of thinking. Reducing their number can only lead you to an impoverished mental landscape, where entire areas of human thought will simply never flourish.
Finally, this idea that a given language has "won" is utter non-sense. French had "won" two centuries ago. Where is it today? Give me a break and go by some more brain cells. At any point in time, there is a dominant language. Latin two thousand years ago, Chinese in the next decade. And so what?
So what?
The issue is that way too often, this kind of decision (whether and how to support non dominant languages) is left to computer specialists, the vast majority of whom are _anything else_ illiterate. This includes art, poetry, literature, and most forms of human expressions that do not appeal to those "computer morons".
If a shoe helps you walk, a computer is meant to help you think. No matter what uneducated, university degrees loaded psychopaths would love you to believe.
"Ouf! Depuis le temps que j'attendais ça, je me suis payé le Naggum!"
-- Jean François Brouillet ^ +--- this letter is called "Fuck You! Loser"
Jean-François Brouillet <ve...@mac.com> writes: > "Ouf! Depuis le temps que j'attendais ça, je me suis payé le Naggum!"
Yow, until I got here, I was quite confused by the inexplicably violent response in this article. Well, good explanation or not, it's no longer inexplicable. Ouf, indeed.
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
* Duane Rettig <du...@franz.com> | Well, as a native English speaker, I understand that English is an | important language used in computer science, but for the very reason you | cite I do not want to assume too much.
Each field has only one common language. Any attempt to add more will split the field. It is already a problem that research published in French and German are unavailable to the rest of the computer science community.
| Whether non-native-English speakers (or more importantly, whether | non-English speakers) accept English-only interfaces is going to be up to | you/them.
Fluency in English is a sine qua non in computer science. Programmers who want translated software tools and programming languages in their native tongue will forever remain incompetent tinkerers. Only one company on the planet thinks this is a good idea.
| And the acceptability of such English-only interfaces are likely to vary | according to the audience; whether to the programmer or to the end-user.
End-users should _obviously_ be served with natural language interfaces. I do not see how what I have said could be construed to have been arguing against natural-language end-user interfaces. Quite the contrary, I have made several points about how software that needs to talk to real users must be tailor-made in each language. How could this possibly be taken to mean that we should _not_ make natural-language interfaces for users?
* Jean-François Brouillet <ve...@mac.com> | Only an arrogant moron, living in a loser country could utter such loser | sentences. If that half brain that this lower life has rented were still | half working [we're talking 25% of full regime here, if you can't do the | math yourself] we would be spared such loser posts which don't bring any | value _at all_ to that thread. : | -- | Jean François Brouillet | ^ | +--- this letter is called "Fuck You! Loser"
What an _interesting_ display of personality problems. Get help, OK?
> Aleksandr Skobelev <holych...@mail.ru> writes: > ...
>> IMHO ANSI CL >> standard is lacking in support for locales/charsets. So any non-Latin-1 >> user might encounter with some problems/inconviniences ever with >> commercial realisations (such as Allegro 6.?, Lispwork 4.1.20). And when I >> think about some funny features in the language like YES-OR-NO-P or ~R in >> FORMAT, I understand that they were designed with English taken in >> consideration only.
> Certainly you are right if you mean that it is lacking service > functions for locales and charsets, but we made the design pretty > general in a way that I think doesn't fight an implementation that > wants to pursue these issues. If you find that's not so, it would be > an interesting topic of discussion to hear what specific > representational requirements are keeping you from having what you > want.
> Individual implementations may indeed fall short, but before blaming > the spec for this, you should try to find the place in the spec that > REQUIRES such implementations to fall short. It's possible to happen, > in principle, but I think it's not there in most cases...
> As to the issue of English bias, I think this: Because English is the > international interchange language (we're speaking it now, after all), > there is some reason to indulge some accomodations to it. If I were > to propose fixing things, it would mostly be to remove the offending > features, not to internationalize them. The problem is that those > features are mostly weak even for their support of English, and are > probably just bad ideas. They were in there as accomodations to > history, since old code used them. And the cost of ignoring them is > small.
> IMO, proper support of these things for international purposes (to > include proper support for English) would be better to proceed as a > layered library standard, and I don't see any representational nor > protocol barrier to doing such things in an implementation that > commercially favors an international market.
> The Japanese national body presented a report to the US just prior to > our putting out the standard, asking for a small number of detailed > changes to accomodate their internationalization needs. The US rushed > to fully accomodate their list of minimal necessary changes. I have > never heard a subsequent complaints that the changes we made were > insufficient. CLEARLY, there was work left to implementations and to > other layered standards, but IMO it's important to understand that > that will always happen.
> So I'm not trying to assert that there are no bugs in CL that would be > a problem to internationalization. I'm trying to say that I try to > listen when people raise this issue because I USED TO think that CL > was enough deficient in this are that we would be forced to fix it at > some point. But over time I have come to the belief that the core > design is good enough that it can probably stand, at least for now. > And I'm asking you to do two things, Aleksandr, in order to be most > helpful here:
> * Make your criticisms more precise so that those of us who don't > experience the day-to-day issues that you do can better understand > what you are up against. Many of us suffer from lack of day-to-day > familiarity with the problems at all and have to stretch our brains > to know what you're up against. Although I can imagine a problem with > YES-OR-NO-P in Russian, it's not obvious to me what that is. I imagine > (yes-or-no-p "Exit?") or (yes-or-no-p "Salir?") or ... to work in > just about any language; I don't see any internationalization issue > here that is different than (format t "~&Exit?~%") vs > (format t "~&Salir?~%"). [Pardon my use of Spanish as an example, > I don't speak Russian.] THe only problem I can even imagine is that > a pop-up dialog might need to know whether to put clickboxes that said > [Yes]/[No] or [Si']/[No] and in order to know this, it would need to > intuit the language that the query was presented in, so as not to have > the question asked in one language but the answer offered in another. > This is a problem, but again I can't see how it's much different than the > overall problem that CL uses inline strings in code rather than > references to resource vectors of translatable strings. I don't see that > problem as YES-OR-NO-P specific. So maybe you could help us by working > an example for each such thing you complain about. Thanks...
> * Distinguish in your criticisms between omission and bad foundation. > A feature which is merely omitted (and there are many) can be added > compatibly. If our design is a bad foundation, then something about > an existing requirement must be fixed first to move on, correcting a > hill-climbing problem.
> Thanks for your help in keeping the discussion focused.
Well, I don't think that there is need to intuit the language of the query to interpret replies properly in YES-OR-NO-P. Probably, it is enough just to allow to set strings for yes/no replies (for example through some specail variables called *yes-reply*, *no-reply*...) and leave the problem of language synchronization in query/reply for programmer.
So, I think, YES-OR-NO-P in its current state is not very useful in any program which intended for non-English user, who works with non-English keyboard mainly. IMHO it is not convinient, at least, because such user need to switch the keyboard to English and back every time he/she need reply on YES-OR-NO-P query. It is, of course, is not a problem, because such functionality can be implemented very easy. It is just a little inconvenience.
If we spoke about an implementation of "international" functionality of ~R directive, I would try to offer a some leverage with ability to pass a list of user arguments to ~R that then could be passed to some callback function (that could be set by a programmer) to get a proper form for ordinal number.
Again, I don't speak that this functionality is needed. I think this is just some convenient tools in the language. If they were absent, nobody told about them. But, on the other hand, if they were added, why didn't they have done more extendable?
The more important thing is, of course from my point of view, ability to set a proper charset. Without that functions for manipulating strings and characters don't work properly. So STRING-UPCASE for example doesn't not work with Russian in Lispwork 4.1.20 Personal Edition, CMUCL. There is SET-LOCALE function in Lispwork but only "C", "POSIX" and "*.ISO-8859-1" locales exist. If my memory serves me, there are same situation in Allegro 6.x (i.e. SETLOCALE exists but number of localies is limited by C/POSIX/*.ISO-8859-1)? But because I don't have Allegro on my computer now, I can make a mistake here.
Again, It might be not a problem but just a little inconvenience. Because, I suspect that correspondent localies can be added to both Lispwork and Allegro. And it is not a very hard ever for such a beginner as me to implement a basic SETLOCALE functionality in CMUCL using existing Alien interface.
I don't blame anybody or anything. I think that a great job was done with the standard. I can understand vendors who probably have had most of their customers in English-spoken countries. So there were not value reasons for them to harry up with implementation of functionality that was not part of the standard.
Thank you and all others senders who reply on my message. I have been reading this newsgroup regulary enough and I have never seen before a discussion of that topic. But these little problems with locales were the one of the first thing which I had encountered at the very begining of my CL voyage. :) I sent my message driven by intention just to attract community's attention to this topic, but didn't blame anybody.
And excuse me, please, for my ... not very good English. :(
> # My English is far from being good, but I finally came to the opinion > # that I don't see German the language as very important.
> I would agree too...if my native language were German that is ;-) > It turns out that my English is far better, and that my French is near > perfection. If I had more time, I would certainly learn more winner > languages (Russian and Arabic spring to mind).
It is nice for you if you think that your English is far better (than what?). I don't choose languages I want to learn because they are understood as "winner languages" - if that would be the case I would never have a chance to learn french... But seriously - I don't think there are any "winner languages" at all - I really hope that your attitude is not very common anymore in your country. (And I'm glad to know some people from french who support my hopes)
Languages and the corresponding cultures are tightly coupled - therefore I choose languages of cultures that I find interesting. Until now my plans for the next language I want to learn as soon as I find the time are either Chinese (Mandarin) or Japanese. I furthermore think that it is common to learn the language of the country were you live - regardless if the country is a "winner" or if the people speak a "winner language". There is only one country in Europe that demands from other countries to learn their native language at the european parliament (and it is not Germany). I'm quite happy that those ugly nationalistic attitudes widely disappeared in Germany many years ago...
> # More and more often I catch me that I at least partially think > # in English
> No you don't. Only mono-linguists can argue they do, until proven wrong.
To bad for you that you never experienced it before...
> When you utter some sentence (in any language) you know, ahead of the > words coming out of your mouth, what the sentence is going to affirm. > (that is, unless you are a politician of course ;-). Yet those words > that will appear in the near future, are not _verbalized_ yet, and are > only _translated_ to your utterance language as your tongue makes some > progress.
This may be true - but it is a difference if it is translated directly to English or if it is translated to German and after that translated from that to English...
> While, according to Bergson, the language is the support of the thought, > it is _not_ the thought itself, even though a given language _shapes_ the > way you think.
Yes _your_ thoughts are not well materialized in a specific language - not in your mind and not much more if they are spoken out - but probably you will somedays realize that it is not because of a language problem...
> Multiplying the languages you know can only give you more perspectives, > and ways of thinking. Reducing their number can only lead you to an > impoverished mental landscape, where entire areas of human thought will > simply never flourish.
> Finally, this idea that a given language has "won" is utter non-sense. > French had "won" two centuries ago. Where is it today? Give me a break > and go by some more brain cells. At any point in time, there is a dominant > language. Latin two thousand years ago, Chinese in the next decade. And > so what?
Your nearly perfect English skills may have led you on the wrong road if you think that I said that I have the idea that any language has "won" or that it is not worth to learn more languages. I said that I by myself actuallyprefer to read English literature (instead of German translations of them!) out of practical reasons and because I like the language. I prefer to not generalize from me about others - I can only speak for myself.
> So what?
> The issue is that way too often, this kind of decision (whether and how > to support non dominant languages) is left to computer specialists, the > vast majority of whom are _anything else_ illiterate. This includes art, > poetry, literature, and most forms of human expressions that do not appeal > to those "computer morons".
As I already said - _I_ do not generalize from me about others...
> If a shoe helps you walk, a computer is meant to help you think. No matter > what uneducated, university degrees loaded psychopaths would love you to > believe.
> "Ouf! Depuis le temps que j'attendais ça, je me suis payé le Naggum!"
And I finally realize that it was probably not worth the time for an answer...
> Jean François Brouillet > ^ > +--- this letter is called "Fuck You! Loser"
The "ç" wow - and you speak about people being illiterate...
Aleksandr Skobelev <holych...@mail.ru> writes: > Well, I don't think that there is need to intuit the language of the query > to interpret replies properly in YES-OR-NO-P. Probably, it is enough just > to allow to set strings for yes/no replies (for example through some > specail variables called *yes-reply*, *no-reply*...) and leave the problem > of language synchronization in query/reply for programmer.
I don't agree that this would make the language stronger.
First, you are failing to distinguish, as I asked you do, things that the language keeps from happening from things the language merely does not force to happen. The language definition does not say an implementation should not do this. HOWEVER, if the language definition *did* do this, it would be a weaker language. You appear to be assuming (in both cases incorrectly) BOTH that (1) YES-OR-NO-P cannot accept such responses now and (2) YES-OR-NO-P works by textual typein. As to point 1, a conforming, correctly localized implementation of Lisp, is already permitted to do what you say. That is, what stands between you and success is not the language definition but your vendor's choice of how to render the language spec into a language implementation. But as to point 2, some vendors work by asking a textual query in which "yes" or "da" might be 'yes' answers *already* and "no" or "nyet" might be 'no' answers *already*. Now, if the language required so simple an interface as you provide, *yes-reply* could only contain one value, not many, and so you'd be eliminating valid replies. At minimum, you'd want a list of yes replies. But then in that case, the implementations where it was a dialog would not know what to do. In that case, how would you distinguish between whether (yes-or-no-p "Exit?") and (yes-or-no-p "Salir?") producing:
Exit? Salir? vs [Yes] [No] [Si'] [No]
(english) (spanish)
The heuristic guessing of language (especially based on a small number of letters) would be impossible to do reliably. Certainly it would not be able to tell whether to do even something like:
Comer? Comer? vs [Si'] [No] [Sim] [Na~o]
(spanish) (portuguese)
much less someting like this :) ...
42? 42? vs [Yes] [No] [HIja'] [ghobe']
(federation standard) (klingon)
The thing to understand is that these are *interface* issues and that such issues are explicitly not something that Common Lisp seeks to address in the base level of its standard. These were left to vendors and were intended to be the subject of separated (perhaps layered) standards. They are INAPPROPRIATE to standardize in a context where the space of interface concerns cannot be known because each such interface concern creates a nuance that cannot, a priori, be known.
In the future, there will also be voice and visual gesture interfaces, and CL does not address those either. If you have Star Trek movies over there, think of YES-OR-NO-P as an antique interface, like Scotty uses in Star Trek IV, to talk to the bootstrap version of a system, in order to get it into application mode where other interfaces, not defined by the base layer, are available. It is IMPORTANT that Common Lisp does not pretend to address those other layers because it will SURELY FAIL to do them right and may trick implementors into thinking it has an answer that works, when it does not... just as you have already been tricked into thinking that YES-OR-NO-P is ever going to be the answer to the kinds of issues you are raising.
I say again: The correct solution to this problem is simply to IGNORE the presence of YES-OR-NO-P except for simple applications written in "federation standard" (i.e., English), the like-it-or-not interchange language of the modern world.
> So, I think, YES-OR-NO-P in its current state is not very useful in any > program which intended for non-English user, who works with non-English > keyboard mainly.
Yes, certainly. But that does not call for it to be fixed. It calls for it to be deprecated. The space of tools required to really address the non-English user is a space probably as large as the present language in its entirety.
> IMHO it is not convinient, at least, because such user > need to switch the keyboard to English and back every time he/she need > reply on YES-OR-NO-P query.
This is just a bug in your implementation, brought on by your specific vendor not caring about your locale. The language does NOT require this. PLEASE distinguish LANGUAGE from IMPLEMENTATION. These are utterly different things.
> It is, of course, is not a problem, because > such functionality can be implemented very easy. It is just a little > inconvenience.
Yes, but once we start to address that, it only opens the question: what if I want yes, no, or maybe? What if I want to answer "boy" or "girl" instead of "yes" or "no"? What if I want to have option1/option2/Cancel? What if I need voice input? What if I need it to handle 7bit ascii Russian? (I was going to paste in some Russian but my newsreader doesn't have the characters to do it... I might want to write Espa~nol or Fran,cais ... should we clutter the language with support for these? It's very helpful to accept them.) There are a LOT of issues one must address in order to have good LANGUAGE support for Russian or even a much more English-like language such as German or Spanish. It is fine for an application writer to shrug and say "well, I don't really need all that extra" but it is not fine for a language writer to do that. Probably that means we should have just left these things out of CL, but it's been a "learning experience" for all of us, and we didn't do everything personally. You and I just presently disagree on what the right way to fix that is.
> If we spoke about an implementation of "international" functionality of ~R > directive, I would try to offer a some leverage with ability to pass a > list of user arguments to ~R that then could be passed to some callback > function (that could be set by a programmer) to get a proper form for ordinal > number.
This would get very messy, to the point that just using ~A or ~/ and giving the right information would be better. Those capabilities are already there.
And before considering Russian, consider even the simple mess that the British and the Americans don't entirely agree on the meaning of the "English" word "billion" so that detecting whether an error has occurred is extraordinarily hard if you ever even hint that ~R's purpose might be to satisfy localization constraints.
> Again, I don't speak that this functionality is needed. I think this > is just some convenient tools in the language. If they were absent, nobody > told about them. But, on the other hand, if they were added, why didn't they > have done more extendable?
Because it was understood from the outset that (a) the language was not seeking to be a translation tool and (b) doing it Right is very hard. Doing translation is an art or a heuristic, but is not a deterministic activity. CL is a language, and so seeks to be deterministic. These goals come into conflict if the meaning of the linguistic terms is not simple.
There may even have been some US-bias in the design. For that I apologize. But in fairness, the US *did* design the language and our culture is, I think, due some small historical accomodation to keeping its programs running while stretching to embrace the new global market. It's not like the present definition of ~R really breaks existing programs when compiled in Russian. Existing programs were ALREADY broken because they do things like: (write-string "Hello World") instead of _ _ (write-string "| |p|/|BeT M|/|pOBo| O"), even without worrying about what
the world is going to say in response. [Sorry about the character set problem there. And I hope I didn't say anything offensive--I was just working from online phrasebooks. :-]
> The more important thing is, of course from my point of view, ability to > set a proper charset.
Again, an implementation issue. The standard cannot require this. Even in a properly internationalized implementation, there are some very complex issues about how to trade off true generality for efficiency. If we required Unicode (or better), we might be keeping some implementations that don't seek that market from being efficient. Even the input we saw from the Japanese standards groups seemed to me to indicate that they were not going to rush to make every implementation take their full pictogram character set in every circumstance. I don't think we yet have the global agreement to know what the right way to handle this is. In my opinion, and I'll even say it stronger here because I do believe this strongly, in my considered professional opinion, one must FIRST see some successful vendor-specific attempts at this AND one must observe that all the vendors agree on a common way of doing this before we go saying "this is the right way" and "this is the wrong way" by putting something like this in the standard. At this stage of our global-community-shared-cultural-understanding of this complex situation, I believe we do not have the wisdom to lock in a single way to do this and it would be VERY BAD to do so. This is NOT to say that I don't understand your need. I'm just saying you are criticizing the wrong people and so working against your own need. Talk to your VENDOR (by which I mean either whoever sold you your lisp or whoever made the lisp, if it was "free"). It is their responsibility to help you at this point. The responsibility of the language at this point is merely to not do things that would make a vendor implementation non-conforming merely for
...
* Aleksandr Skobelev <holych...@mail.ru> | So, I think, YES-OR-NO-P in its current state is not very useful in any | program which intended for non-English user, who works with non-English | keyboard mainly.
Why, then, did you write the call to that function in the first place?
I see another case of blaming the language for failing to be convenient _enough_ and trying to blame some cultural artifact that the _programmer_ has not been able to figure out is not going to do what he wants.
It is great that Common Lisp is usable by us "furriners", but when I was faced with the inability of Allegro CL 4.3 to deal with case issues in ISO 8859-1, I spent some time fixing this problem locally, and repeated this for Allegro CL 5.0 so it would work in my application, which used and required ISO 8859-1 to work properly. It was not particularly hard. However, I did not attempt to make format control ~P work for Norwegian. I did not use yes-or-no-p in the Norwegian user interface. I did not expect a language I have learned and studied suddenly to become plastic and turn into something it is not just because I wished for it.
I actually find it completely incredulous that otherwise seemingly smart programmers suddenly get a case of "wishful thinking syndrome" and fail to understand that a programming language is what it is. If the language does not fulfull your childhood dreams, at least try to figure out if it is actually blocking you from realizing them _with_ it. If so, drop it and find another language that does not block your dreams. If, however, the language just falls short of some egoistic "ideal" that you think you have right to complain that the world does not fulfull for you, you have a _much_ bigger problem than the failure of yes-or-no-p to speak Russian.
Programming is about making new things possible, about realizing dreams, about _creating_ dreams. I get so fucking _tired_ of the whining losers who expect languages and environments and computers in general to relieve them of having to exert any effort at all to get what they want, and who get _sore_ when the languages refuse to do their bidding. Sore losers who fail to grasp that they world does not owe them a thing come out as exceptionally demanding assholes who cannot tolerate that they have to do some of the work themselves.
Common Lisp is one of the languages in the world that offer programmers _so_ much for free already, but what happens? Again and again, whining losers gang up on it for not offering them enough. Even thinking about making something useful on their own instead of whining is beyond these people, so it is all fault-finding instead of doing something new and useful. This is probably the biggest difference between the Common Lisp community and the Perl community: Give people a shitty language and they expect nothing, so create what they need, but give people a great language and they expect everything, so only pine for what they miss.
Internationalization and _real_ localization is very hard work. It is not something you tack on as an afterthought, any more than security and qualit is. If some standard function named yes-or-no-p does not satisfy a Russian user, the only surprise should be that someone could even come up with the idea that it should have.
If you have a problem with missing functionality in a programming environment, there is actually a name for the solution to your problem: It is called _programming_.
> > As for yes-or-no-p et al, it is true that we have not implemented the > > LC_MESSAGES category, but it is entirely possible. And I may be wrong, > > but my reading of the definition of yes-or-no-p in the spec doesn't > > preclude an implementor from basing either the message string or the > > actual "yes"/"no" responses on the locale.
> I don't think the spec requires it, though how it would know what > language it was in is slightly problematic. You have to know what > language the question is being asked in OR you have to accept > responses in multiple languages. If you're taking one-letter > responses, it's not hard to imagine how a letter might have > conflicting meanings depending on the language, though I don't know if > that happens in practice.
My guess is that it does not. I'd be interested in knowing whether there is any language out there whose "one-character representation" for "yes" and "no" are the same letter. So _if_ y-or-n-p were set up to obey localities, there would be no conflict.
However, are you saying that a "y" in one language is the same as the equivalent "n" of another language? This would be consistent with your statement that multiple-languages would need to be acceptible as input. (I happen to disagree with this; it violates rules of least surprise - if I accidentally hit the "s" key and that got accepted as "yes" (via "si") then I would become pretty angry at such suprising behavior).
> > As for the ~R format directive, I do agree that it is awkward to extend > > individual pieces of format; we decided to make our locale extentions > > general, using ~/ as our extension mechanism. The fact that ~/ was > > available is to CL's credit re its extensibility.
> Part of the problem isn't just the desire to extend but the fact that > what some people mean by "extend" is "redefine". Even if you knew a program > was being run in a certain country by a certain user who needed certain > interfaces localized, you don't know if ~R is being called for reasons > relevant to where the program is run or independent of that. One should > not confuse the notion of "providing a function that is known to vary in > effect with localization" with the notion of "providing a function that > someone WISHES had varied with localization but that programmers have > already used in the full knowledge that it is not going to do that". > "Upgrading" a program of the latter kind is really just "breaking" it. > You're right that ~/ is the right answer; ~R is not only hard to extend > but I think it would be improper to extend it. Better to just ignore it > if you don't like it just as it's spec'd now.
We had these same conversations at Franz, and our conclusions were the same. And as for CL functions that might be candidates for locale-sensitivity (STRING<, for example), we added new functionality rather than try to extend the CL functions (thus, for example, our version of STRING< remains ASCII centric).
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
Erik Naggum <e...@naggum.net> writes: > * Duane Rettig <du...@franz.com> > | Well, as a native English speaker, I understand that English is an > | important language used in computer science, but for the very reason you > | cite I do not want to assume too much.
> Each field has only one common language. Any attempt to add more will > split the field. It is already a problem that research published in > French and German are unavailable to the rest of the computer science > community.
Unless they are translated. My view about language commonality is that if there is a field developing in more than one language, either they will develop separately in parallel (with possible diversity) or they will converge with cooperative efforts. And if specific research in one group is important enough for the other group, it will eventually get translated to the other group's language. Perhaps one group will become stronger than the other, thus apparently "winning" and shutting out the other group (an unfortunate consequence). An example of such a successful effort is the US and Russian space programs, which have after all developed largely in parallel, with only limited cooperation, and with different emphases, and yes, of course, with much redundant effort, but also with no clear winner, because the emphases have been different.
> | Whether non-native-English speakers (or more importantly, whether > | non-English speakers) accept English-only interfaces is going to be up to > | you/them.
> Fluency in English is a sine qua non in computer science. Programmers > who want translated software tools and programming languages in their > native tongue will forever remain incompetent tinkerers. Only one > company on the planet thinks this is a good idea.
I won't make this assumption, again due to my own English-centeredness. However, for as long as my Company has existed we have had requests, especially in Japanese and French communities, to provide the kinds of things we're discussing here. The requests vary widely, from simple character-set capabilities to message translation tools. I don't remember anyone ever having asked for actual CL name translations, but most of the example problem descriptions we receive which were developed in a non-English country are written with objects and predicates matching that country's native language. And several of our developers have had to learn Japanese in order to make any in-roads into the Japanese markets. We even have a salesperson who is Japanese who also serves as a translator between our Japanese customers and us.
The above paragraph is not intended to refute or question a claim of _use_ of English in computer science, but only a need for _fluency_ in it. All of our customers use "cdr" and "cons" just like the rest of us (are those English words? :-), and the real problem is in communicating the programming concepts within the communities within which these programmers are operating. If a Japanese programmer decides to name a function with Kanji characters, do we force him to translate the name to English in order to help him solve a bug? The question is not rhetorical; every vendor has to answer it for themselves. If the answer is "yes", then some of that market is shut out. If the answer is "no", then the vendor must learn at least the characterset of the customer's language. We chose the "no" answer.
> | And the acceptability of such English-only interfaces are likely to vary > | according to the audience; whether to the programmer or to the end-user.
> End-users should _obviously_ be served with natural language interfaces. > I do not see how what I have said could be construed to have been arguing > against natural-language end-user interfaces. Quite the contrary, I have > made several points about how software that needs to talk to real users > must be tailor-made in each language. How could this possibly be taken > to mean that we should _not_ make natural-language interfaces for users?
I am agreeing with your points. What I think we may disagree on is whether a programmer can be an end-user as well. Contrary to what I have heard others say on this newsgroup about CL being a programming language which requires an elite group of programming skills, I have seen a wide spectrum of users within our customer base, with widely varying degrees of fluency in English as well. So I view the spectrum of programmer to end-user not as a dichotomy, but as a continuum, with a small number of the "elite" programmers who know the CL spec intimately, a larger group of users who might look at a screen-saver or play a game without even knowing that they were using CL, and a larger still group of programmer/user types who fall somewhere in the middle.
So the real point of issue is within this center of the spectrum, where we might ask the question "How much do we require the average programmer to know English in order to program in Common Lisp?" I think that the current answer is "They must know English", but I think also that it _should_ be the case that "They need not know English, only Common Lisp".
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
> > > As for yes-or-no-p et al, it is true that we have not implemented the > > > LC_MESSAGES category, but it is entirely possible. And I may be wrong, > > > but my reading of the definition of yes-or-no-p in the spec doesn't > > > preclude an implementor from basing either the message string or the > > > actual "yes"/"no" responses on the locale.
> > I don't think the spec requires it, though how it would know what > > language it was in is slightly problematic. You have to know what > > language the question is being asked in OR you have to accept > > responses in multiple languages. If you're taking one-letter > > responses, it's not hard to imagine how a letter might have > > conflicting meanings depending on the language, though I don't know if > > that happens in practice.
> My guess is that it does not. I'd be interested in knowing whether there > is any language out there whose "one-character representation" for "yes" > and "no" are the same letter. So _if_ y-or-n-p were set up to obey > localities, there would be no conflict.
> However, are you saying that a "y" in one language is the same as the > equivalent "n" of another language?
Yes, this was the case I worried about.
> This would be consistent with your > statement that multiple-languages would need to be acceptible as > input. (I happen to disagree with this; it violates rules of least > surprise - if I accidentally hit the "s" key and that got accepted as > "yes" (via "si") then I would become pretty angry at such suprising > behavior).
Well, perhaps. But it's already common for Space to be accepted as a 'y' substitute, and Rubout/Delete for 'n'. I certainly agree with your concern, but I also thiuk the issue is orthogonal and that implementations might reasonably have separate degrees and mechanisms for controlling such safeguarding.
On 2/1/02 10:12, in article 3218955132298...@naggum.net, "Erik Naggum"
<e...@naggum.net> wrote: > * Jean-François Brouillet <ve...@mac.com> > | Only an arrogant moron, living in a loser country could utter such loser > | sentences. If that half brain that this lower life has rented were still > | half working [we're talking 25% of full regime here, if you can't do the > | math yourself] we would be spared such loser posts which don't bring any > | value _at all_ to that thread. > : > | -- > | Jean François Brouillet > | ^ > | +--- this letter is called "Fuck You! Loser"
> What an _interesting_ display of personality problems. Get help, OK?
Why Naggum thinks that my renaming of the "c" with "cedilla" letter as an attack against Naggum himself is any _interesting_ at all is pure mystery to me.
Why would attacking Naggum be _interesting_ ? To whom ?
If attacking Naggum only came from the "bile-overflow" department, then people may sympathise, but then simply move on. Is Naggum such an important <plug-some-emphatic-title> that the whole 21st century has to be grateful forever for having been blessed by the smallest Naggum thought?
| Naggun standard canned reply to this is going to be along the | lines that _I_ need medical treatment because _I_'m exposing | personality disorders. And saying <whatever, your-call> about | him is simply a sign of me being <brain-under-powered> or whatever | he fancies those days. | | Isn't this entire Naggum-thing pathetic?
Naggum, of all your posts, about 10% have real value. And I mean _real_. Unfortunatenly, the other 90% is utter non-sense, bullshitting arrogance of the clever among the cleverest who deigns blessing the poor crowd with his infinite wisdom.
Naggum, enough is too much. There are real contributors to c.l.l, and your signal/noise ratio is way too low. Nobody _cares_ about how you feel, and whether such sub-population deserves to live/die/flourish/perish according to St Naggum.
Make us a favor: give us a break: stop posting 10 times a day to c.l.l (as if you had no other useful work to do). By restraining yourself to core issues, and avoiding raw, unwarranted, blunt, uncalled-for opinions you will contribute to making c.l.l a better place.
I, for one, would have happily carried on lurking c.l.l for quite a while if it werent' for this and the previous message.
> Get help, OK?
How much do I owe you, Doctor, for such an amazing diagnostic? Do you accept Euros ?
On Thu, 03 Jan 2002 01:11:36 +0000, Jean-François Brouillet
<ve...@mac.com> wrote: >Naggum, enough is too much. There are real contributors to c.l.l, and >your signal/noise ratio is way too low. Nobody _cares_ about how you >feel, and whether such sub-population deserves to live/die/flourish/perish >according to St Naggum.
There are two effective ways to deal with St Naggum 1. Ignore all his messages or kill file him 2. Annoy him enough that he kill files you.
I have chosen the latter option since some of St Naggum's posts are deliciously funny.
For example, the post in which he accused you of belligerence ( and misspelled the word to boot ! ) was wonderful. That is like the blast furnace calling the cigar smoky !
In article <B857F838.3485%ve...@mac.com>, Jean-François Brouillet wrote: >"Ouf! Depuis le temps que j'attendais ça, je me suis payé le Naggum!"
>-- >Jean François Brouillet > ^ > +--- this letter is called "Fuck You! Loser"
That's what you *think* it says, but to me, it spells: ``I'm an idiot who doesn't understand that one must use only ASCII when posting to English-language Usenet newsgroups, both in the body and headers''.
You might think that the glyph produced by this character is the letter c with a diacritical mark under it known as a cedilla. But on my terminal, it produces a little picture of a donkey.
If I were reading a French newsgroup, I would, of course, rectify that.
>> Well, I don't think that there is need to intuit the language of >> the query to interpret replies properly in YES-OR-NO-P. Probably, >> it is enough just to allow to set strings for yes/no replies (for >> example through some specail variables called *yes-reply*, >> *no-reply*...) and leave the problem of language synchronization in >> query/reply for programmer.
> I don't agree that this would make the language stronger.
I'm not sure that I understand well what it means "to make language stronger". But if there is possibility for seting a query string in YES-OR-NO-P why don't add possibility for setting a reply string? At least, it looks more regular and consistent for me. It is a far too much simpler than to leave for vendor to guess how will "yes"/"no" replies look like. And it is give to programmer a more freedom. So, I must admit here that I don't understand your adherence to the "vendor's generated replies" variant.
> First, you are failing to distinguish, as I asked you do, things that the > language keeps from happening from things the language merely does not > force to happen. The language definition does not say an implementation > should not do this. HOWEVER, if the language definition *did* do this, > it would be a weaker language.
It might be. I'm not sure that I understood your query in your previous message and I'm not sure that I understand it now. If return back ang use "omission"/"bad foundation" terminology then I don't see any "bad foundations" in ANSI CL standard which concerned localisation problem. But I think that there are some "omissions" in the standard (that could be done intentionally). (I don't tell about YES-OR-NO-P or ~R here. They both can be left just for historical reasons and there is ~/ directive also as you wrote below.) IMHO the current version of the standard just leave to a vendor the decision to support international languages or not. Below is just a quote from http://www.xanalys.com/software_tools/reference/HyperSpec/Body/13_aa....
"Common Lisp ALLOWS an implementation to provide support for international language characters as well as characters used in specialized arenas (e.g., mathematics)."
I would think that international standard should REQUIRE such behaviour, because any vendor now has right don't support international languages and still claims that his implementation is conformed with ANSI CL standard. Am I wrong?
> You appear to be assuming (in both cases incorrectly) BOTH that (1) > YES-OR-NO-P cannot accept such responses now and (2) YES-OR-NO-P works > by textual typein. As to point 1, a conforming, correctly localized > implementation of Lisp, is already permitted to do what you say. That > is, what stands between you and success is not the language definition > but your vendor's choice of how to render the language spec into a > language implementation. But as to point 2, some vendors work by asking > a textual query in which "yes" or "da" might be 'yes' answers *already* > and "no" or "nyet" might be 'no' answers *already*. Now, if the > language required so simple an interface as you provide, *yes-reply* > could only contain one value, not many, and so you'd be eliminating > valid replies. At minimum, you'd want a list of yes replies. But then > in that case, the implementations where it was a dialog would not know > what to do. In that case, how would you distinguish between whether > (yes-or-no-p "Exit?") and (yes-or-no-p "Salir?") producing:
> Exit? Salir? > vs > [Yes] [No] [Si'] [No]
> (english) (spanish)
> The heuristic guessing of language (especially based on a small number of > letters) would be impossible to do reliably. Certainly it would not be > able to tell whether to do even something like:
> The thing to understand is that these are *interface* issues and > that such issues are explicitly not something that Common Lisp seeks > to address in the base level of its standard. These were left to > vendors and were intended to be the subject of separated (perhaps > layered) standards. They are INAPPROPRIATE to standardize in a > context where the space of interface concerns cannot be known > because each such interface concern creates a nuance that cannot, a > priori, be known.
> In the future, there will also be voice and visual gesture > interfaces, and CL does not address those either. If you have Star > Trek movies over there, think of YES-OR-NO-P as an antique > interface, like Scotty uses in Star Trek IV, to talk to the > bootstrap version of a system, in order to get it into application > mode where other interfaces, not defined by the base layer, are > available. It is IMPORTANT that Common Lisp does not pretend to > address those other layers because it will SURELY FAIL to do them > right and may trick implementors into thinking it has an answer that > works, when it does not... just as you have already been tricked > into thinking that YES-OR-NO-P is ever going to be the answer to the > kinds of issues you are raising.
You want too much from such a simple function as YES-OR-NO-P. :)
> I say again: The correct solution to this problem is simply to > IGNORE the presence of YES-OR-NO-P except for simple applications > written in "federation standard" (i.e., English), the like-it-or-not > interchange language of the modern world.
>> So, I think, YES-OR-NO-P in its current state is not very useful in >> any program which intended for non-English user, who works with >> non-English keyboard mainly.
> Yes, certainly. But that does not call for it to be fixed. It > calls for it to be deprecated. The space of tools required to > really address the non-English user is a space probably as large as > the present language in its entirety.
>> IMHO it is not convinient, at least, because such user need to >> switch the keyboard to English and back every time he/she need >> reply on YES-OR-NO-P query.
> This is just a bug in your implementation, brought on by your > specific vendor not caring about your locale. The language does NOT > require this. PLEASE distinguish LANGUAGE from IMPLEMENTATION. > These are utterly different things.
Is it a bug or just behaviour allowed by the standard? I'm not sure.
> ... >> If we spoke about an implementation of "international" >> functionality of ~R directive, I would try to offer a some leverage >> with ability to pass a list of user arguments to ~R that then could >> be passed to some callback function (that could be set by a >> programmer) to get a proper form for ordinal number.
> This would get very messy, to the point that just using ~A or ~/ and > giving the right information would be better. Those capabilities > are already there.
> And before considering Russian, consider even the simple mess that > the British and the Americans don't entirely agree on the meaning of > the "English" word "billion" so that detecting whether an error has > occurred is extraordinarily hard if you ever even hint that ~R's > purpose might be to satisfy localization constraints.
>> Again, I don't speak that this functionality is needed. I think >> this is just some convenient tools in the language. If they were >> absent, nobody told about them. But, on the other hand, if they >> were added, why didn't they have done more extendable?
> Because it was understood from the outset that (a) the language was > not seeking to be a translation tool and (b) doing it Right is very > hard. Doing translation is an art or a heuristic, but is not a > deterministic activity. CL is a language, and so seeks to be > deterministic. These goals come into conflict if the meaning of the > linguistic terms is not simple.
> There may even have been some US-bias in the design. For that I > apologize.
No need in any apologize here. It is very explainable and naturally.
> But in fairness, the US *did* design the language and > our culture is, I think, due some small historical accomodation to > keeping its programs running while stretching to embrace the new > global market. It's not like the present definition of ~R really > breaks existing programs when compiled in Russian. Existing > programs were ALREADY broken because they do things like: > (write-string "Hello World") instead of > _ _ > (write-string "| |p|/|BeT M|/|pOBo| O"), even without worrying about > what the world is going to say in response. [Sorry about the > character set problem there. And I hope I didn't say anything > offensive--I was just working from online phrasebooks. :-]
Nothing offensive. I must admit that I didn't understand at the first glance. Only when I looked at it more carefully. :) It should be _ (write-string "| |p|/|BeT, M|/|p!")
or with transliterating with 7-bit ASCII ('i' as in "keep") (write-string "Privet, Mir!") :)
> We had these same conversations at Franz, and our conclusions were the > same. And as for CL functions that might be candidates for > locale-sensitivity (STRING<, for example), we added new functionality > rather than try to extend the CL functions (thus, for example, our version > of STRING< remains ASCII centric).
So, any non-English string won't be compared correctly?
Aleksandr Skobelev <holych...@mail.ru> writes: > Duane Rettig <du...@franz.com> wrote:
> > ...
> > We had these same conversations at Franz, and our conclusions were the > > same. And as for CL functions that might be candidates for > > locale-sensitivity (STRING<, for example), we added new functionality > > rather than try to extend the CL functions (thus, for example, our version > > of STRING< remains ASCII centric).
> So, any non-English string won't be compared correctly?
Actually, the 8-bit Allegro CL images coallate via latin-1 (a superset of ASCII) and the 16-bit images coallate via Unicode. Essentially STRING< and STRING> compare the char-codes of each character. But since ASCII or Unicode ordering may not be precisely what you want, we provide functionality to aid in user-customizable orderings. See
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
Aleksandr Skobelev <holych...@mail.ru> writes: > Duane Rettig <du...@franz.com> wrote:
> > ...
> > We had these same conversations at Franz, and our conclusions were the > > same. And as for CL functions that might be candidates for > > locale-sensitivity (STRING<, for example), we added new functionality > > rather than try to extend the CL functions (thus, for example, our version > > of STRING< remains ASCII centric).
> So, any non-English string won't be compared correctly?
Heh. Is there a requirement that a string contain valid language? What's an example of a "non-English string"?
I thought locales were an abstraction about the context in which a given set of characters were to be interpreted, not a representational issue.
Failing to do it thus would, I think, leave you in a serious quandary about how to deal with a string containing multiple languages in the same string, such as the hyphenated last name of a person whose parents are from different (linguistically incompatible) countries.
STRING< and friends are intended to compare strings in a natural-language-independent way, according to an arbitrary sort order that is constrained only by the A-Z/0-9 constraints enumerated the spec. From an internationalization point of view, this is all subprimitive and to be ignored.
Proper internationalization would, IN ANOTHER PACKAGE, offer the right meaning.
My understanding is that a properly localized string ordering function for a number of locales would require multi-char strings like "MacDonald" to sort ahead of "Maas" because "Mac" has some special priority in some locales. The definition of STRING< in the ANSI CL spec does not permit this because it requires the comparisons to go character-wise, not in groups.
Kent M Pitman wrote: > My understanding is that a properly localized string ordering function > for a number of locales would require multi-char strings like > "MacDonald" to sort ahead of "Maas" because "Mac" has some special > priority in some locales. The definition of STRING< in the ANSI CL > spec does not permit this because it requires the comparisons to go > character-wise, not in groups.
(sigh). Speaking from personal experience -- this is an absolute nightmare if you try and compile things like telephone books.