HTML Diff
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>