Что хороший пример состоит в том, чтобы показать непрограммисту для объяснения, на что похоже” программирование?

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

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

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

Моя первая мысль была, очевидно, простым "Привет Мировая" программа. Но это действительно не показывает ничего полезного. Это действительно не показывает, как мы используем функции, или переменные или структуры потока управления как if или while сделать программу, которая на самом деле делает что-то. Нет никакой логики к нему. Программа ни на что не реагирует.

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

И также, какой язык должен использоваться?

Идеально, я не думаю, что это должен быть очень "чистый" язык. А скорее, это должно, вероятно, ясно дать понять структуру. Если это делает это, то определенное количество шума и помехи могло бы быть прекрасным. Возможно, что-то как C++ на самом деле было бы лучшим примером, чем Python по этой причине. Явные фигурные скобки и спецификаторы типа являются очевидными "рычагами", чтобы помочь объяснить, как программа структурирована, или выделить это это не просто простые операторы, которые могут почти быть считаны как английский язык.

Но с C++ мы также входим в некоторый совершенно странный синтаксис. Почему std::cout << x используемый для распечатывания x? Почему не "нормальный" синтаксис вызова функции? И printf не намного лучше, с его тайной строкой формата и отсутствием расширяемости (сделайте я хочу усложнить программу при помощи char* для строк? Или сделайте я использую std::string и согласитесь на вызов на вид ненужного s.c_str() получить строку, которая может быть распечатана с printf?

Возможно, высокоуровневый язык был бы лучше, в конце концов. Но который? И почему?

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

Я не интересуюсь простотой по сути. А скорее в предоставлении "постороннему" идея "какой программы похожа". И программы не просты. Но они действительно обычно показывают определенную структуру и метод к безумию. Какой язык/программа лучше всего выделил бы это?

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

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

И я не обученный плотник, но я знаю пилу или молоток, когда я вижу тот.

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

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

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

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

Это - действительно все, что я хочу сделать. У моей подруги нет интереса к изучению программирования, и я не хочу вынуждать ее понять исходный код. Но ей было любопытно на предмет того, с какими инструментами или объектами я работаю. Это - символы Матричного стиля, прокручивающие через экран? Чистая математика? Английский язык в форме прозы?

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

71
задан 7 revs, 3 users 100% 18 February 2012 в 12:53
поделиться

38 ответов

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

34
ответ дан 24 November 2019 в 12:48
поделиться

BASIC

10 PRINT "Sara is the best"
20 GOTO 10

Обновление: когда мне было 12, мой двоюродный брат (ему было 14) принес Turbo Pascal 7.0 и установил его на свой компьютер.
Он запрограммировал игру в крестики-нолики с нуля (в режиме BGI, для тех, кто знает).
Я наблюдал / наблюдал шаг за шагом, как программа развивается, пока не станет законченным приложением.
До этого я знал только, как печатать строки в BASIC: -B

Вы можете сделать то же самое. Парное программирование. Ну, на самом деле ваша подруга будет наблюдателем, но она поймет идею;)

50
ответ дан 24 November 2019 в 12:48
поделиться

A junior coder at work

Это похоже на это. Иногда.

23
ответ дан 24 November 2019 в 12:48
поделиться

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

Я не претендую на изобретение этого ответа.

О вашем редактировании : Боюсь, программисты еще меньше знают о идеи, которые есть у других о программировании. ;-) Люди думают, что программирование - это матричное повреждение зеленой видеокарты, примерно так же, как они думают, что все шпионы оснащены высокотехнологичными игрушками Джеймса Бонда. А любой профессионал в любой сфере обычно раздражается, когда смотрит фильм о своей работе. Потому что создатель фильма понятия не имеет! С другой стороны, знаем ли мы, как правильно изобразить программирование в фильме ? ; -)

6
ответ дан 24 November 2019 в 12:48
поделиться

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

Как приготовить две чашки кофе?

  1. Наполнить чайник
  2. Кипятить воду

  3. Кофе в чашке

  4. Залить водой
  5. Добавить сахар
  6. Добавить молоко

  7. Повторить от 3 до 6

34
ответ дан 24 November 2019 в 12:48
поделиться

Может быть, все слишком много внимания уделяют коду, а не инструментам. Возможно, лучше всего показать ей проект в среде IDE и то, как он включает различные исходные файлы и, возможно, некоторые схематические элементы, такие как схема базы данных или визуальный дизайнер пользовательского интерфейса. Visual Studio, Eclipse или Xcode довольно далеки от мысленного представления большинства людей о быстро прокручивающихся зеленых символах на черном фоне.

14
ответ дан 24 November 2019 в 12:48
поделиться

Кодируйте что-нибудь, что имеет любую понятную ценность для непрограммиста. Если бы я продемонстрировал маме Quicksort, это было бы бесполезно.

Спросите человека о его интересах. Например, если он / она работает на фондовой бирже, создайте скрипт, который считывает некоторую статистику акций с соответствующей веб-страницы и компилирует их в таблицу Excel (используйте csv, чтобы избежать серьезных повреждений мозга ^^) или, может быть, в красивую диаграмму .

Если человек использует Twitter, запрограммируйте что-нибудь, что учитывает количество подписчиков его последователей или что-то в этом роде.

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

После того, как вы закончите или пока вы пишете код (даже лучше), вы можете объяснить, как ваша программа творит чудеса

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

9
ответ дан 24 November 2019 в 12:48
поделиться

Чтобы дать жене представление о том, что я делаю, чтобы получить зарплату (это настоящая работа! Я обещаю! Мы не просто просматриваем веб-страницы весь день!), Я сел с ней однажды вечером с Python и показал ей пару основных концепций: вызов функции (печать), присвоение и чтение переменной и принцип работы оператора if. Так как она учитель, я сравнил концепцию условных выражений с работой с дошкольниками :)

ЕСЛИ вы ударите Джонни, ТО вы успеете, ИНАЧЕ, вы можете перекусить.

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

# Guessing Game
import random

print("Guess a number between 1 and 100: ")

target = random.randint(1, 100)
guess = 0
guess_count = 1

while guess != target:
    guess_count += 1
    guess = int(input())

    if guess == target:
        print("Correct!")
    if guess < target:
        print("Higher...")
    if guess > target:
        print("Lower...")

print("Congratulations! You guessed the number in " + str(guess_count) + " guesses!")

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

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

8
ответ дан 24 November 2019 в 12:48
поделиться

Я думаю, вам следует загрузить какое-нибудь большое приложение win32, написанное на ассемблере AT&T, и показать это ей в блокноте и скажите ей: «Как видите, для программирования нужен такой сверхчеловек, как я».

12
ответ дан 24 November 2019 в 12:48
поделиться

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

Я обычно считаю, что идея «готовки» или «рецептов» подходит отлично подходить для объяснения вещей непрограммистам.

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

Есть несколько очень определенных этапов:

  • Сбор ингредиентов и инструментов для работы.
  • Подготовьте ингредиенты. Это сложно. например
    • получите 3 маленьких красных перца.
    • за каждый красный перец, который у вас есть, нарежьте его на кусочки размером около 1 см.
    • поместите кусочки красного перца в миску на потом.
  • Отдельно позвоните в приготовьте рис, и пусть она будет работать асинхронно в фоновом режиме, пока вы продолжаете готовить.

Я уверен, вы видите, к чему это идет ...;)

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

  • Сбор : (объявление того, что требуется для достижения цели, и их объединение).
  • Подготовка : измельчение ингредиентов или подготовка объектов подключения к данным и т. Д. Для первого использования.
  • Асинхронный : возможность выполнять одно действие, в то время как другое выполняется.
  • Функции : Приготовление риса, приготовление курицы и приготовление карри - все это требует отдельных процессов, и только в конце у вас может быть функция makeCurry (куриное мясо, рис).
  • Тестирование : убедитесь, что в процессе работы вы не работаете. не упустили ни одной детали, и все идет гладко - например, убедитесь, что курица приготовлена, прежде чем переходить к следующему этапу.
  • Мусор : После того, как вы закончите, вы должны убедиться, что вы прибрались. ; )
  • Принципы передовой практики : Существуют эффективные способы делать такие вещи, как приготовление пищи, начинающим программистам нужно учиться в дополнение к коду - иногда бывает трудно разобраться. например СУХОЙ, как эффективно нарезать ножом и не есть сырую курицу;)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

как эффективно нарезать ножом и не есть сырую курицу;)

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

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

как эффективно нарезать ножом и не есть сырую курицу;)

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

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

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

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

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

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

40
ответ дан 24 November 2019 в 12:48
поделиться

Был графический пакет CLI под названием LOGO , наиболее известный как Turtle Graphics , используемый для рисования фигур на экране с помощью таких команд, как LT 90, RT 105 и т. Д. Посмотрим, сможете ли вы это найти, было бы неплохо попытаться нарисовать что-то средней сложности.

LOGO - Логико-ориентированный графический язык программирования.

REPEAT 360 [FD 1 RT 1] -- draws a circle, etc.

Подробнее см. logothings или Википедия , в которой также есть ссылки на современные интерпретаторы логотипов.

7
ответ дан 24 November 2019 в 12:48
поделиться
  1. Программист пишет программы.
  2. Не занимаясь программированием, программист раздражает привлекательных женщин на своем рабочем месте.

Затем:

(источник: markharrison.net )

Теперь:

7
ответ дан 24 November 2019 в 12:48
поделиться

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

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

Например, что должно произойти, если пользователь введет отрицательную сумму кредита? Что делать, если пользователь не может позволить себе ссуду? Откуда заявка на кредит узнает об этом? Как заявка на ссуду узнает, какой банковский счет нужно проверить и какую историю платежей проверить (т. Е. кто на самом деле пользователь)? Что, если пользователь попытается ввести свое имя в поле суммы кредита? Что, если пользователь попытается взять кредит на срок более 75 лет? Должны ли мы ограничить выбор списком доступных длин?

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

Бонусные баллы, если вы сможете получить свой друг, с которым можно отреагировать: Но что, если мы что-то забыли? Что ж, тогда у нас есть ошибки, и теперь вы знаете, почему ни одна программа не свободна от ошибок :)

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

Бонусные баллы, если вы сможете получить свой друг, с которым можно отреагировать: Но что, если мы что-то забыли? Что ж, тогда у нас есть ошибки, и теперь вы знаете, почему ни одна программа не свободна от ошибок :)

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

Бонусные баллы, если вы сможете получить свой друг, с которым можно отреагировать: Но что, если мы что-то забыли? Что ж, тогда у нас есть ошибки, и теперь вы знаете, почему ни одна программа не свободна от ошибок :)

5
ответ дан 24 November 2019 в 12:48
поделиться

Определенно что-то либо с графикой, либо с окнами на языке более высокого уровня.

Почему? Непрограммист обычно тоже нематематик, поэтому он не получит красоты сортировки. Однако отображение чего-то нарисованного на экране («смотри, окно!», «Смотри, так мало набора текста, и у нас есть вращающийся трехмерный прямоугольник!») Может творить чудеса;)

4
ответ дан 24 November 2019 в 12:48
поделиться

Я говорю: покажите ему пузырьковую сортировку.

Это простой и понятный трюк, преобразованный в формальный язык.

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

1
ответ дан 24 November 2019 в 12:48
поделиться

Want to show her what programming looks like? Just pop a terminal and

find / 
2
ответ дан 24 November 2019 в 12:48
поделиться

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

2
ответ дан 24 November 2019 в 12:48
поделиться

Обычно я выбираю получение набора записей о клиентах из базы данных. Используя C # и LINQ в Visual Studio, создание веб-страницы и выгрузка клиентов базы данных «Борей» в сетку занимает максимум 10 минут. Приятно то, что «список клиентов» - это то, что может понять почти каждый.

1
ответ дан 24 November 2019 в 12:48
поделиться

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

1
ответ дан 24 November 2019 в 12:48
поделиться

Полностью зависит от уровня ее интереса (или уровня вашего интереса к ей ). Большинство людей задают этот вопрос как пустую беседу и не хотят знать.

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

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

С точки зрения языка: используйте что-нибудь вроде python. Действительно высокий уровень, вероятно, лучше без фигурных скобок.

1
ответ дан 24 November 2019 в 12:48
поделиться

Алиса , которая была разработана в Карнеги-Меллон.

Алиса - это инновационная среда программирования 3D, которая упрощает создание анимации для рассказа истории, интерактивной игры или видео для публикации в Интернете. Алиса - это обучающий инструмент для вводных вычислений. Он использует трехмерную графику и интерфейс перетаскивания для облегчения более увлекательного и менее утомительного первого опыта программирования.

1
ответ дан 24 November 2019 в 12:48
поделиться

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

Нет ничего плохого в том, чтобы начать с hello world, пока вы можете показать, что на самом деле с этим делает компьютер. Затем вы можете вводить по одной конструкции за раз. Вот на что похоже программирование - внесение дополнительных изменений и просмотр результатов.

Итак, у вас есть программа hello world. Теперь измените его на

string Name = getLine();
printf("Hello, %s", name);

, затем конструкцию if

printf("Do you like cake?");
string answer = getLine();
if(answer == "yes") {
    printf("Yeay! I like cake too!");
} else if(answer == "no") {
    printf("Filthy cake hating pig!");
}

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

и так далее. Я не думаю, что вам нужно углубляться в такие глубокие понятия, как рекурсия или даже функции.

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

4
ответ дан 24 November 2019 в 12:48
поделиться

alt text
(источник: wikimedia.org )

{
   wait for 6/8;
   play F (5), sustain it for 1/4 and a half;
   play E flat (5), sustain it for 1/8;
   play D flat (5), sustain it for 1/8 and a half;
   play F (4), sustain it for 1/16;
   // ...
}

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

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

3
ответ дан 24 November 2019 в 12:48
поделиться

Почему не просто показывать замедленное видео День из жизни Scrum-команды ?

2
ответ дан 24 November 2019 в 12:48
поделиться

В псевдокоде:

function dealWithPerson(person){
    if(ILike(person)){
        getCookie().giveTo(person);
    }
    else{
        person.tell("You shall receive no cookies!");
    }
}

dealWithPerson(Person.fromName("Nick"));
dealWithPerson(Person.fromName("John"));

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

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

.
1
ответ дан 24 November 2019 в 12:48
поделиться

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

  1. Представить блок-схему, показывающую движение логики простого приложения
  2. Написать инструкции на полном человеческом языке (например, английском)
  3. Сократить каждую инструкцию до короткой руки, используемой в языке программирования
  4. Выбрать менее загадочный язык, такой как Базовый или Паскаль, для учебных целей

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

Что касается хорошего алгоритма, то это еще одна история. Печально видеть, что на многих курсах вычислительной техники алгоритмам и кисти над ними больше не учат

.
1
ответ дан 24 November 2019 в 12:48
поделиться

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

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

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

например

IF today's date is the 1st of may then
  print to screen "Happy Birthday"
ELSE
  print to screen "It's not your birthday yet"

Красота псевдокода в том, что его может понять почти каждый, и в этом его суть.

.
2
ответ дан 24 November 2019 в 12:48
поделиться

Как это выглядит, когда ты работаешь?

Похоже на набор текста.

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

4
ответ дан 24 November 2019 в 12:48
поделиться

Робототехника отлично подходит для объяснения программирования, я думаю, потому что даже простые, надуманные примеры практичны. Робототехника, эквивалентная Hello World или распечатка списка номеров, может быть с движением робота по линии или вращением по кругу. Непрограммисту легко понять, что для того, чтобы робот сделал ЛЮБОЕ полезное, он должен сначала двигаться и позиционировать себя. Это позволяет объяснить простую структуру программы и управление потоком.

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

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

Такие вещи, как Robocode и LOGO, вероятно, действительно хороши для этого.

.
3
ответ дан 24 November 2019 в 12:48
поделиться

Джалф,

Обычно лучше всего показывает то, с чем человек уже знаком.

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

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

Такой фрагмент кода продемонстрирует: Общая структура поток Использование переменных и операторов Использование API

1
ответ дан 24 November 2019 в 12:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: