Как ввести компьютер неграмотного 50-летнего в программирование [закрыто]

10

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

"Как я могу выучить C ++?"

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

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

Во всех случаях ему просто нужно было что-то прочитать. Чему его научить. Он впитывает информацию, как губка.

Я не сомневаюсь в мотивации моего отца или в способности делать это, поэтому моя общая цель просто:

Погрузи моего отца в мир компьютеров и приведи его на путь программирования.

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

Поэтому я вас всех спрашиваю: с чего мне все это начинать? И каковы лучшие ресурсы там? Должен ли я заставить его запустить Linux вместо Windows? С ++ плохая идея?

Помните, ему нужно (ИМО) сначала изучить компьютеры, а затем получить первое понимание (опыт "Hello world") программирования.

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

А также, я намерен начать его с C ++ (без Python, Java и т. Д.), Потому что я знаю это лучше всего и смогу помочь ему на протяжении всего пути с кодом. (У меня сейчас минимальные знания на других языках).

Изменить: я получаю много постоянных предложений по использованию Python. Единственная причина, по которой я хотел сделать C ++, заключается в том, что я ЗНАЮ это и могу быть ТАМ, когда моему отцу нужна помощь. Моим ОЧЕНЬ ПЕРВЫМ знакомством с программированием была Java. Я выучил Java, и у меня это получилось. Я открыт для других предложений, но, пожалуйста, обеспечьте эффективное применение ваших предложений.

РЕДАКТИРОВАТЬ № 2: Я понимаю, что мой подход / мышление / знания могут отсутствовать здесь. Я студент второго уровня бакалавриата CS. Если вы не согласны с чем-либо в моем посте, скажите мне, почему - дайте мне идеи, информацию - вот почему я спрашиваю в первую очередь. Сузить мою общую цель до конкретных достижимых целей.

skippr
источник
1
Этот вопрос не относится к профессиональной разработке программного обеспечения. Хотя в течение нашего дня мы должны взаимодействовать с другими людьми, техническими и нетехническими, а иногда обучать их, мы не являемся профессиональными учителями или инструкторами и не можем дать хороший совет о том, как лучше всего кого-то научить. Если вы хотите обсудить это дальше, вы можете задать вопрос на нашем Мета-сайте .
Томас Оуэнс
@ThomasOwens, откуда вы знаете, что в сообществе нет профессиональных учителей или инструкторов? Меньше ли просмотрели Мета, куда я должен идти? Я полагаю, что могу с этим согласиться (хотя мне бы очень хотелось остаться здесь), пожалуйста, перенесите это для меня. Если есть что-то, что я могу сделать, чтобы этот вопрос соответствовал критериям для лучшего рассмотрения сообществом SO / Programmers, пожалуйста, помогите мне сделать это.
Skippr
1
Насколько мне известно, нет сайта, который бы принял этот вопрос. Я просто просмотрел список и не увидел ни одного. Если вы хотите обсудить это дальше, пожалуйста, задайте вопрос о Meta .
Томас Оуэнс
@ThomasOwens Ну, я здесь не для того, чтобы скулить или троллить, поэтому я сделаю все возможное с этим. Спасибо
Skippr
Подводя мой ответ в комментариях ... Вопреки ответам ниже, я думаю, что C ++ на самом деле отличный первый язык. Особенно для начинающих. Вы начинаете с тривиального ввода-вывода консоли, и C ++ в этом отношении гораздо более удобен для новичков, чем Java или C #. Меньше кода котельной плиты, чтобы сбить его с толку. Конечно, есть расширенные функции, которые могут вызвать путаницу, но вы можете пойти очень далеко, ограничившись несколькими базовыми функциями.
Лорд Тидус

Ответы:

13

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

Если он хочет научиться выражать идеи в формальной логике, пойти на что-то, что делает это простым. Я бы выбрал Pascal (для разработки на уровне приложений) или Python (для работы на уровне сценариев), потому что они оба разработаны так, чтобы быть интуитивно понятными и легкими для изучения в качестве основных приоритетов. Если он действительно знает принципы написания кода, то, если он действительно заботится о C ++, он может его взять.

По той же причине не запускайте его на Linux вместо Windows, потому что тогда у него есть две проблемы, на которых нужно сосредоточиться: изучение Linux и изучение кодирования одновременно! Держите отвлекающие факторы к минимуму.

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

Несколько лет назад я увидел игру и подумал: «Я мог бы сделать это, и я мог бы сделать это лучше». Поэтому я запустил Delphi и начал выяснять принципы. Я все еще изучаю новые вещи из этого личного проекта, и по пути я стал действительно хорошим программистом! Так что попробуй это; спросите своего отца, что он хотел бы сделать, если бы он мог программировать - и убедитесь, что это возможно, и достаточно мал по объему, так как у него еще нет опыта, - а затем сядьте с ним и начните выяснять с ним, как это сделать. Это.

И если у него есть какие-либо вопросы, получите ему учетную запись StackOverflow. :)

Мейсон Уилер
источник
4

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

Есть несколько вещей, которые важны для программирования:

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

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

Итак, я бы посоветовал вашему отцу с первого взгляда взяться за гораздо более простой язык программирования: Ruby, Python, C, C #, Haskell и т. Д. (Haskell определенно труден для людей, которые программировали только императивные языки, но я Было бы любопытно узнать, испытывают ли полные новички такое же чувство "рыбы из воды".)

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

Как только ваш папа познакомится с функциями, классами, объектами, методами, то мелочи и нюансы C ++ не будут так подавляющими. Черт, даже начинать с C было бы проще: это не прощает , но есть меньше запутанных функций, о которых нужно беспокоиться.

Вам любопытно, что Linux против Windows; Я не уверен, что различие имеет большое значение. Если он уже знаком с той или иной средой, переключение - это еще одно препятствие. Если он не знает ни того, ни другого, я бы предложил Linux, но в основном потому, что установка хороших инструментов смехотворно проста: apt-get install <foo>работает в большинстве дистрибутивов, а не поддерживаемые дистрибутивы aptчасто предоставляют нечто подобное. Минуту спустя, ваш аккуратный новый пакет установлен, часто быстрее, чем мне понадобилось бы, чтобы найти надежный источник загрузки для предварительно скомпилированных двоичных файлов Windows, который не пахнет троянскими конями.

sarnold
источник
У моего отца определенно есть та «способность мыслить», которая так важна для программистов. Я вижу его здравый смысл и ум в том, что он делает сейчас, и я знаю, что это может быть применено в программировании. Давайте предположим, что у нас есть оптимальный кандидат для обучения. Мой вопрос: как мы можем получить их там?
Skippr
Хм, я разбил навыки на разные категории, чтобы понять, что увязнуть в синтаксисе и семантике может затмить развитие других навыков - язык с меньшим количеством правил тайного чувства позволит упростить процесс абстракции - но я кажется, не указали эту точку зрения хорошо.
Сарнольд
1
Из предложенных языков я бы предпочел Python. Но, если ваш папа склонен к зрению, процессинг (см. Www.processing.org) может быть интересным введением (хотя есть много видов проблем, для которых он не подходит).
Джеймс Янгман
@James: хе, я не думаю, что когда-либо видел фразу « Интерактивные программы, использующие ... вывод PDF раньше». :)
Sarnold