воскресенье, 25 ноября 2007 г.

Несколько новостей

1. Где-то 14 ноября CodeGear'у было ровно год. Офигеть. Вот тут http://blog.marcocantu.com/blog/one_year_codegear.html говорит о сабже. Коротко - CodeGear молодец!
2. Книга Марка Кенту http://www.marcocantu.com/dh2007/. Может переведут когда-нибудь. Будем ждать.

Я вот тут решил пофилосовствовать о Unicode for VCL. Я, признаться, совершенно не могу представить себе - как это и что это!?!?! (и ?! в периоде). С одной стороны - дело нужное. С другой - реально ли это?

Для того, чтобы был Unicode нужно делать нормальные двухбайтовые строки, я не то уродство, что есть сейчас в виде WideString. Верно ведь? Ибо AnsiString и WideString - две большие разницы, и не в 2 раза :) Естественно, что CodeGear решит сделать умольчательным типом для жереника string именно новый тип для unicode-строки.

Но сколько тогда завалится старого кода?! Например, простое преобразование PChar(S), где S типа String что должно давать? Часто такое преобразование делается при пераче параметров для win-api функций. Сколько разработчиков не учтет факт смены формата представления в памяти значений типа string.

В общем так:
1. Если они сделают это таким образом, что миграция не-unicode -> unicode будет простой и понятной, то я ... скажу, что они молодцы!
2. Жду с нетерпением новых тестовых билдов. Я хочу делать софт для буржуинов и не хочу пользовать сторонние компоненты. 

3 комментария:

Анонимный комментирует...

Уж сколько раз этот вопрос обсуждался на форумах codegear и все равно остались вопросы? Char будет двубайтовым. Соответственно PChar = PWideChar. Пол года назад Ник Ходжес прямо заявил, что если кто "косячил" и писал PChar(S), подразумевая при этом PAnsiChar(S), то чтобы пределывать уже начинали, ибо "нех". Хотя при этом обещал подумать об соответсвующем {$...}.

Дмитрий Тимохов комментирует...

Не помню, что у codegear есть форумы. Я пытался следить за обсуждением в private новостной-группе, относящейся к тестированию дельфи. После 200 поста я отпал: не смог следить.

Ну вообще я не только однобайтовость vs двубайтовость имел виду. Я полагаю, что всем известно, что для widestring и ansistring компилятор применяет разный менеджмент памяти. Ясно, почему так - widestring для совместимости с OLE и COM. Что они будут делать для string, которые станет unicode? Логично, что возьмут подход от текущей реализации string. А что тогда с OLE/COM? Там как? Останется WideString в неизменном виде? Как бы в этом бардаке не запутаца. Насколько я помню такие детали в группах не обсуждались. Т.е. не все еще продумано.

Все эти заявления разработчиков о том, что сам дурак, по меньшей мере чинничны. Ты вот, LordMad, давно видел хорошее описание языка Object Pascal? Ну может быть в 6 или 7 Дельфи оны были на уровне. А что сейчас? А?

Как результат, не дунутся они никуда от соответствующих {$...}, помяни мое слово. Иначе переход будет тяжел для большинства разработчиков.

Анонимный комментирует...

Форум, newsgroup или блог я уже не помню, ибо у меня они все в одной проге, так что очень может быть, что и не форум... не суть.
Если коротко... будет AnsiString, WideString и UnicodeString. Причем String = UnicodeString. WideString останется в том же виде как и сейчас для работы с OLE/COM. Все подробно обсуждалось и не раз, между прочим.
По поводу {$...} - сделают, если успеют, хочется верить, т.к. себе они не враги. А вот успеют ли... покажет время. ;)