Это перевод статьи Грэма Ли Falsehoods programmers believe about programming.
- Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.
- Софт — абсолютно техническая дисциплина
- К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.
- Позволить программировать людям, которые не такие как я, можно только путём «понижения планки».
- Компилируемые языки программирования всегда быстрее.
- Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.
- Ок, они иногда приводят к ошибкам в числовых результатах.
- Ладно, я понял, что вычисления с плавающей запятой просто неточные, а не ошибочные, мистер Педантичный Блогер, но я не знаю, что значит неточность.
- Как минимум, результат целочисленного вычисления всегда определён.
- Уговорил, он не определён. Но какой бы он там ни был, результат выполнения арифметического действия с двумя числами, каждое из которых помещается в регистр данных, сам помещается в регистр данных.
- Каждый продающийся сегодня компьютер (2017), базируется на способе представления отрицательных чисел в дополнительном коде (во втором дополнении).
- Каждый продающийся сегодня компьютер базируется на ширине регистра, величина которого кратна восьми битам.
- баг не в моём коде.
- баг не в библиотеке.
- баг не в операционной системе.
- баг не в компиляторе.
- баг не в оболочке.
- баг не в железе.
- железо без багов абсолютно детерминировано.
- строчки на жёсткой шине/мосте всегда по напряжению представляют либо 0, либо 1.
- если тесты покрывают 100% строчек моего кода, мой код покрыт полноценно.
- если тесты покрывают 100% утверждений, мой код покрыт полноценно.
- если тесты покрывают 100% условий, мой код покрыт полноценно.
- если я все покрыл тестами, то у меня нет багов.
- если я все покрыл тестами, то мне не нужна система типов.
- если я использую систему типов, то мне не нужно покрывать код тестами.
- мою систему никто не хакнет.
- информационная безопасность — это защита от хакеров.
- проблема SQL injection решается заменой SQL. NoSQL injection невозможно.
- мой проект — особенный, я могу отвергнуть методику, о которой я читал, без анализа.
- мой проект больше похож на стартап-единорог или проект компании, вышедшей на биржу: я могу применить методику, о которой читал, даже не изучая её
- люди, которые не используют тот же язык (технику, фреймворк, инструмент, методологию, парадигму, другой опыт), просто не понимают его.
- любое метапрограммное расширение решается за адекватный отрезок времени.
- любая сигнатура типа решается за адекватный отрезок времени.
- ок, по крайней мере любое регулярное выражение решается за адекватный отрезок времени.
- можно, хотя бы, пожалуйста, назвать эти регулярные выражения регулярными?
Я уверен, что существует больше заблуждений.
Update Всё, что написано ниже, было добавлено позже. То, что поддержали другие, отмечено ссылками.
- Чтобы быть хорошим программистом, нужно получить степень в компьютерных науках.
- Образование в сфере компьютерных наук ничего полезного программисту не приносит.
- Функциональное программирование — это серебряная пуля.
- Rust — это серебряная пуля.
- Серебряная пуля существует.
- Серебряной пули может и не быть.
- Переписывание работающей софт-системы — хорошая идея.
- Я могу написать крупную систему на memory unsafe языке без уязвимостей.
- Я могу написать крупную систему на на memory safe языке языке без уязвимостей.
- Софт — инженерная дисциплина.
- Софт — научная дисциплина.
- Дискуссия по теме стимулируется комментариями о том, что я уже знал факт, который был указан.
- Лжезаключения о программировании не имеют значения, если автор таких лжезаключений не предоставит удовлетворяющие меня доказательства.