1245 подписчиков
Программирование и исследование. Где в программировании исследование. Для меня программирование всегда существовало рядом с исследовательской работой. Ещё с тех доисторических 80-х. Да, да, ваш покорный слуга программировал ещё в то время. Золотое время для программистов, я вам скажу. Откуда вообще взялось исследование в то время. А всё очень просто. Чертовски не хватало книг и документации по новым компьютерам. Я много программировал тогда на Ямахе. На ассемблере, естественно. А документации то почти никакой ни по z80 ни по самой Ямахе. Попадались какие-то отрывочные тексты, которые охватывали процентов 50 вопроса, а всё остальное приходилось додумывать. И проводить огромное количество экспериментов. Тут на словах сообщают, что с ассемблера можно обращаться к библиотеке подпрограмм зашитого в ПЗУ Бэйсика. Потом появляется какая-то информация, но вызвать библиотечные функции не удается. И начинается кропотливая работа над тем, чтобы понять, почему код не работает. И наконец доходит: боже ж ты мой, ну конечно стек, в нём всё дело. Надо сказать, что именно ассемблер самый "исследовательский" язык, не важно для какой аппаратной платформы. Я до сих пор занимаюсь этим языком и каждый раз приходится продираться. Объясняется это тем, что для того, чтобы программировать на ассемблере нужно совмещать знание команд процессора, операционной системы и собственно реализации самого языка. Но удовольствие, я вам скажу, получаешь огромное.
Ну да оставим в стороне ассемблер и подумаем, а где приходится заниматься исследованием при программировании. И так ли уж это важно. Начну с последнего. очень важно, так как именно исследовательская работа доставляет нам истинное удовольствие, приносит эстетику открытия, поднимает над рутиной ремесленничества. И так, так где-же можно и нужно проявлять свои исследовательские способности в программировании.
1. Конечно, это алгоритмы. В своей практике программист часто встречается с алгоритмическими задачами. Не спешите искать готовые алгоритмы или библиотеки. Попробуйте сами написать решение, оптимизировать и довести до совершенства. А вот когда всё заработает как надо, я вам позавидую.
2. Несомненно отладка. Опять же не стоит спешить с пошаговым выполнением (старая школа просто рвётся из меня наружу). Попробуйте проанализировать результаты и понять причины. Иногда это не просто, но я помню ситуации со сложными ошибками, какой восторг испытываешь, когда тебе становится понятно логика бага.
3. Ну и конечно, когда работаешь с не стандартным внешним устройством. Здесь как раз и встречаешь массу неизведанного.
Обычно слышишь возражение, что всё описано, что решение можно найти просто в поисковике, и так будет быстрее. Если это действительно для вас серьёзные аргументы, то, наверное, вы родились для простого рутинного программирования, которое, конечно, тоже необходимо.
Исследование предполагает какое-то открытие в конце. Да, чаще всего это только для вас, для реализации лично вашего любопытства и лично ваших внутренних амбиций. Но именно это и было движущей силой и великих открытий и великих достижений.
2 минуты
28 августа 2023