Подписка на блог

В Телеграме помимо ссылок на заметки делюсь околодизайнерскими наблюдениями.

В Твиттере помимо ссылок на заметки пишу всякую чушь.

В Тумблере и Же-же есть автоматические трансляции. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

По РСС и Джейсон-фиду трансляции для автоматических читалок

Биты, Болк и Уникод

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

Если вы читаете по-английски, я рекомедую всё же Сполского, у него понятнее и последовательнее. Главное, что Джоел обращает внимание на разницу между таблицей символов (то есть тем, какому номеру соответствует какой символ) и кодировкой (то есть тем, как именно эти номера упаковываются в байты). Это позволяет сразу понять, что не бывает кодировки «Уникод», что это как «Эйч-ди» — просто маркетинговый термин, значение которого нужно выяснять в каждом случае заново.

Кстати, слова байт и бит в родительном (не счётном) падеже множественного числа будут: байтов, битов. Ещё Болк ошибается, говоря, что в одном байте можно уложить числа до 256 (на самом деле до 255); в двух — до 65536 (на самом деле до 65535); что информации меньше бита не бывает (на самом деле бывает).

Добавлено в 15:41: Ну вот, щас Болк все косяки исправит и моя заметка потеряет смысл.
Подписаться на блог
Поделиться
Отправить
27 комментариев
BOLK
В байте укладывается 256 чисел: от нуля до 255, ну а про полбита — это просто лажа :)

Кодировка «Уникод» всё же бывает — это стандарт с таким названием.
Илья Бирман
От 0 до 255, совершенно верно. В заметке у тебя сказано иное.
BOLK
Да, какой-то баг в голове, не увидел это место, когда вычитывал. Поправил, спасибо!
Oleg Andreev
В байте укладывается 256 чисел от 42 до 297.
Илья Бирман
От 42 до 188 и от далее от 41432534627 до 41432534734, а байт со всеми включенными единицами означает число Пи в квадрате.
BOLK
Про «меньше бита» и «нет такой кодировки» не исправлю :)
BOLK
Олег, это совершенно неважно как называется первое число — «один» или «сорок два». И уж тем более это не важно в статье про Unicode. Перемещение точки отсчёта ничего не мешает.
Oleg Andreev
Да я знаю. Просто в одном байте можно-таки уложить числа до 256 :-)
Илья Бирман
Ты говоришь про интерпретацию байта, а не про фактическое двоичное число, записанное его битами. Записать число 256 восьмизначным двоичным числом невозможно. А в остальном — да, в байте может вместиться 256 самых популярных фильмов в эйч-ди качестве (что бы это ни значило) и с субтитрами на всех языках. Только тогда «интерпретатор» этого замечательного байта будет представлять собой массив из нескольких жёстких дисков.
Baka
> Ты говоришь про интерпретацию байта, а не про фактическое двоичное число, записанное его битами.
«фактическое двоичное число» — это уже интерпретация. Сам байт — это только (упорядоченный) набор битов.
Раньше байт (когда означал число со знаком) вообще только 255 чисел обозначал (точнее, нулей было два — положительный и отрицательный).
Илья Бирман
«Раньше» — это в какой архитектуре? Число со знаком записывают так, чтобы после 127 (0111 1111) шло -128 (1000 0000) и далее до -1 (1111 1111). Отрицательного нуля при этом никакого нет.
Spectator
Ага, заметка Болка не блестящая!
Илья Бирман
В том-то и дело!
BOLK
У нас со Спольски разные цели, ага :)
Илья Бирман
Зачем мягкий знак?
Сергей М.
Наверное, про отрицательные нули — это про три способа представления отрицательных чисел: прямой, обратный и дополнительный. Вот только используется именно дополнительный код — как Илья и описал.
Алик Кириллович
>Если вы читаете по-английски, я рекомедую всё же Сполского

Ну так, для тех, кто вдруг не читает по-английски, эта заметка есть и по-русски:

Во-первых, на русском «Joel on Software Translation Project»: http://local.joelonsoftware.com/wiki/Абсолютный_Минимум,_который_Каждый_Разработчик_Программного_Обеспечения_Обязательно_Должен_Знать_о_Unicode_и_Наборах_Символов

Во-вторых, в его книге «Джоэл о программировании».

В следующей книге «Джоэл: и снова о программировании» этой статьи уже нет.
Илья Бирман
Джоел в переводе — это извращение.
Олег Французов
Я знаю о вашей неприязни к букве «э», но почему всё-таки «Джоел»? По общим правилам «е» после гласной йотируется, а автора статьи про юникод зовут отнюдь не /джоjел/.
Илья Бирман
Наверное, вы правы. Ну я как-то так уж пишу его :-)
BOLK
У Спольски (не знаю почему мягкий знак, так привык и см. http://ru.wikipedia.org/wiki/Спольски) как обычно — много воды и истории, хотя написана она очень гладко, мне так ещё учиться. Я как раз пролистал статью.
Илья Бирман
Я всегда писал Сполски, а после прочтения книжки про иностранные имена и названия, стал его ещё и склонять, как если бы он был «Сполский». Мягкому знаку совсем, кажется, неоткуда взяться. А ты его и произносишь так, с мягким л?.. :-/

Статья в Википедии — совсем левачная: там написано, что он преимущественно пишет о программировании под Виндоус :-)
Алексей
1 бит информации — это такое её количество, которое уменьшает неопределенность в 2 раза.
Откуда взято определение?

Предположим я сказал собеседнику что мне 20 лет «просто так». Если он не задумывался над этим вопросом, то сколько бит информации я передал и какую неопределенность я уменьшил, и во сколько раз?
Собеседник думает: «В интервале от 0 до 49 ему 20 лет». Я передал ему ровно один бит информации = мне 20 лет. Интервал неопределенности у человека в голове, по твоей логике, влияет на количество информации которая переданна фразой «мне 20 лет».
Этой фразой я не передал 50 бит, уменьшив неопределенность «от 0 до 49» в 50 раз, а передал всего 1. Условие и ответ в битовом соотношении не связаны, это не шифр и не иероглиф.
Не важно как воспримется другим человеком ответ 42 «на главный вопрос жизни, вселенной и всего такого». Я этим ответом передал 1 бит.
 
Илья Бирман
Ваши предтавления об одном бите вообще какие-то сногсшибательные.

Говоря человеку, что вам 20 лет, вы передаёте около 6 бит информации. Ну, если он вас не видит перед собой. А если видит — то 3-4 бита, не больше.
Алексей
1 бит — огрубление. Мне тяжело дать точное значение, под этим я подразумевал какое-то конкретное число.

А как вы рассчитывали количество бит в случаях видит/не видит?

Илья Бирман
Огрубление до полной утраты смысла, ага. Какое число под чем вы подразумевали я понять не могу.

Рассчитывал — очень просто. Человек, живёт сколько-то лет. Это число так или иначе близко к 64. Таким образом, называя конкретный возраст, вы уменьшаете неопределённость в 64 раза, и, стало быть, передаёте 6 бит информации. Возможно, чуть больше, но всяко меньше 7 бит, т. к. 128 лет не живут. Если же человек вас видит, то он может прикинуть, сколько вам лет, соответственно изначальная неопределённость поменьше.
Степан Легачёв
Алексей, самое забавное случается тогда, когда люди начинают измерять свои фразы битами и байтами. Нелегко ведь спорить с тем, что рассказ Чехова на самом деле не «весит» 1200 байтов, а уменьшает неопределённость в стопицот раз :-)
BOLK
Так и произношу, с мягким. Скорее всего, мягкий знак теряется именно при записи латиницей. Не зря же его все с мягким пишут и произносят, скорее всего его фамилия именно так и читается.
Илья Бирман
Кто такие все? Я не слышал, чтобы его кто-то произносил с мягким, это же бред полный.

Фамилия американца не может читаться с мягким „л“ в принципе — такого звука нет в английком языке. В их подкасте его фамилия звучит, естественно, только с твёрдым „л“, нет никакого другого „л“.
BOLK
Илья, 128 лет (и даже больше), конечно же живут. И прямо сейчас есть несколько долгожителей, переваливших за этот возраст.
BOLK
Все вокруг меня. На столе у меня лежит книга, на ней написано «Джоэль Спольски». В английском она звучит без мягкого знака, но это ещё не значит, что человека зовут именно так. Т. е. от гражданства или места жительства звучание не меняется.
Максим
Спольский — фамилия польского происхождения, и она должна писаться с мягким знаком. Пример: Лукаш Подольский, футболист сборной Германии.
Николай Товеровский
Илья, так в e2 будет «hope of working with text in any language other than the subset of English that doesn’t include words with accents»?
Сергей Даровских
Фамилия читается так, как захочет ее автор, тот же родившийся в Польше Лукаш Подольски всю жизнь живет в Германии и в собственном блоге называет себя Лукасом, даже когда пишет по-польски (т. е. со всей диакритикой).

Что касается JS, то мне тоже больше нравится «Джоэль Спольски». Насколько я могу судить, в русском согласная перед «-ски» в польских фамилиях чаще всего смягчается — см. того же Подольски.
Илья Бирман
А почему считается, что фамилия польская? Любая согласная смягчается или только „л“? Спасибо.
Сергей Даровских
А как иностранцы определяют, что Иванов — русская фамилия? :) Хотя, как минимум, в Болгарии она тоже очень распространена. Ну как-то по виду. Хотя, конечно, если человек американец в третьем поколении, то польское влияние на произношение фамилии будет минимальным.

А насчет смягчения — не знаю, я вот штук десять таких польских фамилий придумал, вроде бы смягчается только «л» (Брыльска, Подольски, Ковальски). А вот американский хоккеист Рафалски без всяких смягчений обычно пишется/произносится.
Илья Бирман
Поколение я не знаю, а чувак при этом еврей вдобавок. Это что-нибудь меняет / добавляет? :-)
Сергей Даровских
нет уж, с евреями сами разбирайтесь! )
BOLK
Евреи каких только фамилий не брали, польские — в том числе. Кроме того, у евреев так хитро всё устроено, что ты среди евреев можешь считаться евреем, а среди русских — русским (а можешь и наоборот, это уже трагедия).
Илья Бирман
Наоборот — это мой случай. В чём трагедия?
BOLK
Сейчас (в наше поколение) антисемитизм, наверное, не так чувствуется, а вот мой друг (ему за 50), страдает от этого сильно: община евреев его за своего не признаёт, а антисемиты шипят сквозь зубы.
Илья Бирман
Понятно.
Алексей
Когда сидел на парах понял свои ошибки.
«1 бит уменьшает неопределнность в два раза» — это четвертое открытие, после 0^0=1, 0,(9)=1 и 0!=1.
Вообщем, спасибо Илья :-) 

Пользовательский интерфейс
Доступны три раздела
электронного учебника

Популярное