Я работаю программистом 4й год. Первую программу написал 8 лет назад. И сейчас я уверенно могу сказать, что не имею достаточно экспертизы, чтобы ответить на подобный вопрос. Однако могу проследить как менялось мое собственное понимание этого со временем.
Когда я только начинал, мне казалось что программирование похоже на языковой перевод. Ведь все так же, ты читаешь текст, понимаешь его и пытаешься написать наиболее похожий на другом языке. При этом части слов языка с которого переводишь нет в твоем и смысл, например поговорок, трудно передать сквозь языковой барьер без разжевывания.
Набрав немного опыта я осознал, что для программирования как и для перевода важно не просто сопоставить словосочетания или предложения по словарю, важно понять и перенести то что хотел сказать автор оригинала.
Сейчас я убежден, что программирование это не просто перевод.
Программист большую часть своего времени занят созданием абстракций, он придумывает назвать все кубы из дубовых досок на складе ящиками и делает так, чтобы каждый рабочий на складе говорил "Возьми вон тот ящик", а не "Возьми вон тот куб из дубовых досок".
Программист не просто пишет строчки в файле на другом языке, он создает язык на котором будет описывать то что он делает и на котором должен легко научиться писать любой с первого прочтения. Этот язык не обязательно должен быть кодом, есть языки для визуального проектирования, не требующие написания кода как такового. И всем этим занимаются программисты выбирая язык с помощью которого они смогут с минимальными затратами написать свой язык для решения задачи, для кого-то это машинный код, для кого-то это G(программа для ученых - LabVIEW).
Так же программист часто решает смежные с программированием задачи - настройка окружения, решение алгоритмических задач, организация рабочего процесса, взаимодействие и управление командой, общение с источником задачи, кем/чем бы он ни был. Те для кого смежные задачи трудны часто страдают от программирования, ведь само по себе написание кода по большей части рутина, а смежные задачи позволяют отсечь большую часть этой рутины и больше творить.
Вся суть программирования в том, чтобы упрощать то что до этого казалось сложным, с помощью создания прозрачных абстракций, разграничения и унификации понятий.
Это похоже на получение
теоретического научного знания, не находите?