Блог им. neophyte

Магия программирования

Магия программирования
 
Для меня программирование все еще попахивает магией.
Иногда совершенно прозрачный на первый взгляд код не хочет работать.
Потом после элементарных и на первый взгляд ничего принципиально не меняющих преобразований, вдруг работать начинает.
Я конечно понимаю, что это из-за недостатка глубины знаний, но все равно. Я плохой переводчик алгоритма на язык, понятный компьютеру.

Добавлю для программистов.
Вы, ребята, простые переводчики. Хорошие или плохие, но вы переводите алгоритм пользователя на язык, который понимает машина.
Алгоритм, который дает вам заказчик, это подстрочник того, что он хочет. Подстрочник этот уже является переводом смутной идеи, созревшей в мозгах заказчика, на общепринятый язык слов, понятный другому.
Подстрочник всегда беднее оригинала. В нем содержатся пробелы и пустые места, которые либо были настолько очевидны заказчику, что он не считал нужным об этом говорить, либо он их в упор не видел из-за своей тупости или из-за ущербности идеи в целом.
Дальше начинается ваша работа, от правильности которой зависит конечный результат. Но если нет идеи вам нечего кодировать. Языки программирования не являются источником идей, развивающих ту или иную область экономики или иной человеческой деятельности. Если идея плоха, то при все вашей переводческой гениальности результата тоже не будет. Будь вы семь пядей во лбу, как программист.
★1
13 комментариев
Чтобы делали программисты если бы вы им все не разжевали?)
avatar
Мм, и да и нет. Понятно, что язык программирования это просто язык программирования. Но действительно между идеей и реализацией огромная пропасть, даже между ТЗ и реализацией пропасть, даже между суперподробным ТЗ и реализацией пропасть, а вот тут уже талант, опыт и т.д. программиста играет ключевую роль. Язык предоставляем миллион возможностей, миллион путей решения одних и тех же задач, миллион способов дойти из точки А в точку Б, так что то, что вы описали справедливо только для некоего абстрактного (читай несуществующего) идеального высокого уровня детализации описания задачи программисту.
avatar
Replikant_mih, согласен. Поэтому так тяжело иногда читать русские переводы блестящих англоязычных книг. Это относится к любому переводу. Более того, в литературе талантливый переводчик может сделать перевод лучше оригинала. 
В программировании тоже, но при условии. что программист понимает не только алгоритм, но и внутреннюю суть и логику решаемой задачи. 
avatar
Николай Скриган, да, поэтому, например, зарплаты программистов могут отличаться не только на десятки процентов, но и в разы, и, наверное, на порядки, потому что это действительно разные программисты. Многие с кем мне приходилось работать, хороши технически, но только единицы так же хороши в понимании «человеческого языка» — они или слишком буквально все воспринимают, не понимая аналогий, сбстракций или не умеют решать задачи, если они недостаточно детализированы — ну тупо или зависают, или засыпают вопросами или если сами делают, то часто какую-то дичь, а так же многие не умеют погружаться в нужную предметную область. А некоторорые — ну приятно работать с такими)) — иногда можешь просто зацепить идею и чувствуешь как он её налету подхватил, развил и через какое-то время реализовал и хорошо реализовал.
avatar
Replikant_mih, я вас прекрасно понимаю. Добавлю только, что так обстоит дело не только в программировании. В любом виде деятельности.

И еще добавлю. Случаи, когда задача сформулирована и полностью корректно решена на уровне алгоритма крайне редки. Особенно если делается что-то новое. Зачастую заказчик сам не знает, что получится в результате и получится ли что-нибудь…
avatar
Николай Скриган, да, да, всё верно :)
avatar
Смешно.
Для меня программирование все еще попахивает магией.
Но тем не менее:
Вы, ребята, простые переводчики.

Программист — человек, который знает язык, а не переводчик.
avatar
Jame Bonds, и что он делает со своим знанием если ему не поставили задачу.
avatar
Товарищ Сталин, помнится, о языкознании писал. И тоже с глубоким пониманием сути.
avatar
приходи когда познаешь дзен )
avatar
Не то что я защищаю программистов, но варианты, где программист — обычный «переводчик» — это идеальный мир. Если заказчик в состояние был бы абсолютно детально и понятно описать не разбирающемуся в теме человеку, что ему надо — то да, от программиста бы не требовалось ничего, кроме знания языка программирования. Но мы живём не в идеальном мире. 1С программисты все поголовно знают хотя бы основы бух. учёта.  Создатели вычислительных программ должны знать выч. математику и оптимизацию, иначе они не смогут понять, работает ли написанная ими программа или нет. Продолжать можно долго.

Но естественно, язык программирования не является источником идей, как и не являемся им молоток или отвёртка. Естественно, если тех. задание плохое, то программа не будет хорошей.

Вы сами указали, что «подстрочник» всегда беднее оригинала. Но если программист вообще не разбирается в теме «оригинальной идеи» и не знает даже основ, то не сможет создать хоть мало-мальски рабочий продукт.
Это как контекст у переводчиков — если дать переводить техническую литературу переводчику, знакомый только с худ. литературой, то перевод будет литературно правильным, но некорректным по смыслу. Как и переводчик, так и программист, обязаны владеть контекстом, хотя бы на уровне базовых знаний.
avatar
MK, согласен. 
Редактор знает язык лучше писателя, а корректор — лучше редактора. Но корректор не пишет книги. И пишущие редакторы встречаются редко. 
Программист должен владеть контекстом среды, для которой пишется программа.
А иначе будет как у того корректора, который упорно исправлял слово триггер на триппер.

avatar
Для меня программирование все еще попахивает магией.

Она ещё и многослойная там.

Добавлю для программистов.
Вы, ребята, простые переводчики. Хорошие или плохие, но вы переводите алгоритм пользователя на язык, который понимает машина.


В это месте самые миролюбивые программисты не смогут не заулыбаться.

Примерно так же, как не сможет не заулыбаться отец, которому его 6-летний сын только что заявил: «Я всё знаю (о мире)».

Программисты — это не переводчики. Это — создатели. Боги.

Некоторые из них, правда, больше напоминают чертей, но это — другая тема.

Если уж проводить параллели, то программисты куда больше похожи на писателей, нежели на переводчиков…
avatar

теги блога neophyte

....все тэги



UPDONW
Новый дизайн