0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><em>Это перевод статьи Грэма Ли<a>Falsehoods programmers believe about programming</a>.</em></p>
1
<p><em>Это перевод статьи Грэма Ли<a>Falsehoods programmers believe about programming</a>.</em></p>
2
<ul><li>Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.</li>
2
<ul><li>Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.</li>
3
<li>Софт - абсолютно техническая дисциплина</li>
3
<li>Софт - абсолютно техническая дисциплина</li>
4
<li>К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.</li>
4
<li>К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.</li>
5
<li>Позволить программировать людям, которые не такие как я, можно только путём "понижения планки".</li>
5
<li>Позволить программировать людям, которые не такие как я, можно только путём "понижения планки".</li>
6
<li><a>Компилируемые языки программирования всегда быстрее</a>.</li>
6
<li><a>Компилируемые языки программирования всегда быстрее</a>.</li>
7
<li>Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.</li>
7
<li>Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.</li>
8
<li>Ок, они<em>иногда</em>приводят к ошибкам в числовых результатах.</li>
8
<li>Ок, они<em>иногда</em>приводят к ошибкам в числовых результатах.</li>
9
<li>Ладно, я понял, что вычисления с плавающей запятой просто<em>неточные</em>, а<em>не ошибочные</em>, мистер Педантичный Блогер, но я не знаю, что<em>значит</em>неточность.</li>
9
<li>Ладно, я понял, что вычисления с плавающей запятой просто<em>неточные</em>, а<em>не ошибочные</em>, мистер Педантичный Блогер, но я не знаю, что<em>значит</em>неточность.</li>
10
<li>Как минимум, результат<em>целочисленного</em>вычисления всегда определён.</li>
10
<li>Как минимум, результат<em>целочисленного</em>вычисления всегда определён.</li>
11
<li>Уговорил, он не определён. Но какой бы он там ни был, результат выполнения арифметического действия с двумя числами, каждое из которых помещается в регистр данных, сам помещается в регистр данных.</li>
11
<li>Уговорил, он не определён. Но какой бы он там ни был, результат выполнения арифметического действия с двумя числами, каждое из которых помещается в регистр данных, сам помещается в регистр данных.</li>
12
<li>Каждый продающийся сегодня компьютер (2017),<a>базируется на способе представления отрицательных чисел в дополнительном коде (во втором дополнении)</a>.</li>
12
<li>Каждый продающийся сегодня компьютер (2017),<a>базируется на способе представления отрицательных чисел в дополнительном коде (во втором дополнении)</a>.</li>
13
<li>Каждый продающийся сегодня компьютер<a>базируется на ширине регистра, величина которого кратна восьми битам</a>.</li>
13
<li>Каждый продающийся сегодня компьютер<a>базируется на ширине регистра, величина которого кратна восьми битам</a>.</li>
14
<li>баг не в моём коде.</li>
14
<li>баг не в моём коде.</li>
15
<li>баг не в библиотеке.</li>
15
<li>баг не в библиотеке.</li>
16
<li>баг не в операционной системе.</li>
16
<li>баг не в операционной системе.</li>
17
<li>баг не в компиляторе.</li>
17
<li>баг не в компиляторе.</li>
18
<li>баг не в оболочке.</li>
18
<li>баг не в оболочке.</li>
19
<li>баг не в железе.</li>
19
<li>баг не в железе.</li>
20
<li>железо без багов абсолютно детерминировано.</li>
20
<li>железо без багов абсолютно детерминировано.</li>
21
<li>строчки на жёсткой шине/мосте всегда по напряжению представляют либо 0, либо 1.</li>
21
<li>строчки на жёсткой шине/мосте всегда по напряжению представляют либо 0, либо 1.</li>
22
<li>если тесты покрывают 100% строчек моего кода, мой код покрыт полноценно.</li>
22
<li>если тесты покрывают 100% строчек моего кода, мой код покрыт полноценно.</li>
23
<li>если тесты покрывают 100% утверждений, мой код покрыт полноценно.</li>
23
<li>если тесты покрывают 100% утверждений, мой код покрыт полноценно.</li>
24
<li>если тесты покрывают 100% условий, мой код покрыт полноценно.</li>
24
<li>если тесты покрывают 100% условий, мой код покрыт полноценно.</li>
25
<li>если я все покрыл тестами, то у меня нет багов.</li>
25
<li>если я все покрыл тестами, то у меня нет багов.</li>
26
<li>если я все покрыл тестами, то мне<a>не нужна система типов</a>.</li>
26
<li>если я все покрыл тестами, то мне<a>не нужна система типов</a>.</li>
27
<li>если я использую систему типов, то мне<a>не нужно покрывать код тестами</a>.</li>
27
<li>если я использую систему типов, то мне<a>не нужно покрывать код тестами</a>.</li>
28
<li>мою систему никто не хакнет.</li>
28
<li>мою систему никто не хакнет.</li>
29
<li>информационная безопасность - это защита от хакеров.</li>
29
<li>информационная безопасность - это защита от хакеров.</li>
30
<li>проблема SQL injection решается заменой SQL. NoSQL injection невозможно.</li>
30
<li>проблема SQL injection решается заменой SQL. NoSQL injection невозможно.</li>
31
<li>мой проект - особенный, я могу отвергнуть методику, о которой я читал, без анализа.</li>
31
<li>мой проект - особенный, я могу отвергнуть методику, о которой я читал, без анализа.</li>
32
<li>мой проект больше похож на стартап-единорог или проект компании, вышедшей на биржу: я могу применить методику, о которой читал, даже не изучая её</li>
32
<li>мой проект больше похож на стартап-единорог или проект компании, вышедшей на биржу: я могу применить методику, о которой читал, даже не изучая её</li>
33
<li>люди, которые не используют тот же язык (технику, фреймворк, инструмент, методологию, парадигму, другой опыт), просто не понимают его.</li>
33
<li>люди, которые не используют тот же язык (технику, фреймворк, инструмент, методологию, парадигму, другой опыт), просто не понимают его.</li>
34
<li>любое метапрограммное расширение решается за адекватный отрезок времени.</li>
34
<li>любое метапрограммное расширение решается за адекватный отрезок времени.</li>
35
<li>любая сигнатура типа решается за адекватный отрезок времени.</li>
35
<li>любая сигнатура типа решается за адекватный отрезок времени.</li>
36
<li>ок, по крайней мере любое<em>регулярное выражение</em>решается за адекватный отрезок времени.</li>
36
<li>ок, по крайней мере любое<em>регулярное выражение</em>решается за адекватный отрезок времени.</li>
37
<li>можно, хотя бы, пожалуйста, назвать эти регулярные выражения<em>регулярными</em>?</li>
37
<li>можно, хотя бы, пожалуйста, назвать эти регулярные выражения<em>регулярными</em>?</li>
38
</ul><p>Я уверен, что существует больше заблуждений.</p>
38
</ul><p>Я уверен, что существует больше заблуждений.</p>
39
<p><em>Update</em>Всё, что написано ниже, было добавлено позже. То, что поддержали другие, отмечено ссылками.</p>
39
<p><em>Update</em>Всё, что написано ниже, было добавлено позже. То, что поддержали другие, отмечено ссылками.</p>
40
<ul><li>Чтобы быть хорошим программистом, нужно получить степень в компьютерных науках.</li>
40
<ul><li>Чтобы быть хорошим программистом, нужно получить степень в компьютерных науках.</li>
41
<li>Образование в сфере компьютерных наук ничего полезного программисту не приносит.</li>
41
<li>Образование в сфере компьютерных наук ничего полезного программисту не приносит.</li>
42
<li>Функциональное программирование - это серебряная пуля.</li>
42
<li>Функциональное программирование - это серебряная пуля.</li>
43
<li>Rust - это серебряная пуля.</li>
43
<li>Rust - это серебряная пуля.</li>
44
<li><a>Серебряная пуля существует</a>.</li>
44
<li><a>Серебряная пуля существует</a>.</li>
45
<li>Серебряной пули может и не быть.</li>
45
<li>Серебряной пули может и не быть.</li>
46
<li>Переписывание работающей софт-системы -<a>хорошая идея</a>.</li>
46
<li>Переписывание работающей софт-системы -<a>хорошая идея</a>.</li>
47
<li>Я могу написать крупную систему<a>на memory unsafe языке</a>без уязвимостей.</li>
47
<li>Я могу написать крупную систему<a>на memory unsafe языке</a>без уязвимостей.</li>
48
<li>Я могу написать крупную систему на на memory safe языке языке без уязвимостей.</li>
48
<li>Я могу написать крупную систему на на memory safe языке языке без уязвимостей.</li>
49
<li>Софт -<a>инженерная дисциплина</a>.</li>
49
<li>Софт -<a>инженерная дисциплина</a>.</li>
50
<li>Софт - научная дисциплина.</li>
50
<li>Софт - научная дисциплина.</li>
51
<li>Дискуссия по теме стимулируется комментариями о том, что я уже знал факт, который был указан.</li>
51
<li>Дискуссия по теме стимулируется комментариями о том, что я уже знал факт, который был указан.</li>
52
<li>Лжезаключения о программировании не имеют значения, если автор таких лжезаключений не предоставит удовлетворяющие меня доказательства.</li>
52
<li>Лжезаключения о программировании не имеют значения, если автор таких лжезаключений не предоставит удовлетворяющие меня доказательства.</li>
53
</ul>
53
</ul>