Я имею в виду объяснение непрограммисту, что такое программирование. Я постарался найти похожие вопросы, прежде чем создавать этот, но некоторые из них, которые я нашел, казалось, уклонились от вопроса, и мне бы хотелось увидеть некоторые метафоры или аналогии. Мне лично легче объяснить что-то техническое кому-то с помощью метафор или аналогий.
Причина, по которой я заинтересован в этом, заключается в том, что многие люди сталкиваются с работой программиста ежедневно, но если вы спросите обычного человека, что программист или делает, они на самом деле не знают. Это приводит к определенным ситуациям недопонимания (например, «[...] но я думал, что вы хорошо разбираетесь в компьютерах!»)
Я действительно хотел бы найти лучший там. Я хотел бы быть в состоянии легко объяснить кому-то, о чем мой выбор карьеры. Конечно, хотя бы общая идея.
Лично у меня нет основательного, но я долго думал об этом, и я обычно тяготею к метафоре «язык», где мы случайно знаем язык, который понимают компьютеры, и поэтому мы можем сказать компьютерам, что делать или «учить» их, чтобы решить наши проблемы.
Например:
Представьте, что в альтернативной реальности существуют гуманоидные роботы с искусственным интеллектом, и некоторые люди могут общаться с ними через общий язык, который является разновидностью английского языка. Эти люди, которые могут общаться с роботами, могут научить их, как решать определенные проблемы или выполнять определенные задачи, например, выполнять нашу работу.
Ну, хотя таких роботов еще не существует, программисты нашего времени похожи на этих людей, но вместо общения с роботами они общаются с компьютерами. Программисты «учат» компьютеры, как выполнять определенные задачи или решать определенные проблемы с помощью программного обеспечения, которое они создают с использованием этого «общего языка».
Программисты и этот «общий язык» - вот что дает нам такие вещи, как электронная почта, веб-сайты, видеоигры, текстовые процессоры, смартфоны ( проще говоря ) и многое другое, что мы используем ежедневно.
Я не хочу ставить программирование на трон или что-то еще, это просто лучшая метафора, которую я могу придумать.
Я уверен, что кто-то найдет какую-то проблему с этим, возможно, он немного надуманный, но опять же, поэтому я задаю этот вопрос.
источник
Ответы:
Это все равно что писать подробные пошаговые инструкции о том, как проехать куда-нибудь. Но вы обычно должны добавлять планы на случай непредвиденных обстоятельств, например, «что, если есть пробка» или «что если грузовик сломается на поворотной полосе».
И иногда вам приходится погружаться еще глубже и объяснять правила дорожного движения, например, на какую сторону ехать или что делать на красном сигнале. А иногда вам даже нужно точно объяснить, как работает руль или педаль газа.
И, как правило, после того, как вы получили все это в мельчайших деталях, клиент говорит, что «это прекрасно, за исключением того, что он должен работать для кого-то, управляющего судном на воздушной подушке»
источник
Я пишу очень, очень подробные инструкции для очень, очень тупой машины.
источник
Я использую метафору «Мы пишем рецепты вязания », которая дружит с бабушкой.
Обоснование:
if
заявления и математику и петли.источник
Не очень хорошая аналогия, но когда люди говорят мне починить их машину, я говорю: «Я парень, который проектирует автомобили. Я не механик!»
источник
В детстве я прочитал действительно хорошее описание программирования: это все равно, что рассказывать роботу, как выполнять обычную повседневную задачу, например ходить в школу. Таким образом, вы можете сказать это «Иди в школу!», Но он не знает как. Таким образом, вы говорите: «выходите на улицу, поверните налево, продолжайте идти, пока не придете в школу, не поверните налево, войдите и сядьте». Но на пути есть дорога! Таким образом, вы должны сказать ему: «Остановитесь у дороги, проверьте, что нет движения, перейдите дорогу и продолжайте идти» где-то посередине там. А как насчет дверей? Таким образом, вы добавляете «проверьте, открыта ли школьная дверь. Если это не так, откройте ее». там. В конце концов, у вас есть программа, которая может рассказать вашему роботу, как самостоятельно добраться до школы.
Это очень аккуратно сочетается с логотипом, где вы точно так же инструктируете черепаху создавать сложные фигуры.
источник
Программирование похоже на коробку конфет . Иногда вы находите то, что ищете, но большую часть времени занимает много проб и ошибок. Иногда вы получаете кокос.
Светофоры . Автомобили либо движутся, либо останавливаются. Легко представить себе один светофор, но что будет, если добавить еще один? Как насчет третьего? А как насчет всего города? Транзитная система состоит из тысяч стоп-сигналов, каждый из которых прост и сам по себе, но в целом он становится сложной системой. Если один из этих светофоров неисправен или выключен всего на несколько секунд, он повергает всю систему в хаос. Если все синхронизировано, вы просто наслаждаетесь поездкой.
Мотивационный оратор находит ключи , чтобы открыть загадку людей мотиваций, мечты и идеи. Каждая ситуация, каждый человек индивидуален. То, что работало в прошлом, может не подходить сейчас. Иногда ключ можно использовать повторно, но его необходимо адаптировать к личности. В других случаях ключ должен быть изготовлен заново. Что наиболее полезно, так это когда человек разблокирован, и вы видите, как он выходит и покоряет мир. Самое разрушительное - это когда ты чувствуешь себя близко, но просто не в состоянии раскрыть потенциал.
Детективная история , где детектив медленно строит свое дело, ища улики и сбора доказательств. Методичный, умный и точный выиграет день. Неаккуратный, невежественный и ленивый обречет дело. В конце концов, работа будет стоять или падать перед жюри.
Слот - автомат . Вы кладете все свои монеты и нажимаете на рычаг. Иногда вы выигрываете крупно, иногда сидите там часами и ничего не происходит. Иногда кто-то просто случайно проходит мимо, один раз тянет рычаг и выигрывает джекпот.
Музыка . Одна заметка достаточно проста, но мера более сложная. Полная песня имеет много тактов с множеством нот. Если одна нота выключена, это может испортить всю игру. Если каждая нота идеально доставлена, исполнение отходит на задний план, и существует только музыка.
источник
Лучшая метафора для всего - это сама. Все остальное потеряет некоторую точность. Таким образом, выбор лучшей метафоры зависит от того, что именно вы хотите запрограммировать в программировании. Поскольку здесь будет дано много ответов о метафорах кодирования, я отвечу классической метафорой для процесса разработки в целом:
Строительство зданий
Наиболее распространенным аспектом этой метафоры является то, что физический архитектор чем-то аналогичен архитектору программного обеспечения. Вот несколько других параллелей:
Конечно, как любая метафора, она имеет свои ограничения. Некоторые недостатки с этим:
Так что, как и любая аналогия, это зависит от того, что вы пытаетесь объяснить. Остерегайтесь чрезмерной зависимости от какой-либо одной метафоры, иначе ваш клиент начнет интересоваться, какими будут налоги на имущество в его новой системе начисления заработной платы.
источник
Мне нравится аналогия Криса МакМэхона разработки программного обеспечения, подобная созданию музыки, особенно джазовой музыки.
Вот ссылка на сообщение в блоге, в котором он обсуждает это: http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html
источник
Иногда я говорю о программировании как об управлении бессмысленными зомби . Подводя итог моего блога об этом:
источник
Программирование - это как строить вещи с помощью Lego :
источник
Программирование компьютера - это как воспитание ребенка ...
Основное отличие состоит в том, что мы расстраиваемся, если кто-то крадет наш исходный код, но мы часто рады, что кто-то лишает нас детей.
источник
Программирование похоже на строительство фабрики или сборочной линии.
Думайте о программном обеспечении как о машине или сборочной линии, которая существует внутри компьютера. Некоторое сырье и компоненты подаются в машину, и для ее обработки в какой-то конечный продукт следует ряд процедур. Процедуры настроены для выполнения определенной операции с некоторым сырьем или компонентом с определенным набором параметров (например, время, температура, расстояние и т. Д.) В определенном порядке. Если детали выполняемой операции были неправильными, или датчики машины не откалиброваны правильно, или если какое-либо сырье или компонент не соответствовали ожидаемым стандартам качества, это может изменить результат операции, и продукт не получится как и ожидалось.
Такая машина очень жесткая в работе и приемлемых затратах. Машины не подвергают сомнению интеллект дизайнеров и его текущую рабочую среду. Он будет продолжать следовать процедурам, пока он направлен на. Даже если изменение сырья или компонентов может оказать радикальное влияние на то, что произошло в последующих операциях, машина все равно будет выполнять свои процедуры. Процесс необходимо будет пересмотреть, чтобы увидеть, какие изменения в процедурах необходимы для компенсации и получения желаемого результата. Изменение дизайна или конфигурации продукта может также потребовать существенного изменения выполненных операций или их заказа. Хотя те, кто отвечал за производство, быстро поняли важность операций по изоляции, чтобы уменьшить нежелательные эффекты между ними, сделано много предположений о компонентах состояния, которые находятся в процессе обработки; предположения, которые могут быть не обнаружены, пока конечный продукт не окажется в руках пользователя в другой операционной среде.
источник
Помощь быстрому идиоту в прохождении математического класса, который требует написания эссе.
источник
Компьютерное программирование похоже на игру в шахматы, в которой размер доски, количество фигур в игре и правила, которые управляют этими фигурами, увеличиваются в размере и сложности по ходу игры.
источник
Написание программного обеспечения - это как ... написание! ^^
источник
Новые ученики в классах CS / Programming, практически, как пользователи, не занимающиеся программированием. Пример робота хорош.
Назад, в 80-х, очень помогло использование Logo, Karel (или аналогичной среды программирования), где пользователь учится программировать, наблюдая за компьютером как робот, а не телевизор с пишущей машинкой. Те инструменты, которые обычно используются в средней и средней школе.
Это практическое программирование помогло студентам приобрести навыки решения проблем, даже если они не были связаны с компьютером !!!
Или даже если студенты не стали программистами.
Некоторые колледжи и университеты также применяли эти инструменты на курсах первого года обучения.
Интересно, почему многие вузы отказываются от преподавания Лого и Карела ...
источник
Мне нравится аналогия Фреда Брукса из «Мифического человека в месяц», что программирование похоже на магию.
источник
Обычно это попытка обмануть компьютерщика в ремонте компьютера (вы чувствуете, что хотите доказать, что они не правы?). Мой стандартный ответ:
я программист. Это как автомобильный инженер - он, вероятно, не будет знать, как починить тормоза у вас, Трабант 72 года, и, конечно, не сделает этого, если узнает. Механик сделает это!
источник
Мне нравится концепция рецепта для приготовления пищи.
источник
Программирование похоже на обладание огромным количеством энергии. Вы можете заставить компьютер делать все, что захотите. Вы ограничены только вашим воображением и количеством времени, которое вы готовы инвестировать.
Программисты похожи на создателей дома. Мы можем рассказать вам все о домах, которые мы построили. Тем не менее, если вы спросите нас, спросите случайный дом, который мы случайно проезжаем по дороге, скорее всего, о нем мы вряд ли узнаем. Но если вам нужно что-то добавить или изменить в этом доме, мы можем сделать это, если владелец разрешит нам.
источник
В одной из старых статей Криса Кроуфорда о программировании он сравнил сложную программу с бюрократией, с многочисленными агентствами, которые общаются, передавая записки назад и вперед. Я обнаружил, что это очень полезная метафора для объяснения разработки программного обеспечения.
источник
Я вообще приравниваю программирование к мозаике.
Для создания нового проекта - у вас есть тонны кусков, некоторые из которых не принадлежат этому изображению, и у вас нет предварительного просмотра того, как выглядит головоломка, когда она закончена. Но вы знаете размер и общие цвета, поэтому оценки возможны, но не обязательно точны.
Для изменения уже существующего проекта - зашел кот и сбил кусок готовой головоломки. Это займет некоторое время, но фреймворк уже есть, поэтому он не должен быть слишком плохим (в зависимости от того, сколько нужно изменить).
Это также помогает для описания прогресса. Один из моих недавних проектов, в какой-то момент мне было интересно, как его описать, чтобы неопытный человек понял, почему я не знаю, как долго, и я придумал: «Подумайте о мозаике, где все граничные части сделаны, как и чуть более половины, если внутренние части. Те, что остались, все отделены друг от друга, и теперь я должен заполнить пробелы.
источник
Печально, но программирование - это работа, которую можно понять, только научившись ее выполнять.
Программирование имеет несколько разных уровней восприятия и отличается с разных сторон.
На низком уровне это «написать очень, очень подробные инструкции для очень, очень тупой машины»
На следующем уровне это имеет дело со сложностью. Создание новой метафоры для упрощения работы. Как высшая математика.
С другой стороны - использование вспомогательных технологий, таких как контроль версий, самодокументированный код, сборка проектов и тестирование.
С другой стороны, его построение пользовательского интерфейса (не буквально, я имею в виду API и UI), прогнозирование возможных ошибок (совершаемых пользователем, данными или даже самим собой) и правильное реагирование на ошибки.
И наконец.
Метафора для программирования - литература. Сначала нужно выучить алфавит. Но написание романа на этом даже не начинается.
источник