Найти тему

Что должен знать программист, чтобы программы получались

Оглавление

Упал самолет - виноваты программисты, не взлетела ракета - найдена ошибка программы, разрушился дом - программисты писавшие софт для расчета фундамента уже эммигрировали по разным странам.

Аптечка программиста из личного фотоархива
Аптечка программиста из личного фотоархива

Кто такой программист

Если кратко, то человек, умеющий вникать в предметную область, понимать что требуется сделать, способный изучить процесс, описать его формально на псевдо математическом языке, и перевести на язык программы.

Предметная область

Раз я затронул тему самолетов, ее и продолжу. Стоит задача написать автопилот. Начинаем узучать самолет: много палок, которые шевелятся. А еще куча проводков, на концах которых куча болтиков, трубочек и прочей непонятной ерунды. Все это заводится в коробочку, внутрь которой запишут программу.

Даааа. С такими терминами самолет далеко не улетит. Палки на крыльях, оказывается, называются элероны и служат для управления креном самолета. А зачем его кренить?

И все. Программист потерян на долгий срок. Он читает, ездит в аэропорт, чтобы посмотреть на настоящие самолеты, общается с физиками, конструкторами самолета, пилотами.

В общем, программист должен иметь знания в следующих областях:
✔️Авиастроительство
✔️Аэродинамика
✔️Математика
✔️Физика
✔️Радиоэлектроника
✔️Пилотирование самолета

Без этих знаний программу написать не выйдет. Причем не просто знать, а понимать тонкости.

Если нашего бедолагу по завершении проекта самолета отправить писать ПО для управления машиной, процесс дообучения повторится.

Даже, чтобы написать банальный кредитный калькулятор, программист должен понимать, чем дифференцированные платежи отличаются от аннуитентных, почему эффективная ставка по кредиту отличается от базовой.

Формализация

Багаж знаний получен, но это пока что лишь знания в голове. Компьютеры так думать не умеют. Максимум, что может программа, это выполнять математические функции и операции, что-то делать в цикле и выполнять код по условию (или наоборот не выполнять) . Поэтому из этих примитивных кубиков надо составить алгоритм, тоесть комбинацию, которая будет работать так, как надо.

Написание кода

И наконец, когда формально все написано, можно печатать программу. А пишется она на языке, который имеет кучу своих правил, особенностей. По ходу выяснится, что где-то алгоритм был составлен некорректно, где-то не хватает знаний в предметной области, где-то надо доизучить язык.

А что с тем упавшим самолетом

Датчик показывает значение угла от - 1000 до 1000 каких-то единиц, а в программе выделено памяти на цифры от -999 до 999, потому что вместо знака "больше или равно {>=} " использован знак "больше {>}" . И когда угол станет максимальным или минимальным, программа начнет считать угол равным 0. Просто перескочил счетчик. А программа вместо угла крена 45 видит ровный полет в 0 градусов. Всего один символ, мелкая совсем ошибка,а самолета нет. Но это был испытательный самолет и на нем не было людей. Но самолета не стало из-за одного символа в программе.

Подписывайтесь, ставьте пальцы - впереди еще много интересного!