В ответ на оптимистичную и захватывающую статью «Mapcode — простой и короткий адрес», хотелось бы отозваться критикой этой системы, чтобы лишний раз не распалять несведущие умы глобальными идеями а-ля «отмены часовых поясов». Итак, что было недосказано и что «не так» в этой «идиллии адресов»:
- Первое и главное — эта система не является «короткой» в её полном понимании: адреса типа «AB.CD» вам может не достаться чисто в силу принципа кодирования MapCode. Вот, например, некая точка в Арктике: «ZQDZY.98D3» — не так уж и кратко, правда? Причина: короткие адреса получаются только если ваш регион внесён в список MapCode. Собственно, он потому и получается короткий, что сначала указывается известный регион, а затем — точка (с небольшими координатами-смещениями) внутри этого региона. «Нет региона — нет короткого адреса».
- Второе важное замечание: система построена на предопределённых регионах, вносимых (hardcoded) внутрь рассчитывающей программы. А значит, система становится неуклюже-статичной, требующей обновления по всему парку устройств с MapCode. Более того — сразу попадаем на ограничения встраиваемых устройств (где счёт на килобайты).
- Ещё хуже: для точных координат система явно требует указания страны, что в наш век глобализации не так уж и «неважно» — просто «голый» код уже не сунешь в емэйл. Опять неудобство.
- После беглого изучения исходников (а это 2,5 тысячи строк всякой утилитарщины только в си-шном файле!), хочется взять и как в известном анекдоте — «всё переписать». Ну не должна «простая и удобная система» быть таким месивом разнородных алгоритмов кодирования (их ТРИ), регионов и кодировок!
- И кстати о кодировках… Когда я прочёл, что из кода адреса выкинули буквы «O» и «I» (дабы не путать с цифрами 0 и 1), я даже как-то зауважал авторов — скинуть такую громадную проблему при чтении кода! Но когда в спеках речь зашла о путании русской буквы «Н» с английской «H», от фэйспалма помрачнело чело. Ну, молодцы Архимеды, блеснули интеллектом! Как же мы емэйлом-то без вас пользовались 20 лет?? А ведь это увеличивает сложность кодирования, при этом всё равно… проблема остаётся! Как ты объяснишь блондинке с визиткой, что все буквы можно читать как угодно? Люди-то привыкли к английским буквам! Да и глупо как-то изобретать «глобальную систему адресов», но при этом с использованием национальных алфавитов — в чём тогда глобальность китайских цифр в Кукуево? Опять «абстракции текут».
- Наконец, принципиальное разногласие: система построена для сокращения человеческих адресов, но человек-то как раз и не может её прочесть (без помощи компьютера)! Ну а если есть компьютер, то и коды особо-то не нужны. Фактически, 100% польза от MapCode достигается только в таком идеальном случае: обе взаимодействующие стороны находятся в одной стране, в густонаселённом городе (т.е. работают «короткие адреса» и не нужен код страны), вам звонят со стационарного на мобильный (т.е. отсылка SMS исключена), вам диктуют 4 цифры и вы их вводите в GPS (т.е. интернета нет, емэйла нет, google maps нет,
населена роботами), а тот вам находит нужный адрес. Вам не кажется, что это всё смахивает на ретроградство и какой-то совсем уж узкий случай использования? Вот и мне в век гугловых карт (без которых не выезжаю ни на один адрес) кажется глупым изобретать «иногда круглое» (т.е. иногда короткое) колесо, которое полезно в жалком проценте случаев. Да, и не забудьте: у прохожих тоже не спросишь «как пройти к B5.Z16?» — уж лучше длинный «адрес» «там такой синий домик и проход во двор», чем коды.
Да и потом, как правильно указали в комментариях: зачем мучить одно место, когда есть нормальный, точный, действительно глобальный стандарт Geo URI? Да, цифры подлиннее, зато это цифры — их легче диктовать, чем емэйл, с ними меньше путаницы «O» или «0», да и вводить быстрее, чем алфавит. Вот ещё бы
Подытоживая, «концептуально» система интересна, но применима ровно так, как и кодируется: в узком регионе уровня области/штата.
Сейчас в голове всплыла идея: может, тупо воспользоваться рекурсией? «Пусть Земля — это квадрат». Разбиваем квадрат, скажем, на матрицу 6х6, пронумеровываем клеточки алфавитом [A-Z0-9]. А далее, каждая клеточка — всё тот же квадрат, который разбиваем матрицей и т.д. Получаем рекурсивный спуск до любого уровня точности, причём используя одно «число» и применимо для любой точки планеты. «Кухонная» сложность алгоритма — строк 30. Без дополнительных таблиц и плюсов/минусов/точек. Хотите минимизации — введите небольшую таблицу основных регионов, которые точно не подвергнутся изменениям (континент или его часть). А далее — чистая математика.
Например, в США от Северной Дакоты до Хьюстона — примерно 2,200 км. За 8 описанных итераций (т.е. 8 числобукв) можно сойтись к квадрату 1.3х1.3 м — это примерно соответствует точности GPS+WAAS. Такую систему не понадобится обновлять или применять какие-то суперточные вещественные вычисления. Заодно, вместо бессмысленных почтовых индексов, можно было бы писать этот международный код + он же в QRCode — почтальоны расплачутся от умиления!
Ох, дожить бы!
Автор: cigan