Американские специалисты по научной организации труда выделили четыре типа работников.
Человек первого типа - толковый, творческий, инициативный. Его достаточно навести на мысль, указать цель работы, а дорогу к ней он найдет сам.
Таких людей, честно говоря, немного. Чаще встречаются работники второго типа: сообразительные, но одной цели им мало. Требуется разъяснить сложные места в задаче, указать основные приемы, пригодные для ее решения. Однако слишком подробные разъяснения обижают этих работников, если чересчур разжевывать, они теряют интерес к задаче.
Третий тип работников умственного труда нуждается в более детальных инструкциях. Им нужно прямо сказать, что и в каком порядке делать, кроме мелочей; на мелочи не стоит упирать. И помягче объяснять, поделикатнее.
Четвертый тип людей, увы, не способен четко действовать без прямых приказов. Этим однозначно скажи, что, как и когда выполнять, изволь объяснить работу до последней стружки. Иначе беда: стал тесать Аверкий, да все исковеркал.
Часто, сравнивая возможности человека и вычислительной машины, полагают, будто все мы люди, все человеку все одинаковы, и забывают о том, насколько разнятся между собой эти самые человеки.
Если позволить себе некоторую смелость, если поставить вычислительную машину в ряд умственных работников - людей, то она окажется работником пятого типа. Инструкции для компьютера должны быть предельно четкими, ясными, определенными до мельчайшей мелочи. Любая неясность ведет к заминке, к сбою, к зацикливанию, к остановке компьютера. Машина драгоценнейшая наша не должна останавливаться, обязана непрерывно перемалывать "слова", продолжать свой ход, свой счет, свое стремительное движение к результату.
Алгоритмическое мышление зажато в тиски машинных требований, выковано в компьютерном горне, отличается твердостью, прямотой и предельной додуманностью.
Никаких "вроде бы так", никаких "и тому подобное", избави боже от "аналогично". Мысль алгоритмиста обязана прощупать все звенья без исключения, алгоритмист должен пройти все пути, одолеть все "нет" и все "да", учесть все развилки, ответить на все вопросы, найти выход из всех циклов.
О эти любители напускать туману под лозунгом "Проблема сложна! Мы привыкли работать с ней на ощупь...". Алгоритмическое мышление разрывает пелену тумана, дробит сложное на части, находит приемы решения частных задач, а потом вновь, как по ступенькам, восходит к проблеме в целом.
Алгоритмическое мышление не шапкозакидательство. Сложность в мире существует, ее нужно штурмовать, а не отрицать. Программист знает - свидетельством тому вся история человеческого разума, - что самое дерзкое и высокое творчество отстаивается в алгоритмах, превращается в крепкие приемы ремесла.
Программист - исследователь, но он не из породы исследователей, привыкших, по саркастическому замечанию Р. Декарта, заниматься разгадками спутанных вопросов со спутанным умом. "Такие исследователи, - писал Р. Декарт, - не менее глупы, чем тот мальчуган, который так старается угодить, что бросается бежать прежде, чем получит поручение, даже не зная, куда ему идти".
Программист - настойчивый, усердный и волевой работник. В его руках отличные инструменты: команды, присваивания, проверки, циклы. И он применяет свои инструменты со всем человеческим искусством. Он не желает оставаться в проблеме как в ловушке, а ищет дорогу к свету и правде.
Член-корреспондент АН СССР Андрей Петрович Ершов, один из зачинателей отечественного программирования, ярко и точно охарактеризовал особенности работы программиста: "Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста".
Внешне мягкий и уступчивый, А. Ершов предъявляет весьма суровые требования к личности программиста (и, значит, прежде всего к самому себе). Программисты обязаны быть предельно добросовестными в контактах с машиной, но, что еще важнее, они должны выполнить свой моральный долг перед человечеством - добиться, чтобы программирование из искусства для избранных стало грамотностью для всех.
В последние годы А. Ершов с головой ушел в теорию программирования. Он раскрывает потаенные возможности алгоритмов и нащупывает границы алгоритмического подхода. Работу современных программистов - теоретиков и практиков - он сравнивает с деятельностью авторов и издателей книг после изобретения книгопечатания: программисты создают машинное отображение мира, наделяя людей небывалой властью над природой.
Читать дальше