Автор Тема: Какая кодировка у BB документов?  (Прочитано 44823 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #15 : Декабрь 20, 2012, 12:56:59 pm »
Вот приписали бы разработчики BB что в данном месте символ кодируется методом JIS X 0208 к примеру, и вопросов бы не было, и я не пялился бы два дня в этот код и не гуглил бы всемирную помойку в поисках ответа.
JIS X 0208 -- это какой-то японский стандарт. Блекбоксёры решили этим стандартом кодировать иероглифы всякие? а почему не взяли UTF8, например? Он был разработан в 1992 г., неужели блекбоксёры не знали про него, когда делали юникодную версию блекбокса (1.6)?
Да я просто для примера этот формат привел. :) Что там в BB я так и не понял.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #16 : Декабрь 20, 2012, 01:00:54 pm »
Я понимаю Вашу позицию, но позволю себе с ней не согласиться :)
Нужно искать возможность выражать мысль формально кодом.
Когда пытаешься, начинаешь быть внимательным к каждой мелочи (раньше казалось всё равно, записать так или иначе - а потом начинаешь придерживаться конкретного варианта).
Когда язык строгого стиля и не особо допускает многовариантности, то в итоге происходит некий спуск к некому единому стилю выражения мысли в коде. Когда код становится состоящим из узнаваемых "образцов" (тут во мне таки говорит методист, думающий о работе с уже наученными в едином стиле программистами :) ).

Т.е. хороший код без комментариев заставляет быть внимательным к своему смыслу.
Обычно приходится иметь дело с несколькими языками, и стили выражения там обычно разные (иногда просто идеологически несвоместимые).
Комментарии в коде могут помочь пониманию исходного кода (если эти комментарии актуальны), так почему бы это не использовать? Зачем требовать от других понимания вашего внутрифирменного стиля?
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #17 : Декабрь 20, 2012, 01:03:27 pm »
JIS X 0208 -- это какой-то японский стандарт. Блекбоксёры решили этим стандартом кодировать иероглифы всякие? а почему не взяли UTF8, например? Он был разработан в 1992 г., неужели блекбоксёры не знали про него, когда делали юникодную версию блекбокса (1.6)?
Да я просто для примера этот формат привел. :) Что там в BB я так и не понял.
о_О Ну всё равно остаётся вопрос -- почему они не использовали распространённую кодировку типа UTF8 или UCS-2?..
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #18 : Декабрь 20, 2012, 01:04:46 pm »
Но что такое LPiece и зачем оно нужно не врубаюсь. И меня дико бесит волшебный префикс "L". Что он значит?
Ну Piece -- какой-то кусок (текста, наверное)? LPiece -- вероятно "длинный кусок" )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #19 : Декабрь 20, 2012, 01:11:53 pm »
P.S. Комментарии в коде - это плохо. Должно лежать "сбоку" пояснение по всем моментам, почему, что и как решено.
Без комментариев в коде - плохо.
Комментарии в коде - плохо.

Все плохо :-)

На самом деле степень степень подробности комментов в коде сильно зависит от того, кто код читает. Одному нужно будет по строчке комментов на строчку кода + большие шапки комментов у скажем процедур и модулей (в отдельном документе это все документировать - не вариант, в таком виде читать это не возможно, ибо нужно ОДНОВРЕМЕННО читать и код и коммент), другому же почти любой комментарий будет мусором на экране, код ему понятней. Общего универсального рецепта тут на самом деле нет.

Но осмелюсь дать несколько рекомендаций которые по крайней мере не сделают код хуже:
1) Если в коде используется какой-то известный но не тривиальный алгоритм (скажем поиск пути A*), то следует это указать - коментария будет ровно 1 строчка на много строк кода, а суть он пояснит лучше чем подробные комменты на каждой строчке.

2) Если используется какая-то кодировка/формат данных - то следует её описать: если это простой формат данных и его можно описать на двух-трех строчках кода, то это следует описать прямо в комменте, если не получается, то нужно дать в комменте ссылку на описание формата (соответственно если это известный формат, то достаточно названия этого формата).

3) Спецификация модуля должна быть отделена от реализации модуля и при этом гарантированно всегда согласована с реализацией (согласование на этапе компиляции). Соответственно комментарии в спецификации соответственно должны быть достаточно высокоуровневые (что и почему), а в реализации модуля комментарии к уже конкретной реализации (как).

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

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

Кроме того, при разработке ограниченным кругом не ставится задача облегчить любому из N заинтересованных посторонних лиц внесения интересующего его изменения с минимальными трудозатратами.
В стиле "захотел поменять - полез в нужное место - не понимая всего, понял только его - поменял - ура".
Предполагается, что общая модель системы загружена в голову.
Когда мне понадобился Kernel, я за пару дней сложил в голове такую модель...
А вот это в корне не правильный подход.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #20 : Декабрь 20, 2012, 01:26:23 pm »
Я не оправдываю стиль написания кода ББ-шных разработчиков. Они, видимо, попали в частый соблазн - когда хорошо спроектируешь интерфейсы, то думаешь, что "а похрен, что там и как внутри у этого кирпича будет". Не говоря про то, что идеи, бродившие в начале 90-х, были полностью "зациклены" на двоичной компонентности, при сокрытии исходного кода.
Что есть в корне не верно. Открытый компонент можно сделать на порядок проще, просто за счет того, что гибкость его обеспечивается не наворачиванием фич на все случаи жизни, а самой открытостью исходника. Кроме того, я пока не видел компонента, интерфейсы/абстракции которого не протекали бы. Ибо создатель никогда не знает в каких именно условиях это дело будут применять.

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

Я сам стремлюсь писать ясный и хорошо декомпонированный код, но обычно этого достигаю "расслаиванием" функционала по многим объектам-кубикам. Т.е. то, что тут уложено в один модуль TextModels, я бы расслоил слоя на три минимум.
Что ухудшило бы, возможно, его читабельность :-)
Как только расслаиваем, сразу появляется пачка проблем:

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

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

3) Там где у нас раньше было 3 модуля, теперь у нас 15ть. Часто так банально не удобно работать.

НО: я таки однозначно придерживаюсь принципа - "найди способ выразить мысль ясно напрямую кодом без комментариев".
А не выйдет. То есть выйдет конечно, но только с теми читателями кода, которые на той же волне что и ты. Как только у человека читающего восприятие чуть начинает отличаться от человека пишущего, так все, мысль кодом без комментов не выражается, качество восприятия становится сильно хуже. Причем таковым человеком читающий может оказаться тот, кто был лет 5 назад человеком пишущим этот код.

Собственно комменты нужны для того, чтобы настроить читающего на нужную волну. Одна строчка комментария может помочь посмотреть на код под правильным углом и сэкономит часы и дни времени.
Y = λf.(λx.f (x x)) (λx.f (x x))

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #21 : Декабрь 20, 2012, 01:31:18 pm »
Смысл -128 не разъясню с лёту.
А что тут разъяснять?  :)  Чем так мучаться, лучше уж ввести полноценный BYTE с областью значений от 0 до 255. Страхи, что после этого язык станет платформозависимым, считаю не оправданными. Понятие "байт" давно уже мигрировало во многие прикладные предметные области.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #22 : Декабрь 20, 2012, 01:32:02 pm »
Цитата: valexey
А не выйдет. То есть выйдет конечно, но только с теми читателями кода, которые на той же волне что и ты. Как только у человека читающего восприятие чуть начинает отличаться от человека пишущего, так все, мысль кодом без комментов не выражается, качество восприятия становится сильно хуже. Причем таковым человеком читающий может оказаться тот, кто был лет 5 назад человеком пишущим этот код.
+1000

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #23 : Декабрь 20, 2012, 01:33:20 pm »
Когда язык строгого стиля и не особо допускает многовариантности, то в итоге происходит некий спуск к некому единому стилю выражения мысли в коде. Когда код становится состоящим из узнаваемых "образцов" (тут во мне таки говорит методист, думающий о работе с уже наученными в едином стиле программистами :) ).
Так не бывает. Ну, то есть ты и пришел к единому стилю в коде (то есть твой код пишется в том же стиле что и твой код), ну, в крайнем случае я могу себе представить небольшой коллектив (ну максимум человек 5) у которых стиль единый стал из за долгой совместной работы.

Но вот чтобы стиль выражения мысли в коде стал единым для все пишущих на данном языке... Не бывает. См. хотя бы сколько нагенерили способов получить беззнаковое значение байта :-)

Т.е. хороший код без комментариев заставляет быть внимательным к своему смыслу.
Только вот чужой код без комментариев хорошим не бывает (особенно если его много, а времени чтобы разобраться в нем наоборот, мало). :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #24 : Декабрь 20, 2012, 01:47:48 pm »
По поводу комментариев хочу поделиться своими наблюдениями.
Когда я разбираю чужой код, то со всей утомительной подробностью вижу, ЧТО именно он делает. А вот вопрос  ЗАЧЕМ часто остаётся открытым. Перед функционально единым куском кода неплохо бы видеть коротенький комментарий, который раскрывает стратегическую, так сказать, цель этого куска кода.

Ну, и классика: "однострочный комментарий должен дополнять код, а не дублировать его". Ну, это и так понятно  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #25 : Декабрь 20, 2012, 01:52:50 pm »
о_О Ну всё равно остаётся вопрос -- почему они не использовали распространённую кодировку типа UTF8 или UCS-2?..

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #26 : Декабрь 20, 2012, 01:54:40 pm »
о_О Ну всё равно остаётся вопрос -- почему они не использовали распространённую кодировку типа UTF8 или UCS-2?..

У меня сложилось впечатление, что они просто использовали методу которая раньше юзалась для других целей, и случайно оказалась подходящей для кодирования юникода.
А ты уверен что там именно юникод?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #27 : Декабрь 20, 2012, 01:56:58 pm »
Ну, и классика: "однострочный комментарий должен дополнять код, а не дублировать его". Ну, это и так понятно  :)
Да это вообще к любому комменту относится :-) Кому нужен МНОГОСТРОЧНЫЙ комментарий дублирующий код?
Y = λf.(λx.f (x x)) (λx.f (x x))

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #28 : Декабрь 20, 2012, 02:05:05 pm »

Согласен. Многострочных комментариев я вообще стараюсь избегать. Ибо "вода" это :-)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #29 : Декабрь 20, 2012, 03:22:47 pm »
Вообще прикольная логика:
1. Берем юникодный текст
2. Символы < 256 кидаем в Piece. По байту на символ.
3. Символы >= 256 перекодируем. Те же 2 байта... но другие.... И кидаем в LPiece.

При чтении все наоборот.
1. Читаем Piece и LPiece
2. Piece берем как есть. Только байты толкаем в CHAR'ы
3. LPiece декодируем и тоже толкаем в CHAR'ы
4. Собираем все это в единый текст

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