30 минут, чтобы объяснить программирование 15-летнему [закрыто]

100

Я вызвался сесть и поговорить о жизни и работе разработчика с 15-летним студентом с опытом работы на следующей неделе.

Уловки в том, что

  • У меня есть только полчаса, и
  • Я буду одним из тех, кто с ней разговаривает - другие люди, играющие разные роли в бизнесе, также будут работать с ней в течение дня.

Что мне следует освещать, и чему я могу научить ее всего за полчаса?

Я предполагаю, что она, вероятно, не имеет опыта разработки или программирования.

Dexter
источник
158
Удручает то, как многие из этих ответов относятся к детям - у них короткое внимание, они не понимают вещи, если они не визуальны, они не могут справиться с чем-то сложным. Мы говорим здесь о пятнадцатилетнем. Пятнадцатилетние дети вполне способны понимать и делать сложные вещи, часами глубоко погружаться во что-то и иметь абстрактные мысли. Я бы взял умного пятнадцатилетнего на любого из вас, чёрт возьми!
Том Андерсон
8
@tom С другой стороны, я лично испытал, как большинство взрослых находят что-то кроме визуальных изображений на компьютере утомительным. Это зависит от ребенка и от того, насколько он интересуется компьютерами.
Джоккинг
6
@jh: Хе! Полагаю, вопрос не в том, пятнадцатилетнему ли это человеку, а в том, умны ли они и любознательны Мы все можем (за исключением Maxpm) быть старыми болельщиками сейчас, но нам было все пятнадцать раз, и я скорее сомневаюсь, что те из нас, кто умные и любознательные взрослые, были скучными и незаинтересованными подростками.
Том Андерсон
33
«Сначала я прихожу на работу чуть позже 10 утра, пью много кофе, гонюсь за ним с Mountain Dew и энергетическими напитками. Следующие 2 часа я провожу, проверяя свою почту, обмениваясь рецептами с единственной женщиной-разработчиком в все здание, затем короткий сон после обеда. Встань, еще раз проверь электронную почту, зайди на серфинг на youtube, чтобы посмотреть видео о кошках, узнай последние комиксы dilbert и smbc. Прежде чем ты узнаешь это, его 4:30, пора домой. Я ничего не могу сделать, но 100 программистов собирают по одному и тому же каждый день в течение 3 лет, вот так рождаются видеоигры ».
Джульетта
5
@Tom: точно. Многие программисты начинали до 15 лет, поэтому я не понимаю снисходительности.
Нил Дж

Ответы:

130

Я много общаюсь со старшеклассниками, поэтому отвечаю на этот вопрос довольно часто. Имейте в виду, что 15-летним детям гораздо легче объяснить программирование, чем 50-летним, поэтому вам не нужно ничего тупить или использовать надуманные аналогии.

Я обычно начинаю с примеров того, что программы:

  • Приложения, такие как iTunes, Photoshop, Chrome и игры, включая консольные игры.
  • Операционные системы, такие как Windows, Mac OS, iPhone на iOS, Android. (Поверь мне, они поймут, о чем ты.)
  • Программы, которые вычисляют числа или решают действительно сложные математические задачи - симуляторы погоды, биологические симуляции, вычисление пи, искусственного интеллекта, обработка языка и т. Д.
  • Большинство сложных веб-сайтов также занимаются программированием.
  • Автоматы по продаже транзитных билетов и банкоматы, микроволновые и холодильные таймеры, автомобильная навигация.

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

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

После этого, если им все еще интересно, они обычно начинают задавать конкретные вопросы, на которые гораздо легче ответить (или, по крайней мере, на Wiki): такие вещи, как создание игры, работа в Windows Messenger и т. Д.

Если у вас есть компьютер, вы можете показать и рассказать какой-нибудь код - что-то, что будет иметь ощутимый эффект, например, обработчик нажатия кнопки в диалоговом окне настроек в Firefox, основной цикл или физический код в игровом движке, некоторые JavaScript источник с сайта и т.д ..

Рей Миясака
источник
73
Спасибо, что напомнили мне, что объяснять программирование ребенку легче, чем объяснять взрослому. Я постоянно забываю, что они никогда не были окружены компьютерами.
Джоккинг
12
хахаха Я получаю это все время, если ты знаешь, как «взломать людей» хахахахаха
Джон Коннелли
3
@jhocking Я также думаю, что многие из них ярче, чем большая часть поколения идиотов. Помимо качества, огромное количество текста, которое они читают, обязательно принесет пользу.
Рей Миясака
4
@rei: Ну, у меня продвинутые социальные навыки, и я нашел это достойным внимания тем количеством внимания, которое получили немногие женщины в этих классах ... Это было с добрыми намерениями, но ... тревожно. Если бы это был я, я бы побежал с криком. Быть окруженным толпой потных ртунов обязательно должно быть отвратительным для любого нормального человека, поэтому либо вам придется любить внимание, либо вам действительно очень нравятся компьютерные науки. Поэтому меня, конечно, не удивило, что женщин было так мало. Я полагаю, что в небольших школах это не так ужасно.
Satanicpuppy
4
Ну, как правило, я опаздываю по крайней мере на пятнадцать минут, ах, я использую боковую дверь - таким образом, Ламбер не может видеть меня, хе-хе - и, э-э, после этого я просто выбиваю пространство примерно на час. Да, я просто смотрю на свой стол; но похоже я работаю. Я делаю это, вероятно, еще час после обеда. Я бы сказал, что за определенную неделю я, вероятно, выполняю всего пятнадцать минут реальной, настоящей работы.
TeamBob
73

Я объяснил это моему пятилетнему ребенку следующим образом:

Я: «Вы знаете, как в историях люди произносят волшебные слова и меняют вещи в мире?»
Она: «Аааа?»
Я: «Вот что такое компьютерное программирование».
Она (тихо): «Ух ты».

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

Не нам.

Satanicpuppy
источник
77
lol @ учу своего ребенка, что ты волшебник
jhocking
23
«Ни одна другая профессия в мире не создает функциональные вещи из ничего, кроме слов», - делают юристы и законодатели по контракту.
Том Андерсон
48
@Tom Они, вероятно, ограничивают функциональные вещи больше, чем создают их.
Maxpm
16
@ Том: Нет, они этого не делают. Юридическая справка не более функциональная вещь, чем рассказ или стихотворение. Закон похож на план: он излагает идею, но тогда кто-то должен выйти в мир мяса и навязать его. А код? Я мог бы написать программу для покупки или продажи акций, основанную на ее собственной внутренней логике, и она пошла бы, чтобы делать это без дополнительной информации от меня. Я мог бы написать один, чтобы управлять затворами, перенаправлять электричество, включать или выключать свет в зависимости от времени суток. Это уникально среди профессий.
Satanicpuppy
15
@Satanicpuppy: Нет, вы не можете написать программу, которая бы делала что-то из этого. Инженер-электронщик мог бы создать компьютер, который мог бы делать их. Если вы хорошо спросите, возможно, он заставит его выйти в мир мяса и усилить ваши программы.
Том Андерсон
56

Человек 15 лет может понять любую концепцию. Я сам начал программировать в 14 лет (в школе, много, много лет назад).

30 минут достаточно для демонстрации. Покажите ей магию программирования с помощью чего-то столь же распространенного, как браузер.

  1. Найти компьютер, подключенный к Интернету. (веселее, если она не твоя, и даже больше, если она ее)
  2. Перейдите на страницу http://api.jquery.com/jQuery.getJSON/.
  3. Прокрутите страницу вниз и найдите HTML-код для примера с кошками .
  4. Выберите код HTML и скопируйте его.
  5. Перейдите на http://jsdo.it и нажмите Начать кодирование .
  6. Откройте счет, используя ваш OpenID. (одношаговый процесс)
  7. Выберите вкладку HTML на левой панели и вставьте туда.
    • через секунду на правой панели появится кучка кошек
  8. Вырежьте JavaScript и вставьте его во вкладку JavaScript . (для подсветки синтаксиса)
    • через секунду кошки автоматически обновляются на правой панели
  9. Найдите свойство тегов в JavaScript и измените его на «собака».
    • появляется кучка собак
  10. Заставьте ее повторить процесс самостоятельно с другими метками по своему выбору.
    • предложить ей попробовать с двумя тегами, разделенными запятой
  11. Измените строку «if (i == 3)» на «if (i == 5)»; дайте ей понять, что
    • сейчас есть 6 изображений, а раньше было 4
    • было бы лучше, если число в коде совпадает с номером на странице
  12. Исправьте ошибку вместе (поменяйте местами эту строку и предыдущую)
  13. ...
Андо
источник
1
Или вы можете использовать jsfiddle без регистрации: jsfiddle.net/WXVra
rjmunro
Лучший! codecademy.com
джоккинг
26

меры

Будучи почти 15-летним, я могу с уверенностью сказать, что у вас должно быть потрясающее начало.

  1. Объясните, что делают программисты. (Игры, симуляторы.) Покажите что-нибудь классное, что вы сделали. (На компьютере. Пожалуйста, не используйте командную строку - это, кажется, всех пугает.)
  2. Объясните, как вы это делаете.

    • Скажите им, что вы не печатаете 10101010весь день. Скажите им, что вы даже не знаете, как это сделать. ( Lie. Вы же знаете , что 10101010значит, правильно;)) Скажите им , что это было несколько лет назад.
    • Запустите свой IDE. Убедитесь, что это выглядит круто - MSVS2010, QtCreator и NetBeans - все хорошо. Не забудьте убрать некоторые из лишних вещей, чтобы они выглядели менее пугающими (меньше меню), но сохраняйте визуальные эффекты.
    • Покажите им образец какого-нибудь псевдокода. Сделать это легко понять:

      Display Window
      Display "I like cheese!"
      Display OK button
      
      If user clicks OK button, close Window
      

      Пройдите этот шаг за шагом. Скажите им, что это не совсем так, как выглядит код. Код выглядит так English + Math. Но нетрудно выучить «язык» (читай: синтаксис), на котором вы говорите.

    • На этот раз покажите им пример с немного большей «математикой».

      User inputs A
      User inputs B
      
      C = A + B
      
      Display C
      

      Объясните, что этот код добавляет два числа вместе, как калькулятор. Покажите им «настоящий» код для этого. (Убедитесь , что вы положили большую часть пользовательского интерфейса и другие вещи в отдельном файле, и сохранить файл, показать их короткими и простыми.) Измените его в программу вычитания (путем изменения знака от +к -) прямо перед их глазами.

  3. Объясните, что им нужно знать, чтобы заниматься программированием. (На разных уровнях.)

    • Базовые навыки алгебры, как будто x + 1 = 2, тогда x = 1.
    • Навыки решения проблем.
    • ["Продвинутый"] Математика высшего уровня. Это для программистов, работающих в таких местах, как НАСА.

Условия, которые вы можете использовать

Мы знаем больше, чем вы думаете.

  • Facebook, Twitter, социальные сети
  • Windows, Mac, Linux
  • Дизайн, Быстрее, Тестирование, Запуск / Запуск

Условия, которые вы должны объяснить

Да, нам все еще нужно кое-что объяснить.

  • Компилятор: преобразует код (как пример в шаге 2) в 10101010.
  • Язык программирования: выглядит как пример в шаге 2.

Условия, которые вы не можете использовать

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

  • Любой вид "системы", кроме операционной системы
  • Оптимизация, Анализ (о-о-о)
  • Ввод / вывод (если вам нужно это использовать, постарайтесь сделать его максимально простым)
muntoo
источник
Ищете "крутой" IDE? Смотрите не дальше, чем Xcode.
Алан Зейно
2
@ Алан Зейно, ты имеешь в виду Emacs.
правостороннее
Мне больше нравится этот ответ. Я думаю, что кто-то, взявшийся за это, достигнет большего, чем кто-то, кто работает над другими (также качественными) ответами на этот вопрос.
TehShrike
17

Если вы начнете говорить о таких вещах, как процессы, шаблоны, требования и тому подобное, она немедленно отключится. Дети сегодня графичны и визуально мотивированы, поэтому я хотел бы внести кое-что, чтобы помочь продвинуть эти типы стимулов. Покажите ей что-нибудь притягательное в Интернете, а затем на высоком уровне опишите ей, что заставляет ЭТО случиться. Я бы даже предложил взять ваш ноутбук для разработки и сделать что-нибудь «крутое» на экране - измените код перед ней, а затем посмотрите, как он меняется на экране. В этом возрасте они ОЧЕНЬ умны, и все, что визуально поможет вызвать интерес.

Catchops
источник
о да, визуальные эффекты - отличная идея Риск того, что это будет слишком похоже на класс, я с большой вероятностью буду рисовать диаграммы на доске, чтобы проиллюстрировать все, что я говорю.
Джоккинг
1
Говоря о визуальных эффектах, как насчет показа ей небольшого видео или программы Alice?
Карлос Кампдеррос
9
@Carlos Как 15-летний подросток, я лично могу засвидетельствовать, что я ненавижу Алису с пылающей страстью тысячи солнц. Это, вероятно, потому что я уже знаю, как программировать, хотя. Я не уверен, как все начинающие смотрят на это.
Maxpm
1
+1 за «измените код перед ней и затем посмотрите, как он меняется на экране» - начните с показа ей прямой связи между «реальной» вещью и кодом, стоящим за ней. Что-то в меру глубокое, например, сортировка или запрос некоторых данных, а не просто немного JSP или форматирование строк. Создайте эту связь, затем создайте ее.
Том Андерсон
1
Возможность изменить внешний вид программы с помощью всего лишь нескольких строк кода - вот что привело меня в программирование много лет назад - спасибо за предложение
Dexter
13

Есть две замечательные аналогии, на которые я опираюсь при объяснении работы программистов. Один рецепт; эта метафора полезна для объяснения в небольшом масштабе, что делает каждая строка кода. Работа программиста - написание рецепта, а компьютер - повар.

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

jhocking
источник
8

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

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

Питер Смит
источник
8

Приведите ей примеры программного обеспечения, над которым вы работали. У вас есть клиент, который публично использует ваше программное обеспечение? Вы разрабатываете приложение для дома, которое вы могли бы показать ей? Покажите ей конечный результат вашей работы, что конечный пользователь видит и использует.

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

Поговорите о том, сколько удовольствия вы получаете от просмотра вашего кода людьми.

Так я и объяснил своему 14-летнему двоюродному брату. Он был очень впечатлен и решил взять курс программирования на следующий семестр.

Tyanna
источник
5
Это хорошо работает, если вы работаете с программным обеспечением, которое выглядит круто для непрограммистов. Многие из моих недавних проектов живут в базе данных и «выглядят» как командная строка (и даже те, которых не было в веб-приложении, выглядели очень скучно - но до тех пор, пока данные обрабатывались нормально, никто не заботился). Для непрограммиста это мигающая подсказка, которая выводит строку текста каждые несколько минут, а затем останавливается. Так скучно смотреть на ... вздох :(
FrustratedWithFormsDesigner
1
Посмотрите на «конечный результат вашей работы». Это означает не только программное обеспечение, над которым вы работали; это также может означать различные клиентские приложения, которые включены серверным программным обеспечением, над которым вы работали.
Джокинг
По крайней мере, вы не являетесь разработчиком SharePoint, как я, @FrustratedWithFormsDesigner .. Я уверен, что смогу найти что-то классное среди всех моих угловых скобок!
Декстер
4
@FrustratedWithFormsDesigner Я пошел в день «убедим школьников, что стоит подать заявление в CS», когда мне было 15 лет, вместе с несколькими другими яркими детьми из моей школы. Материал командной строки СМОТРЕЛ ОХЛАЖДЕНИЕ. Это выглядело очень мощно для нас, и это сделало его COOOOOL. Не думайте, что 15-летние девочки не хотят управлять вселенной :)
testerab
Конечно, вы запрограммировали что-то веселое в свободное время, которое вы могли бы показать. Я запрограммировал игру Тетрис, просмотрщик фракталов и решатель судоку. Любое из них интересно показать.
Карра
7

Вы знакомы с настольной игрой Robo Rally?

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

Человек, я бы хотел, чтобы у меня все еще был мой BigTrak ...

Система не работает
источник
4
Мы играем в эту игру на регулярной основе в наш игровой вечер (до 8 человек, большинство из них - математики или студенты CS). Хорошо показать, как многопоточность может пойти не так :-p
Paŭlo Ebermann
@ Пауло - LOL Никогда не думал об этом, но ты прав!
Система
6

Покажите что-нибудь простое, но полезное. Хороший пример, я думаю, будет следующим:

  1. Получите полную папку или изображения (достаточно, чтобы они не помещались на одном экране в проводнике)
  2. Скажите им, что ваша цель - изменить размеры изображений (возможно, чтобы вы могли отправить их друзьям по электронной почте или опубликовать где-нибудь в Интернете, что угодно)
  3. Продемонстрировать изменение размера одного изображения в GIMP / Photoshop / что угодно
  4. Теперь отметьте, что на это ушло не менее 30 секунд, и у вас много изображений, вы не хотите тратить на это целый час
  5. Написать сценарий оболочки, чтобы изменить их размер, используя ImageMagick
  6. Пусть они удивятся, что изменение размера всех изображений с помощью простой трехстрочной программы было быстрее, чем изменение размера одного изображения в Photoshop

Причины, по которым мне нравится этот подход:

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

Возможно, вы сможете придумать лучшие примеры, но я думаю, что стиль полезен для «первого вступления».

Восстановить Монику
источник
5

Большинство 15-летних «в эти дни» имеют большой опыт работы с компьютерами. Я пошел бы для большего количества рук на подходе. Я покажу ей немного кода (не пытайтесь объяснить это подробно, но, возможно, расскажу об основах «потока») и покажу ей, каков результат. Даже HTML будет работать для такого рода примера. Затем скажите: «Каждый день я делаю в основном это… за исключением десятков тысяч строк кода и очень большой и сложной программы».

Затем объясните, какие проблемы вы решаете с помощью программирования, и почему вам нравится это делать. Например, я бы сказал, что мне нравится программирование, потому что «я люблю видеть, как мой код оживает на компьютере как приложение»

Earlz
источник
4

Во-первых, у вас есть соревнование, которое нужно развенчать.

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

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

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

Подняв эту идею на новый уровень, вы можете продолжить рассказ о том, как программирование создает задачи друг над другом. Точно так же, как он / она должен был выучить арифметику, прежде чем они могли изучать алгебру в математике, компьютерам также нужно научиться «выполнять основы», прежде чем вы сможете рассказать им, как выполнять более сложные задачи. За эти годы компьютерные ученые и программисты смогли «научить» компьютеры достаточно основам до такой степени, что мы сможем начать «разговаривать» с ними гораздо ближе к тому, как мы общаемся.

Вернувшись в реальную жизнь, ваш учитель математики может сказать вам, чтобы вы решали «15 к степени 3», но вы знаете, как это сделать, потому что ранее вас учили, что «X к силе Y» разбивается на задачи «Умножьте X на X и сделайте это Y раз» [технически Y -1 раз, но эх.]

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

colinross
источник
3

Я бы сделал то, что меня зацепило, когда мне было около 9. Вытащи С64 из лофта и сделай:

10 PRINT "YOU SMELL"

20 GOTO 10

(Спасибо папа).

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

Мартин Блор
источник
2
Хороший. В точку. Сделайте это действительно простым и сделайте это забавным. И Бейсик идеально подходит для этого.
Майк Данлавей
1
Согласен, BASIC великолепен, а GOTO - лучшая языковая конструкция для начала. Моя первая программа была очень похожа.
Томас Андрле
Я не скажу, что я полностью против этого, но я не узнал о goto, пока после нескольких лет программирования на C ++. Даже с тех пор я никогда не набирал ни одного гото в своей жизни. Хорошо это или плохо, я не буду судить - я просто хотел, чтобы было известно, что goto не обязательно ... э-э ... необходимо.
31eee384
3

Может быть полезно начать с того, что она обычно делает, например, с Facebook, и объяснить ей, как один простой аспект, такой как вход в систему, может быть очень сложным.

Отсюда вы можете перейти к базам данных, дизайну приложений, а затем и к некоторым аспектам безопасности, которые она может убрать.

Вы даже можете спросить ее что-то вроде: «Если бы в Facebook можно было что-то изменить, что бы это было?» Затем объясните ей, как вы можете внести изменения и сколько людей будет вовлечено.

Сначала я научился программировать на Паскале, и я был полностью уверен, что моя программа приняла мой ввод, испортила его и напечатала что-то другое. Я подсел оттуда. Некоторые люди легко запираются.

client09
источник
Использование Facebook - хорошее предложение, спасибо @ client09
Декстер
2

Я надеюсь, что ушел на работу где-нибудь, где, по-видимому, разрабатывается программное обеспечение, и она должна быть заинтересована в этой области?

Нет четкого ответа, я бы на 5-10 минут опрашивал ее о том, что она знает, а затем просто постараюсь развить это как можно лучше.

анонимное
источник
Не уверен @Chris - в технологической компании много разных ролей, от бухгалтерии до отдела кадров, разработки и консалтинга. Мы даем ей краткий вкус множества различных ролей, поэтому я не думаю, что я бы сделал это предположение
Декстер
Ну, честно говоря, вы никогда не указывали, почему это была компания. : p Можно было бы с уверенностью сказать, что если кто-то пойдет в магазин за гитарой, он, скорее всего, заинтересуется гитарой, а не тем, кто занимается сборкой древесины.
Аноним
2

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

Сложнее всего придумать примеры, которые 15-летняя девушка нашла бы интересными и актуальными . Никогда не находясь в такой ситуации и не зная ее, я не уверен, что порекомендовать для этого ... Избегайте примеров кода до самого конца, за исключением очень простых или интересных случаев, таких как программа "Hello world" или что-то простое и графическое (нарисуйте несколько фигур в окне, отследите мышь и т. д.).

FrustratedWithFormsDesigner
источник
Я не думаю, что смогу научить кого-то программированию, не показав ему хотя бы несколько примеров кода, над которым я работаю ..
Декстер
@Dexter: Через 30 минут я не уверен, что хочу слишком подробно останавливаться на том, как выглядит код. Я не хотел ничего не показывать, но так как у вас мало времени, я не думаю, что код должен быть в центре внимания. Это может стать очень сухим и скучным. Поговорите больше об идеях и концепциях, если можете. Если вы можете найти простой пример (возможно, менее 10 строк), который легко понять, а также интересно, сделайте это!
FrustratedWithFormsDesigner
согласился, но я думаю, вместо того, чтобы заниматься простым примером из главы 1, я бы лучше показал программу, которую я разработал, и переключил несколько строк кода, чтобы показать результат ... в конечном счете, я не думаю, что я Я смогу научить ее программировать, но, возможно, я смогу вдохновить ее узнать больше ..
Декстер
2

Вот мой взгляд на это после пары неудачных и довольно неплохих попыток:

Программирование - это решение проблем.

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

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

Спросите ее, как она скажет очень быстрому, но очень тупому работнику купить банку содовой из автомата по продаже газировки Когда она начнет описывать шаги («Положите деньги в машину и нажмите кнопку»), начните анализировать их как программу («Что такое деньги? Как мне положить их в машину? Когда я кладу деньги в машину и нажимаю кнопка в то же время, ничего не происходит. "). Если у вас есть доска, начните слева с ее первым набором инструкций. Когда она пересмотрит их, разместите новый большой список с правой стороны. Когда у вас есть хороший набор инструкций, начните обобщать фигуры («Извлеките деньги из своего кармана и выньте соду из лотка с похожим звуком - какие части одинаковые / разные?») Возьмите обобщения и поместите их в середину и вычеркните части, которые они теперь охватывают. Постарайтесь со временем связать кусочки, чтобы она соответствовала ее оригинальным инструкциям, вроде вызовов функций. Другие хорошие упражнения: отправьте письмо по почте, пройдите через дверь, нарисуйте круг / квадрат / треугольник.

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

Хорошо, к этому моменту она может понять, но ей, вероятно, скучно. Продолжайте с набором классных примеров программирования. Шейдеры и связанный с ними визуальный код легко продемонстрировать - вы можете создать изображение и начать вносить в него изменения с очень небольшими изменениями кода. Если она выразила интерес к Facebook, пообщайтесь с Facebook через REST, чтобы увидеть данные друзей друзей (ее 6 градусов). Если ей нравятся видеоигры, покажите пару демо-версий игр с открытым исходным кодом вместе с несколькими фрагментами их кода и тем, как они помогают работе игры. Завершите это, показав пару бесплатных инструментов и ресурсов, которые она могла бы исследовать дома. (Python, C # и т. Д.)

Мои неудачные попытки: попытка объяснить вычисление числа Пи (они спрашивали), настольная игра C-Jump http://c-jump.com/ (они не получили его, а инструкции глючили) и живое кодирование 2d игра (просто не мог удержать интерес, независимо от того, как мало шагов я делал между демонстрациями).

Удачи!

Джереми Мюррей
источник
2

Сделайте простую программу. Нет, не "Привет, мир!"

Я бы сказал, что есть много типов языков программирования - те, которые создают игры, те, которые управляют роботами, - но с чем вы собираетесь работать, это HTML.

Сделайте веб-страницу, на которой ничего нет, а затем добавьте форму, которая отправит электронное письмо на ее электронный адрес. Предположительно, у нее есть сотовый телефон, который может уведомить владельца, что у него есть новое электронное письмо, так что вы можете сказать ей, что это отличный способ для ее друзей и семьи связаться с ней. Если в будущем она получит свой собственный веб-сайт, вы можете сказать ей, что она может разместить форму на своем веб-сайте, что позволит ее клиентам и деловым партнерам связаться с ней.

Или, если она немного озорной, я расскажу вам, что меня заинтересовало в программировании: хакерство. В свое время я создал лучшую программу, когда-либо созданную для возни с AOL (за исключением одной программы, которая превзошла мою по одной из десятков моих работ) - в возрасте 14-15 лет. Что касается белой шляпы, я также создал одну из первых программ по удалению спама (1995). Я смог сделать свой онлайн-опыт намного более приятным, и мы на этом остановимся. Все, что я хотел сделать на компьютере, было приключением или головоломкой, которую я должен был разгадать, а то, что я хотел сделать на компьютере, было бесконечным. Конечно, заставить его работать иногда было головной болью, но написание программы, которая выполняла вещи лучше и быстрее, чем любой человек, или делать вещи, которые были просто невозможны для широкой публики, было похоже на создание прекрасного механизма, которым можно гордиться. Теперь вы, вероятно, не хотите ничего серьезного, но было бы чрезвычайно легко сделать что-то в Visual Basic, которое можно было бы запускать при запуске (сидя на боковой части экрана или на панели задач) и оттуда, Вы можете заставить ее запускать ее любимые веб-сайты, ее любимые программы и т. д. Вы можете познакомить ее с командами, необходимыми для запуска exe и веб-сайта, а затем просто попросить ее сделать несколько кнопок, а затем добавить код для этих кнопок. размещение ее любимых веб-сайтов (facebook, твиттер и т. д.) и программ (iTunes, текстовый процессор и т. д.). Если ее компьютер находится в ее комнате, вы также можете включить на него будильник для дополнительной функциональности. Конечно, 30 минут - слишком мало, чтобы провести ее через это, так что вам уже придется это делать. В конце вы отправите ей по электронной почте небольшое руководство на 2-3 страницы, код и файл .exe, а затем оставите ее с небольшим коммерческим шагом: сначала это будет непросто, но как только вы получите Поверьте, это не так плохо, будет чрезвычайно полезно в жизни и поможет развить ее аналитическое мышление.

Майкл
источник
2

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

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

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

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

Майк Данлавей
источник
1

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

Привет, мир

Затем сделайте:

Здравствуйте, <b> Мир </ b>

И т.п.

Майк Джонс
источник
1

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

То есть, в дополнение к тому, что все остальные сказали ...

Энди
источник
1

Это скорее мой личный опыт, чем прямой «ответ».

Почему я заинтересовался? Мои родители купили IBM PC XT в 1984 году (я родился в 1984 году). Он имеет 640 КБ ОЗУ и 20 МБ HDD и 5 "FDD и работает под управлением MS-DOS v3.2. Мне не разрешали трогать его, пока я не был в 5-м стандарте, и когда мне наконец разрешили его использовать, я вылил все свои годы накопленного любопытства в это.

С другой стороны, моей сестре разрешали использовать тот же компьютер и макинтош Quadra 610, когда она этого хотела, и она обращала на него столько же внимания, сколько и на стол, на котором он был установлен.

Учить мою сестру ... Я пытался научить свою сестру программированию на бейсике. Я сделал ее во всем, от запуска компьютера до ввода программы и ее выполнения. Это было как прямая программа.

10 PRINT "CAT"
20 END

Это заняло полчаса. Когда она наконец выполнила это, она напечатала слово «CAT», и она была в ярости. Она ожидала, что появится изображение кота. Она выбежала из комнаты, и это был конец программирования навсегда!

Мораль: результат должен быть пропорционален времени и усилиям, которые они вкладывают.

Обучение старшеклассников Labview и Lego NXT Я был наставником FIRST Robotics в течение года и должен был руководить детьми при программировании робота в NI Labview. Честно говоря, требуемый навык программирования был намного выше уровня старшеклассника. Но соревнования были направлены на то, чтобы увлечь ребят инженерным делом и поднять планку способности принять вызов. Пока программы имели только оператор if и один цикл, все было в порядке. Люди покинули раздел программирования робота, когда увидели кодовую диаграмму, которую я создал для робота, который мы создали в прошлом году.

Столько, сколько люди утверждают, что 15-летние могут делать сложные вещи и могут иметь концентрацию внимания в течение нескольких часов, я обнаружил странное отсутствие у них мотивации делать это. Они хотели делать легкие вещи, которые не обременяли бы их мозг. Они предпочли CAD и фрезеровать детали на токарном станке, чем писать программы.

Лорд лох
источник
1

Что такое CS?

Я думаю, что прежде чем вы приступите к демонстрации, это поможет вам вкратце рассказать о том, какое место занимает CS в мире. Мне понравилось описание Хэла Абельсона CS по отношению к математике: в то время как математика помогает вам описывать мир с точки зрения законов, CS помогает вам описывать, как делать вещи. Его примером была функция квадратного корня: математика определит ее, но не поможет найти ее для любого заданного ввода. CS будет. На более низком уровне электротехника и физика заложили основу для аппаратного обеспечения, обеспечивающего доступ к Интернету, но оставили открытым вопрос о том, как заставить людей использовать его.

Каково быть программистом?

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

Глазная конфета, привязанная к коду

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

SuperElectric
источник
1

Я начал программировать, когда мне было 14 лет. Хотя большинство (47 из 50 студентов, которые поступили) либо бросили учебу в середине года, либо просто решили не переходить на углубленный курс в следующем году, я остался с этим и узнал кое-что очень важное:

Программирование дает вам возможность создавать что-то из ничего. У вас есть возможность превратить слова в полезный инструмент, который удовлетворяет потребности, развлекает вас и ваших друзей или просто показывает, что вы можете показать своим друзьям и сказать: «Посмотри, что я сделал».

Сначала нас учили «Hello World», но я не интересовался, пока не смог заставить свой код взаимодействовать с пользователем . В тот момент, когда нас учили читать ввод с помощью «cin», я решил создать программу Mad-Lib, которую мы могли бы сыграть в классе. Моим первым препятствием было чтение ввода, содержащего пробелы, с последующим форматированием вывода. Позже я хотел сохранить эти истории в файл, и мне нужно было изучить файл ввода-вывода. Устранение препятствий для достижения моих собственных целей - вот что меня удерживало.

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

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

vsTerminus
источник
1

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

user30241
источник
1

Если вы хотите привлечь и удержать чье-то внимание, спросите, не говорите. Спросите, как бы они выполнили простую задачу, например, выпили воды. Затем покажите им, как следование предоставленным инструкциям (таким как «Идите по коридору») на самом деле не решает проблемы поворота налево, поворота вправо, остановки и т. Д. Понимание и обработка этих граничных условий - вот дело программирования! Затем вы можете показать, как цикл «делать до» может справиться с ситуацией типа «ходить до стены», чтобы сделать мета-задачи из задачи «один фут впереди другого» ходить.

Брайан
источник
1

Я не уверен, что это легенда или правдивая история, но я читал о том, почему везучий суров в один прекрасный день. Частью истории было то, как он показывал программирование ребенку (или, возможно, даже детям), которых он встретил в поезде.
Как некоторые из вас могут знать, _why был парень из Ruby (а Ruby, в общем-то, довольно дружелюбен к обычным людям). Он работал над какой-то игрой в Ruby, в то время как какой-то ребенок подошел к нему, чтобы посмотреть, что он делает. Сначала он показал им результат - рабочую игру. Затем он показал ребенку, как он может изменить вещи в коде, чтобы изменить результат. Затем он позволил ребенку поиграть с кодом и увидеть измененный результат.
Я думаю, что это должно быть вашим общим рабочим процессом - результат, изменение, игра. Вы должны найти какой-нибудь проект (игра была бы лучшим выбором) на понятном человеку языке и показать его ребенку.

Как мне грустно, я понятия не имею, правда ли эта история или нет. Это все еще очень круто.

Кроме того, еще одна вещь. Я помню свой первый опыт программирования - MessageBoxв Delphi. Это было круто, потому что я мог заставить компьютер делать то, что я хочу, и сразу увидеть результат.
Затем появились микроконтроллеры. Они были даже лучше, потому что мой код мог изменить реальный мир. Я имею в виду, что присвоение некоторого значения переменной перестало быть настолько абстрактным, так как это вызвало появление напряжения на выходном порте, что затем заставило мой двигатель двигаться. Это было круто. Вы можете выбрать этот способ - показать ребенку что-то вроде Arduino.

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

Доктор Маккей
источник
0

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

SoylentGray
источник
0

Моя любимая аналогия для программирования - волшебство (стиль Гарри Поттера), как Satanicpuppy. Я использую это для нетехнических сверстников, а также детей, кажется, что это работает довольно хорошо, и определенно передает силу, которую дают нам компьютеры.

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

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

Grantismo
источник
0

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

Желаю тебе всего самого лучшего.. ! отличная работа

Ратна Динакар
источник