Для меня программирование все еще попахивает магией.
Иногда совершенно прозрачный на первый взгляд код не хочет работать.
Потом после элементарных и на первый взгляд ничего принципиально не меняющих преобразований, вдруг работать начинает.
Я конечно понимаю, что это из-за недостатка глубины знаний, но все равно. Я плохой переводчик алгоритма на язык, понятный компьютеру.
Добавлю для программистов.
Вы, ребята, простые переводчики. Хорошие или плохие, но вы переводите алгоритм пользователя на язык, который понимает машина.
Алгоритм, который дает вам заказчик, это подстрочник того, что он хочет. Подстрочник этот уже является переводом смутной идеи, созревшей в мозгах заказчика, на общепринятый язык слов, понятный другому.
Подстрочник всегда беднее оригинала. В нем содержатся пробелы и пустые места, которые либо были настолько очевидны заказчику, что он не считал нужным об этом говорить, либо он их в упор не видел из-за своей тупости или из-за ущербности идеи в целом.
Дальше начинается ваша работа, от правильности которой зависит конечный результат. Но если нет идеи вам нечего кодировать. Языки программирования не являются источником идей, развивающих ту или иную область экономики или иной человеческой деятельности. Если идея плоха, то при все вашей переводческой гениальности результата тоже не будет. Будь вы семь пядей во лбу, как программист.
В программировании тоже, но при условии. что программист понимает не только алгоритм, но и внутреннюю суть и логику решаемой задачи.
И еще добавлю. Случаи, когда задача сформулирована и полностью корректно решена на уровне алгоритма крайне редки. Особенно если делается что-то новое. Зачастую заказчик сам не знает, что получится в результате и получится ли что-нибудь…
Программист — человек, который знает язык, а не переводчик.
Но естественно, язык программирования не является источником идей, как и не являемся им молоток или отвёртка. Естественно, если тех. задание плохое, то программа не будет хорошей.
Вы сами указали, что «подстрочник» всегда беднее оригинала. Но если программист вообще не разбирается в теме «оригинальной идеи» и не знает даже основ, то не сможет создать хоть мало-мальски рабочий продукт.
Это как контекст у переводчиков — если дать переводить техническую литературу переводчику, знакомый только с худ. литературой, то перевод будет литературно правильным, но некорректным по смыслу. Как и переводчик, так и программист, обязаны владеть контекстом, хотя бы на уровне базовых знаний.
Редактор знает язык лучше писателя, а корректор — лучше редактора. Но корректор не пишет книги. И пишущие редакторы встречаются редко.
Программист должен владеть контекстом среды, для которой пишется программа.
А иначе будет как у того корректора, который упорно исправлял слово триггер на триппер.
Она ещё и многослойная там.
В это месте самые миролюбивые программисты не смогут не заулыбаться.
Примерно так же, как не сможет не заулыбаться отец, которому его 6-летний сын только что заявил: «Я всё знаю (о мире)».
Программисты — это не переводчики. Это — создатели. Боги.
Некоторые из них, правда, больше напоминают чертей, но это — другая тема.
Если уж проводить параллели, то программисты куда больше похожи на писателей, нежели на переводчиков…