Как объяснить непрограммистам, что программирование не является повторяющейся задачей? [закрыто]

11

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

Как вы должны объяснить, что программирование не является повторяющейся задачей для непрограммистов ?

Анто
источник
5
Спросите, является ли их работа повторяющейся задачей? Если это, то, ну, отстой для них, они, вероятно, не знают радостей творческой и разнообразной профессии. Если это не так, скажите, что это точно так же.
Марк Канлас
4
@ Марк Канлас: Хороший вопрос. Какую работу выполняют эти люди (с точки зрения программирования как повторяющейся типизации)? Скорее всего, вы могли бы указать на некоторую поверхностную повторяемость в их повседневных задачах и сократить их работу до «повторяющихся что-то или другое», а затем попросить их объяснить, как это не так .
FrustratedWithFormsDesigner
14
Если это повторяется, вы делаете это неправильно.
1
Это утверждение подразумевалось в целом. Многие задачи выполняются неправильно, когда вы делаете одно и то же снова и снова. Просто склеивать детали автомобиля? Разработайте робота, чтобы сделать это (при условии, что вы, конечно, можете - если нет, извините, что вы потеряете свою работу). Просто склеить части робота? Сборка робота для сборки роботов;) Это в основном программирование . Добавьте больше слоев для бесконечного неповторения.
2
Скажем, футбол - это повторяющийся вид спорта (все продолжают делать одно и то же, отбивая мяч).
apoorv020

Ответы:

31

Приведите им примеры, к которым они могут относиться.

Теннис повторяется. Вы просто продолжаете бить мяч все время по другую сторону сетки.

Футбол повторяется. Вы просто продолжаете пинать мяч каждый раз, пока не найдете цель ворот.

Игра на пианино повторяется. Вы продолжаете двигать пальцами по доске.

Блин, все так скучно !!!

gofeddy
источник
3
Теннис, футбол и игры на фортепиано являются скучными, таким образом , что программирование не является. Во всех этих занятиях человек постоянно сталкивается с одной и той же ситуацией и должен делать то же самое. Однако в программировании, как указывали другие ответы, если вы попадаете в одну и ту же ситуацию дважды, вы делаете это неправильно.
Ави
1
@Avi в том же духе программирования скучно, как теннис или пианино, так что это спорный аргумент.
Мориси
18

Вы всегда можете сказать, что программирование - это повторяющаяся типизация в той же степени, что и в написании прозы - это повторяющаяся типизация. Будет ли кто-нибудь написать великий (или даже посредственный) роман, сидя и тщательно составляя письма?

Sharptooth
источник
18

Ну, это в некотором роде. Вы снова и снова печатаете одни и те же буквы (AZ, az, 0-9). Просто в разных комбинациях.

Я обычно стараюсь избегать таких дискуссий с такими людьми.

ладья
источник
1
@Rook - Хороший совет.
Джон Шафт
4
+1. Заставляет меня думать о хорошем сравнении между книгами и алфавитом . (Свободно переводится как: алфавит - это набор букв, который превосходит книги по структуре и содержанию. Хотя в книгах все буквы перепутаны, буквы в алфавите последовательно пишутся в порядке возрастания. )
back2dos
1
Я надеюсь, что вы не избегаете всех людей, которые вас интересуют.
3
@Rook: Наличие кого-то, задающего вопросы о мире программирования, является благословением. Не избегай их. Поговори с ними. Столько, сколько вы можете.
4
Я пытаюсь все перепутать, используя знаки препинания. Я не достаточно интересен для меня.
MJB
13

Программирование во многом похоже на музыкальную композицию . Что далеко не повторяющийся процесс.

  • Вы начинаете думать об общем взгляде на то, что вам нужно достичь
  • Вы думаете о небольшой части вашей композиции, и вы пишете это
  • Как только это будет сделано, вы играете в нее (F5 в Visual Studio)
  • Вы повторяете процесс по мере необходимости
  • Иногда вы заимствуете идеи или вдохновляетесь другими композиторами
  • Иногда вы реорганизуете свою песню, перемещая или переделывая части

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


источник
1
Ха-ха ... +1 за игру (F5 в Visual Studio). Теперь, если бы я мог только добавить клавишу F5 к моей гитаре ...
JasCav
3
-1 для Visual Studio;)
Иордания,
Пьер, не соглашаясь с вашим общим откликом на OP, я не согласен с тем, что музыкальная композиция похожа на программирование. Сложнее
сочинять
1
@azheglov: сложнее на чем? Любой может сочинять. Теперь очень немногие будут на MTV, как очень немногие из нас будут давать интервью CNN
Даже если, скажем, сочинение музыки «сложнее», проблемы в CS масштабируются, чтобы компенсировать: каждая строка кода может быть легче написать, чем отдельная нота, поэтому у нас есть проекты с буквально миллионами (если не больше) строк кода. Таким образом, даже если каждое элементарное действие проще, от лучших программистов просто ожидают решения более сложных задач.
Тихон Джелвис
4

Я обычно объясняю, что программирование - это творческое решение проблем. У вас есть проблема - вам нужна функция в продукте (а я обычно выбираю известный продукт, Amazon.com, MS Word и т. Д.), А ее там нет. Это никогда не было сделано раньше, и вы первый, так что это как любой художественный проект - у вас есть видение, но вам нужно найти путь.

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

Наконец, конечный продукт может быть любимым или ненавидимым получателем. Точно так же, как некоторые люди любят Пикассо, а некоторые не могут создавать головы или хвосты современного искусства - некоторые люди могут любить функцию, а некоторые могут ненавидеть ее. Вы делаете лучшее, что можете для большинства людей, и понимаете, что не можете угодить всем.

Сфокусироваться на:

  • неизвестная территория
  • никто не ответит
  • подлежит толкованию

Показывает, что эта работа больше похожа на искусство, и намного меньше похожа на скучную скучную работу.

Я часто обсуждаю это с художниками (и у них, похоже, есть инстинктивное убеждение, что компьютерная работа не является творческой. Обычно мне также удается связать ее с любимым видом искусства художника. На каком-то уровне большинство художников также являются техниками - живопись танцы, создание музыки и, возможно, любое другое искусство - все это включает в себя серию повторяющихся действий, которые приводят вас к исполнению чего-то нового, другого и творческого. Таким образом, у художников обычно возникают проблемы, отрицающие, что, казалось бы, повторяющиеся действия могут привести к к произведениям вдохновения и красоты.

В этот момент они обычно готовы признать, что только потому, что мое «искусство» включает в себя набор причудливых синтаксических операторов и невнятных UML-диаграмм, это не означает, что они не креативны в этих строках кода и Модели системы в конечном итоге делают нечто совершенно иное, чем сумма ее частей.

bethlakshmi
источник
2
Будучи художником, мне нравится это сравнение. Это будет иметь смысл для большинства художников всех типов и тех, кто может иметь отношение к художественной деятельности. (Я не уверен насчет
нехудожников
3

Программирование - это абстракции. Чем больше вы пишете, тем больше сходства вы видите. Но тогда пришло время абстрагироваться. Рефакторинг структуры развивается, что устраняет дублирование. Это уменьшает сложность в коде проблемной области.

Возможно повторное программирование. Но это неэффективно.

Витек
источник
+1, когда кодирование становится очень повторяющимся, это признак того, что, возможно, «вы делаете это неправильно!»
FrustratedWithFormsDesigner
3

Если бы это было на самом деле, мы бы просто использовали копирование и вставку: D

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

  • может использовать их для создания вашего здания (т.е. программного обеспечения, которое вы создаете) из твердых компонентов, что повышает стабильность
  • может многократно использовать их в одном и том же здании или даже в разных зданиях (для уменьшения повторения) и, таким образом, повысить производительность
  • сможет изменить блок, не вызывая разрушения всего здания, тем самым увеличивая локальную гибкость
  • сможет изменить все экземпляры блока одновременно, увеличивая глобальную гибкость

По своей природе этот вызов требует от вас не повторяться .

Как следствие: если вы повторяете себя как программист, вы тратите время на создание программного обеспечения, которое не является ни стабильным, ни гибким.

back2dos
источник
1

Помимо других ответов, которые указывают на то, что повторяемость или ввод / нажатие являются поверхностными, вы могли бы также указать, что программирование обычно гораздо больше связано с решением проблем, чем с набором текста (и я думаю, что Джикстра сказал, что информатика много о компьютерах, поскольку астрономия о телескопах - или что-то подобное ).

Набор текста - это только один из способов реализации решения (и в настоящее время самый популярный), хотя есть и другие способы, такие как:

  • псевдокод на белой доске (которая иллюстрирует решение, но на самом деле не работает или ничего не делает, к сожалению)
  • перфокарты (сейчас считаются устаревшими)
  • Может быть, программируемые логические массивы или если вы хотите, чтобы ваше решение было реализовано непосредственно на аппаратном уровне (хотя, скорее всего, будет некоторая типизация, чтобы передать решение от вашего мозга к PLA, я не знаю, как часто это «кодировать» эти решения). вещи напрямую - я не работаю с ними, просто знаю о них от других, кто это делает).
  • люди (я недавно слышал о группе, которая реализовала алгоритмы сортировки как танец)
  • скалы в пустыне . ;)
FrustratedWithFormsDesigner
источник
0

Большая часть акта программирования печатает. Живопись включает в себя поглаживание кистью, но повторение довольно поверхностно.

Будут ли они применять эту логику к: - Продавцы много разговаривают по телефону. - Менеджеры ходят на множество встреч. - Певцы просто поют. - Актеры повторяют сценарии.

Если так, то вот почему они не программисты.

JeffO
источник
-2

Если вы хотите хорошо программировать, это повторяется, но то же самое можно сказать и о чем угодно. Повторение лежит в основе овладения любым навыком.

Джон Шафт
источник
-2

Ну, программирование действительно может быть довольно повторяющейся задачей. Особенно, когда инфраструктура построена, снова и снова начинается скучный процесс создания одного и того же диалогового / делового программного обеспечения (только немного отличающегося). Вам повезло, если вам не нужно участвовать, чтобы уложиться в сроки или если у вас достаточно юниоров, чтобы выполнять такую ​​работу.

сокол
источник
1
Зависит от того, какую работу вы делаете, я думаю
Anto