§ Предисловие к 2898423-му изданию

Для маминых программистов возрастом от 7 до 8 лет (я у мамы — программист!). Москва. ЭнергоАтомИздат, 1991 г.
Данный текст был получен путем анализа Древнего Учения, записанного в Станцах Дзиан (или Дхиан, Джианн — от санкритского слова "Знание", а знание — это сила, как известно).

§ Сборник советов

ГЛАВА 0. СТИЛЬ НАПИСАНИЯ ПРОГРАММ
  • 00. При написании программы используй семь или более управляющих конструкции, изменяющих естественный ход выполнения операторов: 1) цикл "пока", 2) альтернативу, 3) множественное ветвление, 4) цикл "до", 5) цикл с параметром, 6) вызов процедуры, 7) переход к метке;
  • 01. Структурируя алгоритмы и программы, пользуйся двумя методами: дублированием и использованием признака;
  • 02. При оформлении программы не пренебрегай графическими, цветовыми и иными способами выделения структуры алгоритма;
  • 03. Формируя в программе функциональный блок, ограниченный прямоугольными рамками, следи, чтобы у него был только один вход и только один выход;
  • 04. Изменив параметр цикла, можно досрочно выйти из него;
  • 05. Если ты затеял цикл с параметром, то умри, но выполни его до конца;
  • 06. Никогда не используй значение параметра цикла по выходе из него;
  • 07. Досрочно прервать программу можно, запрограммировав на одном плече альтернативы аварийную ситуацию;
  • 08. При инициализации цикла сделай так, чтобы операции обнуления сумматоров и другие оказались внутри цикла;
  • 09. Вписывай программы в структурные диаграммы. Это позволяет выделить алгоритм, освободив его от синтаксической оболочки конкретного языка;
  • 0A. Не пытайся усомниться в основной структурной теореме — она верна;
  • 0B. Ради дела можно отказаться даже от самых модных концепции программирования;
  • 0C. Структуру программы можно подчеркивать неструктурными средствами;
  • 0D. Во избежания меток в программе заменяй полную альтернативу на две неполные;
  • 0E. При особом желаний из программы можно убрать все альтернативы, будь они полные или неполные;
  • 0F. Можно ли сыграть на скрипке одной струной? Да, можно.
ГЛАВА 1. ДИАЛОГ С КОМПЬЮТЕРОМ
  • 10. Перед выводом информации очищай дисплей;
  • 11. Дублируй ввод значений важных переменных;
  • 12. На вкус и цвет товарищей нет. Но приемы удобного и быстрого ввода списков в память ЭВМ товарищу порекомендовать можно;
  • 13. Фиксируй минимальное и максимальное значение элементов вводимого числового массива;
  • 14. Не балуй машину! Не делай за нее то, что она прекрасно может сделать и без тебя;
  • 15. Давай пользователю оперативную возможность исправления ошибок;
  • 16. Приучай пользователя твоей программы к некоторым условным символам в общении с машиной;
  • 17. Не требуй от пользователя каких-то условных символов при ответе, — сделай машину более гибкой и понятливой;
  • 18. Не оговаривай форму ответа человека какими-то условиями;
  • 19. Если тебе приходится просматривать на дисплее периодически появляющуюся информацию, то сделай так, чтобы машина оглашала звуковым сигналом или мелодией их очередное появление;
  • 1A. Пользуйся двумя способами задержки вывода информации на дисплей;
  • 1B. Заблокировать клавиши клавиатуры можно не только программными, но и аппаратными средствами;
  • 1C. Не всегда дублируй нажатие клавиши клавиатуры печатью соответствующего символа на экране дисплея;
  • 1D. При работе с магнитофоном как с архивной памятью вставляй в программу операторы печати, приказывающие пользователю нажать ту или иную кнопку магнитофона;
  • 1E. В программы необходимо вносить участки защиты не только от "дураков", но и от шутников;
  • 1F. "Клиент всегда прав". Напиши лозунг, стоящий в названии совета, и повесь его в помещении, где ты создаешь программные продукты;
ГЛАВА 2. ОТЛАДКА ПРОГРАММЫ
  • 20. Имей в программе данные для контрольной прогонки;
  • 21. Вставляй в итерационные участки операторы печати, выводящие на дисплей значения достигнутой точности, параметров цикла и др.;
  • 22. При необходимости узнать, что произойдет, если из программы убрать оператор, его нет нужды совсем вымарывать из текста. Достаточно его просто "лишить прав состояния", поставив перед ним REM. Если потом это слово убрать, то оператор восстановится;
  • 23. Широко пользуйся штатными средствами ЭВМ при отладке программы на ней;
  • 24. Прежде чем передавать заказчику программу оптимизации, проверь ее на функциях, специально выдуманных для этого случая;
  • 25. Помечай особым образом места в программе, требующей дальнейшей доработки;
  • 26. При тестировании программ сортировки "подсовывай" машине массив, где есть как минимум два равных элемента;
  • 27. Программе можно сделать "прививку" от аварийного останова;
  • 28. Ошибок лучше вообще не допускать. Тогда не нужна будет и отладка. Разбивай поэтому длинную формулу на части и записывай ее в программу несколькими операторами присвоения;
  • 29. Переведи незаметно компьютер, например, с градусов на радианы и посмотри, что из этого получится;
  • 2A. При отладке программы или при повторном ее использовании бывает полезно запустить ее не с самого начала;
  • 2B. Не жалей скобок в алгебраическом выражении;
  • 2C. Перевод программы с одного диалекта языка на другой — одна из самых трудных, но нужных отладочных операции;
  • 2D. При наличии желания и времени можно провести супериспытание разработанной программы с проверкой правильности абсолютно всех выдаваемых ею результатов;
  • 2E. Чтобы отладить программу, нужно в ней наделать новых ошибок: "Клин клином вышибают";
  • 2F. Можно ли отладить программу на слух?
ГЛАВА 3. ОПТИМИЗАЦИЯ ПРОГРАММ
  • 30. Быстродействие и ясность программы — вещи, как правило, взаимносвязанные, поэтому подумай, прежде чем оптимизировать программу;
  • 31. Не делай многократно то, что можно сделать всего один раз;
  • 32. Вкладывай циклы так, чтобы они выполнялись за минимальное время;
  • 33. Избегай индексных переменных;
  • 34. Замена возведения в целую степень на произведение ускоряет расчет не всегда;
  • 35. Перестановка мест слагаемых меняет сумму;
  • 36. Перестановка мест сомножителей меняет произведение;
  • 37. Не увлекайся знаками логических выражении. Такое увлечение чревато потерей быстродействия помимо тех неприятностей, о котором было сказано в предыдущем совете;
  • 38. Делай так, чтобы компьютер не простаивал, когда ты изучаешь информацию на дисплее;
  • 39. Умело пользуйся буферной памятью принтера;
  • 3A. Не гоняй дисковод попусту;
  • 3B. Есть много факторов, влияющих на выбор места подпрограммы в программе;
  • 3C. "Поколдуй" над программой — и затраченное время вернется тебе сторицей;
  • 3D. Доверяй, но проверяй;
  • 3E. Внедряй на производстве энергосберегающие технологии;
  • 3F. Не спеши решать задачу, подожди, — может быть появится язык или программная среда, где она решается оптимальным способом одним оператором;
ГЛАВА 4. ПСИХОЛОГИЯ ПРОГРАММИРОВАНИЯ
  • 40. Утро вечера мудреней;
  • 41. Еще одно преимущество простого алгоритма;
  • 42. Не допусти, чтобы у тебя на работе отобрали ПК;
  • 43. Предупреждай о выполнении машиной необратимых операции;
  • 44. Не злоупотребляй принципом умолчания;
  • 45. Иногда стоит так написать программу, чтобы в ней долго никто не смог разобраться;
  • 46. Любопытство — не порок, а метод исследования;
  • 47. Проруби в своем дисплее еще одно окно в мир программирования;
  • 48. На ошибках не только учатся, но и строят алгоритмы;
  • 49. Умей видеть в пустяковой на первый взгляд программе возможную практическую пользу;
  • 4A. Если есть искусство ради программирования, то должно быть и программирование ради программирования;
  • 4B. Пиши программу так, чтобы ее авторство было видно и без указания на составителя программы;
  • 4C. Ищи у классиков темы для программирования;
  • 4D. Если не знаешь, как поступить в трудной жизненной ситуации, то смоделируй ее на компьютере;
  • 4E. Компьютер планирует выпуск себе подобных, рассказ плановика;
  • 4F. Часто бывает полезно получить от ЭВМ простыню-распечатку результатов и поразмышлять над ней в тиши, вдали от машины;
ГЛАВА 5. ЧТО В ИМЕНИ ТЕБЕ МОЕМ
  • 50. Дав файлам удачные имена, можно создать базу данных с удобными средствами записи, поиска и исправления;
  • 51. Стоит в программе изменить несколько констант — и ей может найтись новое применение;
  • 52. Нет ничего тайного, что не стало бы явным;
  • 53. Если в клетке со львом удивишь "Буйвол" — не верь глазам своим. К. Прутков;
  • 54. Используй предыдущий совет о длинных именах переменных с осторожностью;
  • 55. Далеко не любое слово может быть идентификатором;
  • 56. Помни не только имя переменной, но и ее фамилию, т.е. тип;
  • 57. Скупой платит дважды;
  • 58. Умный может совсем не заплатить;
  • 59. Переменная двойной точности;
  • 5A. Некоторым переменным стоит давать не имена, а прозвища;
  • 5B. Нужно помнить не только имя переменной, но и свое собственное;
  • 5C. Храни информацию о файлах диска на самом диске в главном файле;
  • 5D. Создавая программу, помни об уровне компьютерной грамотности пользователя;
  • 5E. Хорошо, если переменная помнит не только то, что в нее записали, но и имя соседки;
  • 5F. Периодически обновляй записи на внешнем носителе;