[Перевод] 7 ложных предположений о том, как устроены строки
Как Unicode уничтожает большинство ваших предположений о том, как на самом деле работают строки
Когда речь идет о написании чего-то простого, мы, программисты, обычно действуем интуитивно. В случае с простыми вещами мы полагаемся на четкий набор предположений вместо конкретных знаний о том, как эти вещи работают. Например, мы предполагаем, что если b = a + 1, то b больше a, или что если мы применим функцию malloc для какого-то буфера, то получим необходимое количество памяти для записи. Мы не заглядываем в документацию всякий раз, когда имеем дело с мелочами.
Мы делаем так, потому что тотальная проверка замедлит работу. Однако если бы мы все-таки провели проверку, мы бы обнаружили, что обычно ошибаемся в своих предположениях. Существует арифметическое переполнение, в результате которого a + 1 может быть значительно меньше, чем a. Иногда malloc дает нам null вместо буфера и мы оказываемся в пролете.
Нам обычно приходится обжечься на таких вещах, чтобы хотя бы немного изменить свои предположения. И даже тогда мы обычно исправляем их весьма условно.
Столкнувшись с досадной ошибкой переполнения, мы можем скорректировать свое предположение о целых числах в виде «a + 1 больше a, если отсутствует вероятность, при которой a представляет собой очень большое число». И мы действуем исходя из этого, вместо того, чтобы обдумать четкие правила, по которым работает переполнение.
Уточненные предположения – это опыт. Чаще всего они позволяют нам работать быстрее и правильнее. Однако мы можем вообще переместить некоторые вещи, например, правильную обработку malloc, из нашей внутренней категории «простые вещи» во внутреннюю категорию «сложные вещи». И тогда мы действительно можем пойти и уточнить, как они работают.
Читать дальше →Источник: Хабрахабр
Похожие новости
- Кадровый голод в сегменте маркетинговых услуг
- Как брендам вести канал в Дзене в 2024 году
- Таргетированные SMS-рассылки как замена заблокированным и перегретым каналам продвижения
- Brand Hub запустил первый национальный рейтинг брендинговых агентств
- Как проявляется сезонность в email-рассылках
- Магазин электроники разместил товарные фиды в Яндекс Поиске и увеличил заказы на 39%
- Увеличили конверсии из поиска в 3 раза за две недели: кейс PromoPult
- TOTP без смартфона, послесловие
- Как обогнать агрегаторы в поисковой выдаче за счет SEO-продвижения?
- Никому нельзя верить на слово в безопасной разработке, или Еще один взгляд на SCA