Как объяснить непосвященному, что такое программирование?
Если вы когда-нибудь задавались этим вопросом, то знаете, насколько непросто на него ответить. Hу, например, что такое "эффективный алгоритм"? Прочитав эту статью, вы уже не будете отделываться замечаниями вроде "это все слишком сложно", а сможете объяснить основные понятия даже ребенку. Итак.
Что такое программирование?
Представьте, что вы подробно описываете надевание штанов: "взять штаны так, чтобы ширинка была спереди, а задний карман - сзади; нагнуться, опустить руки до уровня коленок..." и т. д. Это и есть программирование.
Что такое программирование на языке ассемблера?
Представьте, что вы описываете надевание штанов очень подробно, в виде: "сократить такую-то мышцу, растянуть такую-то..."
Что такое тестирование программы?
Протестировать программу - значит попробовать надеть штаны. Могу гарантировать, что с первого раза у вас ничего не получится: штаны вы наденете задом наперед или на голову.
Чем отличаются эффективный и неэффективный алгоритмы?
Если вы действуете по эффективному алгоритму надевания штанов, то надеваете их секунд за 20, в ином случае - будете надевать до вечера.
Что такое ошибка в программе?
Если, надев штаны по своему описанию, вы обнаружили, что ширинка застегнута у вас на затылке или что вы не можете ее застегнуть совсем (из-за стянутых штанами рук), значит, вами была допущена ошибка в программе.
Что такое ошибка, приводящая к зависанию компьютера?
Если, надев штаны, вы обнаружили, что задохнулись.
Что такое оптимизация программы?
Сначала вы читаете один из вариантов надевания штанов, а потом пытаетесь сделать его более эффективным. Hапример, меняете последовательность: "распороть штаны, приложить все куски куда нужно и затем сшить по старым швам" на любую другую, менее трудоемкую.
Что такое переносимость?
Это когда по вашему алгоритму можно надеть любые штаны на любого человека.
Что такое крах системы?
Исчезновение ваших штанов - как результат вашей деятельности.