Биты, Болк и Уникод
Тем, кто плохо учился в школе, т. е. не читал блестящей заметки Сполского про Уникод, может пригодиться заметка Болка.
Если вы читаете по-английски, я рекомедую всё же Сполского, у него понятнее и последовательнее. Главное, что Джоел обращает внимание на разницу между таблицей символов (то есть тем, какому номеру соответствует какой символ) и кодировкой (то есть тем, как именно эти номера упаковываются в байты). Это позволяет сразу понять, что не бывает кодировки «Уникод», что это как «Эйч-ди» — просто маркетинговый термин, значение которого нужно выяснять в каждом случае заново.
Кстати, слова байт и бит в родительном (не счётном) падеже множественного числа будут: байтов, битов. Ещё Болк ошибается, говоря, что в одном байте можно уложить числа до 256 (на самом деле до 255); в двух — до 65536 (на самом деле до 65535); что информации меньше бита не бывает (на самом деле бывает).
Добавлено в 15:41: Ну вот, щас Болк все косяки исправит и моя заметка потеряет смысл.
В байте укладывается 256 чисел: от нуля до 255, ну а про полбита — это просто лажа :)
Кодировка «Уникод» всё же бывает — это стандарт с таким названием.
От 0 до 255, совершенно верно. В заметке у тебя сказано иное.
Да, какой-то баг в голове, не увидел это место, когда вычитывал. Поправил, спасибо!
В байте укладывается 256 чисел от 42 до 297.
От 42 до 188 и от далее от 41432534627 до 41432534734, а байт со всеми включенными единицами означает число Пи в квадрате.
Про «меньше бита» и «нет такой кодировки» не исправлю :)
Олег, это совершенно неважно как называется первое число — «один» или «сорок два». И уж тем более это не важно в статье про Unicode. Перемещение точки отсчёта ничего не мешает.
Да я знаю. Просто в одном байте можно-таки уложить числа до 256 :-)
Ты говоришь про интерпретацию байта, а не про фактическое двоичное число, записанное его битами. Записать число 256 восьмизначным двоичным числом невозможно. А в остальном — да, в байте может вместиться 256 самых популярных фильмов в эйч-ди качестве (что бы это ни значило) и с субтитрами на всех языках. Только тогда «интерпретатор» этого замечательного байта будет представлять собой массив из нескольких жёстких дисков.
«фактическое двоичное число» — это уже интерпретация. Сам байт — это только (упорядоченный) набор битов.
Раньше байт (когда означал число со знаком) вообще только 255 чисел обозначал (точнее, нулей было два — положительный и отрицательный).
«Раньше» — это в какой архитектуре? Число со знаком записывают так, чтобы после 127 (0111 1111) шло -128 (1000 0000) и далее до -1 (1111 1111). Отрицательного нуля при этом никакого нет.
Ага, заметка Болка не блестящая!
В том-то и дело!
У нас со Спольски разные цели, ага :)
Зачем мягкий знак?
Наверное, про отрицательные нули — это про три способа представления отрицательных чисел: прямой, обратный и дополнительный. Вот только используется именно дополнительный код — как Илья и описал.
Ну так, для тех, кто вдруг не читает по-английски, эта заметка есть и по-русски:
Во-первых, на русском «Joel on Software Translation Project»: http://local.joelonsoftware.com/wiki/Абсолютный_Минимум,_который_Каждый_Разработчик_Программного_Обеспечения_Обязательно_Должен_Знать_о_Unicode_и_Наборах_Символов
Во-вторых, в его книге «Джоэл о программировании».
В следующей книге «Джоэл: и снова о программировании» этой статьи уже нет.
Джоел в переводе — это извращение.
Я знаю о вашей неприязни к букве «э», но почему всё-таки «Джоел»? По общим правилам «е» после гласной йотируется, а автора статьи про юникод зовут отнюдь не /джоjел/.
Наверное, вы правы. Ну я как-то так уж пишу его :-)
У Спольски (не знаю почему мягкий знак, так привык и см. 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 байтов, а уменьшает неопределённость в стопицот раз :-)
Так и произношу, с мягким. Скорее всего, мягкий знак теряется именно при записи латиницей. Не зря же его все с мягким пишут и произносят, скорее всего его фамилия именно так и читается.
Кто такие все? Я не слышал, чтобы его кто-то произносил с мягким, это же бред полный.
Фамилия американца не может читаться с мягким „л“ в принципе — такого звука нет в английком языке. В их подкасте его фамилия звучит, естественно, только с твёрдым „л“, нет никакого другого „л“.
Илья, 128 лет (и даже больше), конечно же живут. И прямо сейчас есть несколько долгожителей, переваливших за этот возраст.
Все вокруг меня. На столе у меня лежит книга, на ней написано «Джоэль Спольски». В английском она звучит без мягкого знака, но это ещё не значит, что человека зовут именно так. Т. е. от гражданства или места жительства звучание не меняется.
Спольский — фамилия польского происхождения, и она должна писаться с мягким знаком. Пример: Лукаш Подольский, футболист сборной Германии.
Илья, так в e2 будет «hope of working with text in any language other than the subset of English that doesn’t include words with accents»?
Фамилия читается так, как захочет ее автор, тот же родившийся в Польше Лукаш Подольски всю жизнь живет в Германии и в собственном блоге называет себя Лукасом, даже когда пишет по-польски (т. е. со всей диакритикой).
Что касается JS, то мне тоже больше нравится «Джоэль Спольски». Насколько я могу судить, в русском согласная перед «-ски» в польских фамилиях чаще всего смягчается — см. того же Подольски.
А почему считается, что фамилия польская? Любая согласная смягчается или только „л“? Спасибо.
А как иностранцы определяют, что Иванов — русская фамилия? :) Хотя, как минимум, в Болгарии она тоже очень распространена. Ну как-то по виду. Хотя, конечно, если человек американец в третьем поколении, то польское влияние на произношение фамилии будет минимальным.
А насчет смягчения — не знаю, я вот штук десять таких польских фамилий придумал, вроде бы смягчается только «л» (Брыльска, Подольски, Ковальски). А вот американский хоккеист Рафалски без всяких смягчений обычно пишется/произносится.
Поколение я не знаю, а чувак при этом еврей вдобавок. Это что-нибудь меняет / добавляет? :-)
нет уж, с евреями сами разбирайтесь! )
Евреи каких только фамилий не брали, польские — в том числе. Кроме того, у евреев так хитро всё устроено, что ты среди евреев можешь считаться евреем, а среди русских — русским (а можешь и наоборот, это уже трагедия).
Наоборот — это мой случай. В чём трагедия?
Сейчас (в наше поколение) антисемитизм, наверное, не так чувствуется, а вот мой друг (ему за 50), страдает от этого сильно: община евреев его за своего не признаёт, а антисемиты шипят сквозь зубы.
Понятно.
Когда сидел на парах понял свои ошибки.
«1 бит уменьшает неопределнность в два раза» — это четвертое открытие, после 0^0=1, 0,(9)=1 и 0!=1.
Вообщем, спасибо Илья :-)