Что нужно программисту?
Прочитал статью «Математика для программиста». Удивительно, что в ней куча букв, но нет внятного смысла. Я решил исправить этот фатальный недостаток.
Программирование — это мостики между человеком, компьютером и предметной областью. Мы используем языки программирования для выражения наших мыслей, понятных компьютеру. Однако цель того, что необходимо заложить, зависит от предметной области, она диктует тот набор знаний, которым необходимо обладать для того, чтобы правильно переложить мысли и идеи в программу. Т.е. необходимо иметь 2 мостика:
- Мостик из предметной области и задачи к разработчику.
- Мостик от разработчика к компьютеру.
Первая задача — инженерная. Это, собственно, процесс решения задачи, творческий этап.
Вторая — кодирование. Переложение решения на язык, понятный компьютеру. Может показаться простым, но иногда сложность переложения может быть серьезной.
И то и другое необходимо, чтобы получить нужный результат. Иногда предметная область достаточно проста, поэтому её опускают. При этом получаем просто кодеров вместо инженеров.
Иной раз само кодирование простое, однако понимание того, что необходимо закодировать — является крайне нетривиальной задачей. Вплоть до исследований в computer science, когда необходимо сделать что-то новое, доселе неизведанное.
Т.к. предметных областей — вагон и маленькая тележка, то сказать, что конкретно понадобится, — вопрос нетривиальный. Понятно только одно: чем больше спектр знаний, тем больше подходов к решению задач можно использовать, и тем эффективнее задача может быть решена. Однако никто не отменял узкоспециализированные навыки, где решение типовых задач не требует широких знаний.
Итого, мы приходим к понимаю, что разные области требуют разного. Пришли к очевидному. Однако неочевидно тут то, что подходы из одной области можно использовать в других. Например, химическую кинетику в распределенных системах. Поэтому знание — сила.