• Понимание собственного кода

      Перевод статьи Эли Бендерски — Understanding your own code.

      Недавно я столкнулся с утверждением, которое меня сильно озадачило. Один программист с гордостью заявил, что не может понять ни малейшего куска кода, написанного им неделю назад. Я честно попытался понять, откуда исходит эта гордость, но так и не смог. Он гордился тем, что пишет столько кода каждый день? Это кто же готов платить ему за то, что он просто пишет код?
      Читать дальше →
    • Разбираемся с прямым и обратным порядком байтов

        Перевод статьи Халида Азада — Understanding Big and Little Endian Byte Order

        Проблемы с порядком байтов очень расстраивают, и я хочу избавить Вас от горя, которое довелось испытать мне. Вот ключевые тезы:
        • Проблема: Компьютеры, как и люди, говорят на разных языках. Одни записывают данные “слева направо” другие “справа налево”. При этом каждое устройство отлично считывает собственные данные — проблемы начинаются, когда один компьютер сохраняет данные, а другой пытается эти данные считать.
        • Решение: Принять некий общий формат (например, весь сетевой трафик передается в едином формате). Или всегда добавлять заголовок, описывающий формат хранения данных. Если считанный заголовок имеет обратный порядок, значит данные сохранены в другом формате и должны быть переконвертированы.

        Читать дальше →
      • Спагетти-статья о спагетти-коде

        • Перевод
        image

        Перевод статьи Майкла О. Черча — What is spaghetti code?

        Самый простой способ для эпитета утратить свое первоначальное значение — это стать чрезмерно широким, начать означать чуть больше, нежели просто “мне это не нравится”. Речь идет о термине “спагетти-код”, который люди часто используют как синоним к понятию “плохой код”. Проблема в том, что не всякий плохой код является спагетти-кодом. Спагетти-код — это особенно опасный и специфический вид плохого кода, и его особое зло заключается в самом способе разработки нами программного обеспечения. Почему? Потому что отдельно взятые люди редко пишут спагетти-код самостоятельно. Скорее, определенный стиль в разработке делает его все более распространенным со временем. Для того, чтобы понять это, нужно рассмотреть первоначальный контекст, в котором было определено понятие “спагетти-код” — ужасное (и в основном архаичное) использование оператора goto.
        Читать дальше →
      • Разбираемся в С, изучая ассемблер

        • Tutorial
        Перевод статьи Девида Альберта — Understanding C by learning assembly.

        В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

        Уровни абстракции — это отличные средства для построения вещей, но иногда они могут стать преградой на пути изучения. Цель этого поста состоит в том, чтобы убедить Вас, что для твердого понимания C нужно так же хорошо понимать ассемблерный код, который генерирует Ваш компилятор C. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
        Читать дальше →
      • Изучаем С используя GDB

        • Tutorial
        Перевод статьи Аллана О’Доннелла Learning C with GDB.

        На фоне таких высокоуровневых языков, как Ruby, Scheme или Haskell, изучение C может оказаться настоящим испытанием. В придачу к преодолению высокоуровневых особенностей C, таких как ручное управление памятью и указатели, вы еще должны обходиться без REPL. Как только Вы привыкнете к исследующему программированию в REPL, иметь дело с циклом написал-скомпилировал-запустил будет для Вас небольшим разочарованием.

        С недавнего времени, мне пришла в голову идея, что я мог бы использовать GDB как псевдо-REPL для C. Я немного поэкспериментировал, используя GDB как инструмент для изучения языка, а не просто отладки С, и это принесло мне много веселья.
        Читать дальше →
      • Хакер-математик

        Перевод статьи Эвана Миллера — The Mathematiclal Hacker.

        Профессия программиста благословенна большим числом одаренных авторов. Сегодня я остановлю свое внимание на трех моих любимых — Эрике Реймонде, Поле Грэме и Стиве Йегге. Сделаю я это потому что они, как мне кажется, не сходятся со мной во мнении о том, что математика имеет значение (и будет иметь) для программиста-практика.
        Читать дальше →