LINUX.ORG.RU
ФорумTalks

Программисты, как так бывает?


0

0

После того, как я ушел с работы, мой кусок проекта потащил на себе человек, который уже несколько лет как работает в той конторе. Месяц после этого я получал регулярные звонки от того человека. Как оказалось, его вводило в ступор различие между UTF-8 и UTF-16 — он думал, что разницы между ними нет совсем. Я был повержен в шок.

Казалось бы, давно работает чел, ему всякие мегаответственные куски кода дают на разработку, интеграция с платежными системами и вся сопутствующая трахотень.

А я думал, что для веб-программиста базовые понятия о юникоде в XXI веке должны быть обязательными, как азбука. Наивняк с меня редкостный.

★★★★★

Большинство программистов не интересуются программированием дальше своих задач, а многие знания имеют не фундаментального вида (последовательность байтов, последовательность символов, кодировка как функция между этими множествами) а в виде практического набора рецептов (крякозябры похожие на греческий - прописать в таком то конфиге WINDOWS-1251). Это позволяет им выполнять большинство задач, а оставшиеся они либо не выполняют либо выполняют с чужой помощью.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> Большинство быдлокодеров не интересуются программированием дальше своих задач

//fixed

Led ★★★☆☆
()

Такие вещи должны разруливаться прозрачно для программиста. Компилятором, интерпритатором, либами - неважно, главное чтобы человек своё время на это не тратил.

kranky ★★★★★
()

> мегаответственные куски кода дают на разработку, интеграция с платежными системами и вся сопутствующая трахотень

ну нет в платёжках буковок, отличных от ascii-127. откуда знать человеку, что для задач, не связанных с деньгами есть отличия в кодировках?

у него были его зоны ответственности, а с кодировками никогда не работал. и не такое бывает.

gunja
()
Ответ на: комментарий от kranky

В итоге он вообще о таких вещах забудет. А когда вдруг это станет нужным...

Suigintou ★★★★★
()
Ответ на: комментарий от kranky

> Такие вещи должны разруливаться прозрачно для программиста. Компилятором, интерпритатором, либами - неважно, главное чтобы человек своё время на это не тратил.

Чуваку в качестве тестовых данных вместо UTF-8 (прописанного в спецификации) подсовывают UTF-16. Когда я ему объясняю, что проблема в том, что лжет либо спека, либо файл дали не глядя — он меня спрашивает: а что, между UTF-8 и UTF-16 есть разница?

Не, ну я все понимаю, но между «8» и «16» кагбе имеется очевидная разница. Кроме того, если то, что программа должна обрабатывать, в большинстве случаев не вылезает за рамки ASCII, то разница еще очевиднее.

И это не американский программист, а таки нашенский. Который вроде как знал кодировки, и при вылове интереснейшего бага в Zend_Date — когда тот генерил регулярные выражения с не теми пробелами (проявление бага было поистине замечательным: копипастишь регвыражение — не работает, срисовываешь руками — работает) — присутствовал, что такое юникод, вроде знает.

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

Судя по названиям, разница между Windows-1251 и Windows-1252 должна быть очевидна, но...

Lighting ★★★★★
()
Ответ на: комментарий от sS

Пользователи из Нидерландов и Японии оценили шутку. :-)

А вы знаете разницу между KOI8-R и KOI8-U?

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

>Пользователи из Нидерландов и Японии оценили шутку. :-)

А у них есть бит контроля чётности ? :) В koi7 есть :P

sS ★★★★★
()

> Как оказалось, его вводило в ступор различие между UTF-8 и UTF-16 — он думал, что разницы между ними нет совсем. Я был повержен в шок.

Может быть он не ожидал что в вашей оставленной программе эти кодировки UTF-8 и UTF-16 как то по особому обрабатываются? Вы ведь делали в UTF-16 я угадал?)

Deleted
()
Ответ на: комментарий от Deleted

Для этого нужна окраинская раскладка?

wfrr ★★☆
()

Вы знаете, веб-программисту вообще говоря в нормальной ситуации никогда не приходится встречаться с ютф-16. я (практики лет 5 точно) по крайней мере не встречал ни разу.

о ютф-16 знаю только что кодировка многобайтная (2х наверное? или может быть и однобайтной?) и получить символ номер х простым смещением на х байт не получится.

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

Она как бы двухбайтная, но «есть варианты». Копипаста:

один из способов кодирования символов из Unicode в виде последовательности 16-битных слов. Символы с кодами меньше 0x10000 (216) представляются как есть, а символы с кодами 0x10000—0x10FFFF — в виде последовательности двух 16-битных слов, первое из которых лежит в диапазоне 0xD800–0xDBFF, а второе — 0xDC00—0xDFFF.


т.е. простым смещением всё равно отделаться не получится.

Deleted
()
Ответ на: комментарий от volh

> поздравля) теперь куда-нибудь где нет пхп?

Туда, где PHP пока еще есть, но где, в силу менее трудоемкой сопровождаемости и большей маневренности будет внедряться питон. :-)

shimon ★★★★★
() автор топика
Ответ на: комментарий от Deleted

> Может быть он не ожидал что в вашей оставленной программе эти кодировки UTF-8 и UTF-16 как то по особому обрабатываются? Вы ведь делали в UTF-16 я угадал?)

Я делал в UTF-8. Спецификация говорит — UTF-8. Какого-то рожна то ли тестовые документы были в UTF-16 присланы, то ли Paypal (да, это он) поменял формат документов, «забыв» обновить спеки и нам сказать. Я уж и не помню.

shimon ★★★★★
() автор топика
Ответ на: комментарий от AndreyKl

> о ютф-16 знаю только что кодировка многобайтная (2х наверное? или может быть и однобайтной?) и получить символ номер х простым смещением на х байт не получится.

Ну, если документ вообще-то сам по себе может быть выражен через ASCII, то конвертнуть не проблема даже на коленке, да и iconv как бы есть, если не на рабочей станции, то на девелоперском серваке. Но зачем его использовать, если можно понапрягать по телефону человека? Это же так, глядь, приятно.

shimon ★★★★★
() автор топика

> базовые понятия о юникоде

Нашёл чем хвастаться.

Человек, впрочем, тоже хорош — не мог сам разобраться в несложном техническом вопросе.

Sphinx ★★☆☆
()
Ответ на: комментарий от Deleted

>Ну так напишите все 6 отличий.
MidNighter (16.06.2010 20:41:23)

у меня i c .. и вывернутой наизнанку э нет на клавиатуре. Πешите сами :)

sS ★★★★★
()
Ответ на: комментарий от sS

>>А вы знаете разницу между KOI8-R и KOI8-U?

Ога. И ?

И знаете почему и зачем появилась KOI7? Почему она была нужна раньше и почему сейчас совершенно не нужна?

А у них есть бит контроля чётности ? :) В koi7 есть :P

Кому сейчас нужен бить контроля четности? Сделал sha512 дайджест - вот и контроль целостности данных.

sign
()
Ответ на: комментарий от sign

> Кому сейчас нужен бить контроля четности?

Уменьшить объем ретрансмиссии в случае чего позволяет... Ты думаешь, нонче у всех броадбэнд на дешевых и надежных оптоволокнах?

shimon ★★★★★
() автор топика
Ответ на: комментарий от sign

Совсем замучали школьники дедушку вопросами. :)

Ищите ответы сами. Мне тяжко заниматься графоманией на виртуальной клавиатуре смартфона

sS ★★★★★
()
Ответ на: комментарий от shimon

Ога у него до марса оптоволокно протянуто :)

PS: кстати во многих промжелезяках вполне себе предусмотрены встроенные модемы чтобы их можно было во всяких рассеях и африках перенастроить имея просто телефонную линию.

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.