В 1980-м Robert A. Heinlein в своей книге Expanded Universe рассказал такую историю (потерпите меня - я клянусь, что это имеет отношение к теме поста):
Несколько лет назад меня посетил астроном, довольно молодой и выдающийся. Он сказал, что давно читает мои работы, и дальнейший разговор подтвердил это. Я рассказал ему о времени, когда мне нужна была синергетическая орбита от Земли до постоянной станции; я рассказал ему историю, по которой она потребовалась, а он был знаком с ней, упомянув, что читал книгу в средней школе.
Эта орбита внешне похожа на межпланетное перемещение комет, но, фактически, является серией компромиссов для прибытия вровень со станцией; прошедшее время является негладким интегралом, которого нет в руководстве Hudson-а, но он может быть решён методами численного интегрирования.
Я женат на женщине, которая знает больше математики, истории и языков, чем я. Это должно научить меня смирению (а иногда и делает, на несколько минут). Ее мозг очень помогает мне профессионально. Я сказал этому молодому ученому, как мы получили ярды исписанной бумаги, а затем каждый из нас работал три дня, независимо, чтобы решить проблему и проверить друг друга, - то ответ исчез в одной строке одного параграфа (SPACE CADET), но всё же усилия были стоящими.
Доктор Whoosis спросил: "Но почему вы просто не прогнали это через компьютер?".
Я моргнул. Затем я медленно и мягко сказал: "Мой дорогой мальчик...", (обычно я не называю докторов в хардкорных науках "дорогими мальчиками" - они внушают уважение. Но это был особый случай) - "Мой дорогой мальчик... это был 1947-й".
Ему потребовалось несколько моментов, чтобы сообразить, затем он покраснел...
Я вспоминаю об этой истории каждый раз, когда человек, говорит о чём-то, не принимая во внимание время, когда произошли события, и влияние времени на события. И это особенно заметно, когда речь заходит о теме этого поста - люди, которые возмущаются, почему Microsoft не поддерживает Unicode Collation Algorithm. Они замечают, что в Windows есть эквивалентный фреймворк, и предполагают, что они оба используют одну и ту же "таблицу по-умолчанию", которая служит основой для всех сравнений (другими словами, они полагают, что Microsoft основывается на сортировочных таблицах весов Unicode).
Но в реальности всё оказывается немного не так. Коэффициенты Unicode являются частью UCA, который был представлен в черновом варианте в марте 1997-го. Он имел статус черновика до ноября 1999-го, и стал стандартом только после августа 1999-го.
Windows, с другой стороны, имела эту архитектуру и все таблицы аж со времён поставок NT 3.1 - более десяти лет до этого момента. Как она могла основываться на стандарте Unicode, который вообще не существовал в то время, даже в виде черновой разработки? В подобных случаях искушение начать ответ с "Мой дорогой мальчик..." ("Моя дорогая девочка...") - просто непреодолимо!
Что касается дополнительной функциональности, то я просто скажу, что за последние 15 лет в Windows было добавлено множество различной поддержки языков, и опыт, который был получен от поддержки сопоставления (collation) воистину велик. Его обескураживающие возможности продолжают временами работать, учитывая, как хорошо он выступал всё это время :-)
С философской точки зрения, сопоставление (collation) в Windows всегда основывалось на лингвистических данных, которые являются его ядром - технические вопросы всегда регулировались данными, а не наоборот. Я думаю, что это явилось той уникальной силой нашей реализации, которая позволила ей превзойти другие схемы в вопросах поддержки многих языков, которая (по моему мнению) тоже выдающаяся. Таблицы, безусловно, были созданы на базе совершенно другой лингвистической и архитектурной философии. И (игнорируя моё мнения о том, что лучше) данные от любого подхода будут не слишком-то подходить для другого.
Знаковым событием (ну, по крайней мере для меня!) стало то, что на двух последних встречах Unicode Technical Committee (технического комитета Unicode) было сделано несколько решений, которые приведут к тому, что будущие версии таблицы по-умолчанию в UCA будут больше похожи на Microsoft-кую. Это не потому, что это "путь Microsoft" (мы давали советы по принципам для UCA, но не настаивали на этом, потому что в этом нет необходимости - поскольку мы не используем его), а потому что один из авторов UCA предложил подстройку на основании советов экспертов и отзывов пользователей. Я думаю, что это означает, что наша идея была верна, да? :-)
Ответ подразумевает:
ОтветитьУдалитьМой дорогой дедушка, я правильно понял вашу позицию. Если я хочу написать программу, которая одинаково работает в разных системах мне надо пользоваться libICU, и не трогать реализацию от Microsoft с вашими оригинальными идеями. :)))
"в течение нескольких минут"
ОтветитьУдалитьтут скорее другйо перевод: "НА несколько минут"
Поправил, спасибо. Но всё равно перевод корявый...
Удалить