Entry tags:
free encoding capacity
Дипломная в универе у меня была связана с компрессией данных, а конкретнее - теста.
Об избыточности дефолтного кодирования, исследовании "дисбаланса" наличных данных и создании такой модели данных, которая лучше (т.е. плотнее) использует наличное кодовое пространство. Теория Шеннона, код Шеннона-Фано, Хаффмана, Арифметическое кодирование... - вот это всё.
Сегодня на рассвете до меня наконец дошло, что то, чем я прямо сейчас занимаюсь (изобретаю язык программирования), имеет очень реальную связь с теми идеями о кодировании. Но... with a twist. А именно, я наконец-то понял, откуда в языках программирования возникают всякие уродливые формы синтаксического эскейпинга.
Например: команда на каком-нибудь Bash делится на отдельные параметры пробелом. А что, если пробел должен входить в один из параметров? Закавычим. А что, если кавычка тоже входит в параметр? Заэскейпим или закавычим другими кавычками. А что, если другая кавычка тоже? Заэскейпим. И так далее. Чем дальше в лес, тем менее красиво, и тем больше связанных с этим сложностей (хотя тем реже, конечно). В случаях, когда нужно насквозь записать строку, которая вынужденно пройдёт 3-4 уровня "деструктивной интерпретации", хочется стреляться.
Так вот, до меня дошла, как сказать, глубинная причина этого феномена. Состоит она в том, что при создании новых языков мы опираемся на заведомо пересыщенный алфавит. Всё в этом алфавите возможно, любые символы могут встречаться. И новый язык, рождающийся над этим алфавитом, вынужден тесниться ещё в утробе. А это, (эксплетив), неправильно! Алфавит должен "дышать" - его нужно изначально создавать в расчёте на возможное расширение, даже в НАДЕЖДЕ на будущее расширение, с большим количеством запасных символов. Давно прошли времена, когда критически не хватало модемного времени или места на магнитной ленте. Да, память кончается, но если посмотреть, как её уже транжирят, возжи можно и подотпустить. Десяток-другой разноцветных пробелов или кавычек легко решат все эти проблемы, а для текстовых кодировок это совсем небольшая жертва.
Пример спланированной избыточности в окружающей нас технологии: на большинстве клавиатур есть целый ряд переназначаемых клавиш F1..F12, а то и больше. Они дошли до нас из седых 60х, и очень нехотя вытесняются всякими тачбарами. Многие пользователи не знают, что с ними делать, но художники, фотографы или видеомонтажёры за них пасть порвут и моргала выколят. И недаром!
Об избыточности дефолтного кодирования, исследовании "дисбаланса" наличных данных и создании такой модели данных, которая лучше (т.е. плотнее) использует наличное кодовое пространство. Теория Шеннона, код Шеннона-Фано, Хаффмана, Арифметическое кодирование... - вот это всё.
Сегодня на рассвете до меня наконец дошло, что то, чем я прямо сейчас занимаюсь (изобретаю язык программирования), имеет очень реальную связь с теми идеями о кодировании. Но... with a twist. А именно, я наконец-то понял, откуда в языках программирования возникают всякие уродливые формы синтаксического эскейпинга.
Например: команда на каком-нибудь Bash делится на отдельные параметры пробелом. А что, если пробел должен входить в один из параметров? Закавычим. А что, если кавычка тоже входит в параметр? Заэскейпим или закавычим другими кавычками. А что, если другая кавычка тоже? Заэскейпим. И так далее. Чем дальше в лес, тем менее красиво, и тем больше связанных с этим сложностей (хотя тем реже, конечно). В случаях, когда нужно насквозь записать строку, которая вынужденно пройдёт 3-4 уровня "деструктивной интерпретации", хочется стреляться.
Так вот, до меня дошла, как сказать, глубинная причина этого феномена. Состоит она в том, что при создании новых языков мы опираемся на заведомо пересыщенный алфавит. Всё в этом алфавите возможно, любые символы могут встречаться. И новый язык, рождающийся над этим алфавитом, вынужден тесниться ещё в утробе. А это, (эксплетив), неправильно! Алфавит должен "дышать" - его нужно изначально создавать в расчёте на возможное расширение, даже в НАДЕЖДЕ на будущее расширение, с большим количеством запасных символов. Давно прошли времена, когда критически не хватало модемного времени или места на магнитной ленте. Да, память кончается, но если посмотреть, как её уже транжирят, возжи можно и подотпустить. Десяток-другой разноцветных пробелов или кавычек легко решат все эти проблемы, а для текстовых кодировок это совсем небольшая жертва.
Пример спланированной избыточности в окружающей нас технологии: на большинстве клавиатур есть целый ряд переназначаемых клавиш F1..F12, а то и больше. Они дошли до нас из седых 60х, и очень нехотя вытесняются всякими тачбарами. Многие пользователи не знают, что с ними делать, но художники, фотографы или видеомонтажёры за них пасть порвут и моргала выколят. И недаром!
no subject
no subject
Думаю, ретрофит этого дела в существующие языки тоже можно было бы организовать при желании, но нормально только там, где Беневолентный Диктатор сможет своим авторитетом (или какой у него там беневолентный инструмент) подавить возможные разногласия.