Главная | Все статьи | Код

Ложь, в которую верят программисты

Время чтения статьи ~3 минуты
Ложь, в которую верят программисты главное изображение

Это перевод статьи Грэма Ли Falsehoods programmers believe about programming.

  • Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.
  • Софт — абсолютно техническая дисциплина
  • К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.
  • Позволить программировать людям, которые не такие как я, можно только путём «понижения планки».
  • Компилируемые языки программирования всегда быстрее.
  • Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.
  • Ок, они иногда приводят к ошибкам в числовых результатах.
  • Ладно, я понял, что вычисления с плавающей запятой просто неточные, а не ошибочные, мистер Педантичный Блогер, но я не знаю, что значит неточность.
  • Как минимум, результат целочисленного вычисления всегда определён.
  • Уговорил, он не определён. Но какой бы он там ни был, результат выполнения арифметического действия с двумя числами, каждое из которых помещается в регистр данных, сам помещается в регистр данных.
  • Каждый продающийся сегодня компьютер (2017), базируется на способе представления отрицательных чисел в дополнительном коде (во втором дополнении).
  • Каждый продающийся сегодня компьютер базируется на ширине регистра, величина которого кратна восьми битам.
  • баг не в моём коде.
  • баг не в библиотеке.
  • баг не в операционной системе.
  • баг не в компиляторе.
  • баг не в оболочке.
  • баг не в железе.
  • железо без багов абсолютно детерминировано.
  • строчки на жёсткой шине/мосте всегда по напряжению представляют либо 0, либо 1.
  • если тесты покрывают 100% строчек моего кода, мой код покрыт полноценно.
  • если тесты покрывают 100% утверждений, мой код покрыт полноценно.
  • если тесты покрывают 100% условий, мой код покрыт полноценно.
  • если я все покрыл тестами, то у меня нет багов.
  • если я все покрыл тестами, то мне не нужна система типов.
  • если я использую систему типов, то мне не нужно покрывать код тестами.
  • мою систему никто не хакнет.
  • информационная безопасность — это защита от хакеров.
  • проблема SQL injection решается заменой SQL. NoSQL injection невозможно.
  • мой проект — особенный, я могу отвергнуть методику, о которой я читал, без анализа.
  • мой проект больше похож на стартап-единорог или проект компании, вышедшей на биржу: я могу применить методику, о которой читал, даже не изучая её
  • люди, которые не используют тот же язык (технику, фреймворк, инструмент, методологию, парадигму, другой опыт), просто не понимают его.
  • любое метапрограммное расширение решается за адекватный отрезок времени.
  • любая сигнатура типа решается за адекватный отрезок времени.
  • ок, по крайней мере любое регулярное выражение решается за адекватный отрезок времени.
  • можно, хотя бы, пожалуйста, назвать эти регулярные выражения регулярными?

Я уверен, что существует больше заблуждений.

Update Всё, что написано ниже, было добавлено позже. То, что поддержали другие, отмечено ссылками.

  • Чтобы быть хорошим программистом, нужно получить степень в компьютерных науках.
  • Образование в сфере компьютерных наук ничего полезного программисту не приносит.
  • Функциональное программирование — это серебряная пуля.
  • Rust — это серебряная пуля.
  • Серебряная пуля существует.
  • Серебряной пули может и не быть.
  • Переписывание работающей софт-системы — хорошая идея.
  • Я могу написать крупную систему на memory unsafe языке без уязвимостей.
  • Я могу написать крупную систему на на memory safe языке языке без уязвимостей.
  • Софт — инженерная дисциплина.
  • Софт — научная дисциплина.
  • Дискуссия по теме стимулируется комментариями о том, что я уже знал факт, который был указан.
  • Лжезаключения о программировании не имеют значения, если автор таких лжезаключений не предоставит удовлетворяющие меня доказательства.
Аватар пользователя Natalia Bass
Natalia Bass 14 декабря 2017
0
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 25 апреля
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время