Мой папа с нетерпением ждет темпа моего обучения программированию. Что я делаю? [закрыто]


200

Так что мой папа купил мне 5 книг по программированию (C ++, Java, PHP, Javascript, Android) около месяца назад. Он архитектор, и он ничего не знает о программировании. Он купил их мне, потому что я сказал ему, что программирование было забавным, и я хотел изучить это.

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

Недавно он начал спрашивать меня, что я с ним сделал, и я показал ему созданную мной программу на C ++, которая берет то, что вы вводите, а затем присваивает значения каждой букве (A - первая буква в алфавите, поэтому она получает значение из 1) .. и так далее. Затем он складывает все значения и сообщает вам об этом. Таким образом, слово «добавить» будет иметь значение 9.

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

PS: Если у вас есть какие-либо советы по зонированию в книге, дайте мне знать

РЕДАКТИРОВАТЬ: Большое спасибо всем, вы не представляете, как много значит знать, что есть некоторые люди, которые понимают мою ситуацию. Я прочитал все и учту мнение каждого. ¡Gracias!


15
Комментаторы: комментарии предназначены для уточнения, а не для расширенного обсуждения. Если у вас есть решение, оставьте ответ. Если ваше решение уже опубликовано, пожалуйста, подпишите его. Если вы хотите обсудить этот вопрос с другими, используйте чат . Смотрите FAQ для получения дополнительной информации.

7
Кстати, вы должны показать ему эту ветку. Это может пойти дальше с ним, если он увидит мнение профессионального программиста о вашем прогрессе.
Collecter

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

15
Я не удивлен, что это было закрыто (это не по теме), но это один из тех вопросов, где я хотел бы, чтобы у нас был тег / флаг для "не по теме, но все равно оставайтесь". :)
Циклоп

12
Спросите своего отца, чем он занимался, когда ему было 14 лет
CodeART

Ответы:


197

Я показал ему программу на C ++, которую я сделал, которая берет то, что вы вводите, затем присваивает значения каждой букве (A - первая буква в алфавите, поэтому она получает значение 1) ... и так далее. Затем он складывает все значения и сообщает вам об этом. Таким образом, слово «добавить» будет иметь значение 9.

Я не знаю, что ты должен делать со своим отцом. Но:

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

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

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


8
Да, я амбициозно учился (эта конкретная программа дала мне около 60 головных болей).
Дэвид

8
@ Дэвид: Учитывая, что он архитектор, понятно, что он заботится о том, как все выглядит . Но если он ничего не знает о программировании, он не должен критиковать его. Графика, внешний вид программного обеспечения - только вершина айсберга .
Joonas Pulakka

12
Шутки в сторону? «Fatbooth» имеет несколько алгоритмов манипулирования графикой, на изучение и освоение которых уходят годы. Если твой отец хочет, чтобы ты овладел распознаванием лиц, он должен был купить книгу об этом. Это может выглядеть легко (потому что это легко использовать), но это труднее достичь, чем вы думаете, давая вам несколько 60-х головных болей вместе взятых. Предполагать, что такие приложения, как «Fatbooth» легко сделать, является серьезным (но скрытным) оскорблением для программистов.
Спойк

121
+1 для блин впечатляет . Это, особенно учитывая, откуда вы пришли. Я полагаю, вы могли бы спросить своего отца, сколько зданий он когда-либо занимался, тем более работал самостоятельно, через месяц после того, как начал с нуля изучать свое ремесло. Поместите вещи в условия, к которым он может относиться.
CVN

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

88

Покажите ему этот пост от Питера Норвиг. Норвиг возглавляет отдел исследований и разработок в Google и преподает в Стэнфорде, в частности, в области искусственного интеллекта, он написал стандартную вводную книгу по искусственному интеллекту . Как долго вы над этим работаете? Я не ожидал ничего большего после месяца работы новичка без дополнительных инструкций, особенно с чем-то сложным, как C ++. Все, что стоит изучать, стоит учиться хорошо.


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

  2. Знайте, что даже если ваш папа, несомненно, неправ (пять совершенно разных тем - это много, что можно бросить на ребенка сразу), он тоже немного прав. Многие люди пытаются освоить программирование, подражая «учебникам», которые они находят в сети. Это не всегда плохо, но IMO это обычно не приводит к твердому пониманию. Правильная книга научит вас основам в первую очередь. Это может быть не так увлекательно, как следование учебникам, которые сделают что-то броское, но ваш шанс на долгосрочный успех возрастет, а количество вопросов, которые вы должны задать на stackoverflow.com, уменьшится.

  3. Забудьте обо всех книгах, кроме одной, по крайней мере пока. Похоже, вы уже начали с C ++, так что если вам это нравится, соглашайтесь с этим.

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

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

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

  7. Теперь, когда вы подошли к тому, чтобы иметь простую работающую программу, и вы, очевидно, немного изучили C ++, какие интересные маленькие программы вы можете написать? Как насчет кредитного калькулятора, который принимает процентную ставку, сумму кредита и срок кредита и распечатывает график платежей? Или калькулятор, который читает молекулярную формулу, такую ​​как «H2SO4» или «C6H12O6» и распечатывает вес молекулы? Это не намного сложнее, чем программа, которую вы уже написали.


47
+1 «Забудь обо всех, кроме одной книги»
П.А.

9
+1 за отличные, практичные идеи. При обучении самой сложной частью часто является идея проекта, в то время как вы задыхаетесь в новой информации.
Морган Херлокер

5
+1 «Помни, что твой папа ...» Приятно видеть там точку зрения своего отца, даже если он подавляет энтузиазм Дэвида своим собственным волнением помочь.
Джон Макинтайр

7
Сделайте небольшой инструмент для решения проблем архитектуры / Calc, вовлекая своего отца!
Вайбхав Гарг

3
+1 за первый балл. Я думаю, что для родителей очень важно думать о своих детях как о самых умных в мире. В конце концов, если бы не такое отношение, ОП, я уверен, не сделал бы так много за месяц. Тем не менее, это может привести к чрезмерным издержкам, если у OP будет очень много головной боли.
Антон Строгонов

53

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

«Папа, твой подход к этому делает обучение программированию абсолютно не веселым .


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

1
да, но если ОП просто сидит и берет его, то папа чувствует, что он прав; В конце концов, его ребенок не очень много работал. Ребенок должен говорить в какой-то момент, чтобы его отец понял, как усердно он работает.
Кевин

1
@CyprUS Правда, но я сейчас сжимаю слово робототехника. Это была любовь всей моей жизни год назад. У меня был Lego Mindstorms Kit, установлен RobotC и все такое. Мне это нравилось до тех пор, пока мой папа не получил «настоящие» шестерни и моторы и не сказал мне сделать что-то «настоящее», например, роботизированную руку. Теперь ненавижу робототехнику со страстью.
Чанди

48

Как архитектор, он наверняка тянет вас за ногу или грубоват.

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

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


44
Также совет вашему отцу (хотя и выходит за рамки вопроса): отбросьте отношение Гордона Рамсея . Это работает только на Hell's Kitchen, потому что соперники - это опытные взрослые, которые, как ожидается, будут знать, как готовить и совершенствовать в своем ресторане, а Гордон отдает должное. Если вы сделаете это для начинающего новичка или детей, это только отпугнет их от изучения практики. Стоит отметить, что Рамсей более хорош в других сериалах, поскольку на карту поставлен не его собственный бизнес.
Спойк

30

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

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

Когда я был ребенком, я использовал много ресурсов, когда учился программировать. У меня были инструкции, прилагаемые к моему TI 99 / 4A, которые содержали множество забавных программ для рисования изображений и анимации. Интернет был недоступен для меня, но были даже компьютерные журналы, предназначенные для детей, с программами, которые я мог набирать и получать немедленные отзывы, и статьями о том, как решать другие виды задач. Я очень любил серию шпионских романов, которая позволяла мне печатать и отлаживать программы, которые были включены как часть истории. К сожалению, я не думаю, что такого рода ресурсы все еще существуют, но есть несколько книг по программированию, предназначенных для молодых людей, таких как книга Hello World по Python и Land of Lisp (хотя это тоже интересно для взрослых).

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

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

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

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

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

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

Чтобы взглянуть на вещи в течение последних четырех недель или около того, я работал в некоторых эзотерических уголках функции Engines в фреймворке Ruby on Rails. На сегодняшний день мне наконец-то есть что показать с точки зрения пользователя. Я многому научился за это время и разработал много критически важного базового кода, который работает довольно хорошо, но является моим профессиональным эквивалентом, позволяющим пользователям набирать некоторые вещи и получать что-то еще: на первый взгляд это не так впечатляет обычного пользователя , но много работы ушло на это. Если бы кто-то сказал мне, что я трахаюсь в течение четырех недель, я был бы очень разочарован, но я также знал бы, что у них есть только малейшее понимание того, что делает вещи настолько «простыми».


2
+1 за обрезание зубов на TI 99 / 4A. Практически такая же история для меня, программирование было забавным, и начать заниматься этим было гораздо доступнее (или, может быть, это так и казалось). Моя дочь (10 лет) проявляет интерес к обучению программированию, и мне с трудом приходится думать о забавном, но итеративном способе ее начала. Для ОП с нуля знаний до 1 месяца и выполнение того, что вы сказали, звучит прямо на PAR.
Ominus

Оминус (и Дэвид), взгляните на «Обработка» и на эту книгу Мэннинга: manning.com/pearson
JasonTrue

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

@ Давид спасибо за ссылку. Заказал книгу для дочери сегодня утром.
Оминус

@Jason: он упомянул, что он был ребенком 14 лет.
CyprUS

19

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

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

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


16

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

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

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

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

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

Просто помните, что вы делаете это, потому что вам это нравится.


1
Послушай этого человека, он знает, о чем говорит;)
drxzcl

2
Хе-хе, мне нравится «тот факт, что непрограммисты должны увидеть что-то визуально впечатляющее, прежде чем они будут впечатлены». Написание генератора фракталов было одним из моих первых проектов в школе информатики. И я был впечатлен сам :)
Гийом

Вероятно, лучший ответ во всей этой теме ...
Venki

15

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

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

Отцы наверняка могут быть упрямыми, но я все же думаю, что у вас есть возможность изменить свою индивидуальность и выбор с помощью этого упражнения. Не из чувства неповиновения, а из-за вашего собственного стремления и стремления хорошо знать предмет программирования. Лично, похоже, твой отец бросил тебя в глубокий конец, когда дело доходит до программирования. Конечно, это может быть не MIPS Assembly Language или LISP, но все же C ++? Ява? Хлоп. Я люблю программировать, но чтение этих книг на ранних этапах могло бы все меня выключить. Шучу. :)

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


15

Похоже, никто еще не предложил это:

Недавно он начал спрашивать меня, что я с ним сделал, и я показал ему созданную мной программу на C ++, которая берет то, что вы вводите, а затем присваивает значения каждой букве (A - первая буква в алфавите, поэтому она получает значение из 1) .. и так далее. Затем он складывает все значения и сообщает вам об этом. Таким образом, слово «добавить» будет иметь значение 9.

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

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

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


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

@FergusMorrow Согласен. Этот ответ получил слишком мало голосов.
Stommestack

12

Делай что хочешь

Это твоя жизнь. Ты можешь делать что захочешь. Не позволяйте никому (даже вашему отцу) контролировать вашу жизнь.

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

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

Так что вы делаете в этой ситуации? Стой на своем, не слушай никого и делай все, что тебе кажется стоящим.


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

1
@jwodder: Если эти родители чувствуют, что им нужно контролировать то, чему их мальчик учится в свободное время , тогда, возможно, он будет лучшим противником как можно скорее. У меня тоже есть дети, один такой же старый, как Дэвид. Если мой ребенок не сможет сказать мне, что я ошибаюсь, когда она так думает, я буду бояться за ее будущее. 14-летний не 7-летний, он знает кое-что о мире и знает то, чего не знают его родители. И если он оказался не тем, кем они хотели, они потерпели неудачу все годы назад, и у них больше нет шансов наверстать упущенное, меньше всего, продолжая делать то, что они делали в течение 14 лет.
ВОО

10

Вы просили книги. Честно говоря, вы будете решать проблемы лучше, чем читать книги. Найдите загадку или проблему, которой вы увлечены. Project Euler - отличный источник, и CodeGolf может предложить интересные вопросы по случаю. Моим первым программным проектом было приложение на C ++, которое находило простые числа. Учебник, который я использовал в то время, предлагал простую реализацию, подобную этой:

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

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

Будете ли вы учиться, читая книги? да, но я не могу подчеркнуть ценность просто дурачиться с языком программирования и обучения методом проб и ошибок.

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

Попробуйте прочитать книгу Линуса Торвальдса «Just For Fun», в которой он рассказывает о происхождении операционной системы Linux. Название говорит само за себя.

Шутки в сторону. Просто взломайте какую-нибудь проблему. Застряв, вовлеки старика.

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


TL; DR


  1. Просто возиться с чем-то. Решить задачу. Если вы не можете решить это, найдите решение другого и попытайтесь понять это.
  2. Веселитесь с # 1
  3. Всякий раз, когда вы узнаете что-то или добьетесь успеха, не забудьте рассказать своему старику.
  4. Побейся. Каждый учится по-своему и по-своему. Просто продолжайте в том же духе, и в конце концов у вас будут навыки делать все, что вы захотите.

1
На самом деле, он конкретно заявляет, что он не просил книги .... В остальном я согласен с этим
Пол

6

Попытайтесь найти книгу, которая является определенно введением в программирование для новичков. Может быть, что-то вроде Hello World! Компьютерное программирование для детей и других начинающих Уоррен Санде.

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


5

На мой взгляд, у вас есть две проблемы:

  1. Вы хотите изучать программирование и развлекать его (веселье важно, оно делает все проще)
  2. У вас есть клиент, который действительно ничего не понимает в программировании, но знает, чего он хочет. (Твой папа в твоем случае)

ИМХО:

  1. Для решения вашей первой проблемы вы просто заходите на такие сайты и задаете вопросы, как вы. Найдите ресурсы, подобные этим https://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263 . Подумайте о том, что вы хотите создать (игра, список дел, система управления коллекцией фильмов, следующая лучшая социальная платформа) и просто начните писать код. Или начать с решения головоломок. Где я могу найти программирование головоломок и задач?

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

Надеюсь это поможет.


+1 Мне нравится ваш пост, но я не думаю, что кто-то здесь даже предлагал этому парню узнать, каковы ожидания его отца. Кажется, немного преждевременно исключать ожидания отца, не зная, кто они.
user179700

5

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

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


5

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

На самом деле, я рекомендую тот, которого у вас еще нет: Python. Python - это язык, который довольно легко выучить, но он также достаточно мощный. C ++, Java, PHP и Javascript намного сложнее.

Есть несколько книг от Мэннинга, которые учат программированию на Python. Я бы настоятельно рекомендовал «Привет, мир!», Даже если он нацелен на немного более молодую демографию.

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

Хотя это скорее «справочник», а не «учебник». Я не знаю ни одного хорошего учебника по С ++ - там куча книг типа "научи себя быстрому С ++", но я не думаю, что они очень полезны. (C ++ - довольно сложный язык для изучения в первую очередь; большинство программистов на C ++ начинали с более простого языка).


Согласитесь, Python - лучший выбор в качестве первого языка. C ++ великолепен, но он очень мощный и сложный в использовании - все равно что учиться летать на самолете, прежде чем учиться ходить. С python вы можете использовать библиотеки сразу и делать забавные вещи. Ваша функция string_add состоит из 5 строк читаемого кода. Например, def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum(\ n - новая строка \ t -tab) или использование более продвинутого функционального программирования - это одна строка. string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
Доктор Джимбоб

+1 На изучение C ++ у меня ушло около года, а на Python - всего десять минут.
правостороннее

+1 Я бы также порекомендовал Head First Programming, которая использует Python.
Дэвид

4

О C ++, Java, PHP, JavaScript и Android (так что вы можете выбрать между ними, потому что попытка освоить все сразу может привести к неудаче):

  • C ++: это чрезвычайно мощный язык. Но слишком мощный, слишком неумолимый, слишком загадочный, чтобы начать с него. Вы должны понять многое, чтобы начать. Я думаю, что это плохой выбор языка для запуска слишком программы.
  • Java: популярный выбор для начинающих. В некотором смысле, это противоположность C ++: C ++ предлагает вам любой мыслимый способ выстрелить себе в ногу, в то время как Java пытается не допустить ничего, что может быть вне вашего контроля, что на самом деле довольно парализует. Это немного слишком упрощенно, слишком тривиально, слишком ограниченно, чтобы показать вам большую часть программирования. И вы не сможете сделать многое в Java, не зная большого количества стандартного API и нескольких фреймворков. Java как технология может многое предложить, но имеет свои недостатки как язык.
  • PHP: очень популярный язык, в основном из-за низкого входного барьера. PHP как язык стал более зрелым и теперь богат возможностями, которые можно ожидать от современного языка. Однако по историческим причинам PHP несет с собой много багажа. Так что, хотя это действительно позволяет писать хорошие программы, мало кто это делает, и вы не найдете столько информации о том, как это сделать. А стандартная библиотека это бардак. Если вы решите написать PHP, я советую начать работу с фреймворком с самого начала, так как они обычно способствуют надежному решению распространенных проблем. Лично я рекомендую Symfony , Flow3 и CakePHP . Однако мой совет: не начинай с этого.
  • JavaScript: удивительно мощный язык, когда вы его узнаете. У него есть «несколько» причуд , но на самом деле вы должны быть в состоянии с этим жить. Хотя изначально он использовался для добавления интерактивности к HTML-страницам, теперь JavaScript можно использовать в нескольких областях. Помимо классического использования, она может быть использована для разработки приложений для настольных и мобильных платформ с как Appcelerator , PhoneGap и AIR и для создания серверов с помощью Node.js .
    Есть много библиотек JavaScript и фреймворков. Я предлагаю вам проверить нокаут и jQuery, а также qooxdoo и ext.jsесли вы ищете что-то полноценное. Кроме того, для разработки на стороне сервера вы должны проверить express.js .
    Кроме того, я хотел бы отметить CoffeeScript , язык, который компилируется в JavaScript, но имеет немало дополнений, которые пригодятся.
  • Android: в отличие от других четырех, это платформа. Платформы следует выбирать в зависимости от того, что вы хотите сделать. Если это разработка мобильных приложений для Android-устройств, то сделайте это. Не уверен, что это лучшая вещь для начала, но в конечном итоге вам нужно создавать вещи, которые вы считаете классными.

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

  • Почему Poignant Guide - Лично для меня это было слишком много отвлекающих факторов (шуток, мультфильмов и т. Д.) В этой книге, но вам это может понравиться.
  • Прагматичный Рубин - отлично сработал для меня. Это немного сухо, но это просто имеет дело с основами.

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

И, вероятно, на потом, я хотел бы указать вам на haXe . Я думаю, что это отличный язык (мой язык выбора), и есть совсем новое руководство для начинающих , которое было выпущено совсем недавно. Однако у haXe нет доступных инструментов, которые делают создание приложений одинаково простым, как с JavaScript и Ruby. Поэтому вам может показаться утомительным или даже разочаровывающим, что побеждает всю цель.


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

@CyprUS: Хотя я согласен, оба стоит учиться, но я не думаю, что это хороший выбор, чтобы начать учиться программировать. Кроме того, я не вижу, как LISP или семья Smalltalk могли бы извлечь что-то существенное из обоих.
back2dos

Я думаю, что мы должны позволить мальчику решить, что он хочет сделать. Тем не менее, LISP / SmallTalk слишком эзотеричны, чтобы иметь общую полезность (мое мнение)
CyprUS

@CyprUS: я только предложил совет. В конце концов он должен выбрать. Я не имел в виду LISP или SmallTalk, но (частично) перекрывающийся класс современных языков, которые они создали, в частности, Ruby, Squeak, Objective-C, Lua, Scala, Erlang, Clojure, JavaScript, F #, Nemerle, Scheme. Все они на самом деле используются, а некоторые даже входят в число самых популярных языков .
back2dos

3

Это довольно много, чтобы попытаться ожидать через один месяц. Скорее вы должны попытаться сконцентрироваться на изучении одного языка или парадигмы за раз, или это может быть ошеломляющим. Слишком много пихнуть за раз - это еще и хороший способ отключиться. Вы можете учиться лучше, работая над интересующей вас программой. Если вас интересуют телефоны Android, вам, вероятно, лучше использовать Java, а не C ++. Он, возможно, ожидал, что какой-нибудь пользовательский интерфейс будет обычным клиентом, так что не разочаровывайтесь его разочарованием :)

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


3

Я думаю, что вы должны отложить более формальные вещи на данный момент и взглянуть на Scratch - http://scratch.mit.edu/ - он позволяет вам легче справляться с большинством программных конструкций, в то же время изучая материал вам нужно как петли и т. д.

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

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


+1 - Scratch - потрясающий и интересный способ обучения. Он на самом деле разработан с учетом возрастных ограничений, но все еще остается завершенным по Тьюрингу. Кроме того, проверьте BYOB (Создайте свои собственные блоки) для объектно-ориентированного расширения Scratch.
Морган Херлокер

3

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

Я не сомневаюсь в тебе. На ранних стадиях вы пытались стать программистом. Это впечатляет меня .

Держись, и удачи тебе в карьере программиста!


3

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


3

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

Если бы я работал вдвое больше, когда я был в твоем возрасте ...


3

Вклад вашего отца не способствует вашему учебному процессу. Да, есть несколько способов пройти обучение программированию, как уже упоминали другие. Однако, на мой взгляд, вы показали феноменальный прогресс в C ++. Ваша программа добавления была бы тем, с чем я едва справился после первого семестра в Java-программировании.

Есть две вещи, которые вы должны решить, если хотите продолжить:

1) Обращайся с отцом.

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

2) Найти фокус.

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

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


3

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

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

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

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

И удачи вам в программировании - похоже, вы отлично начинаете.


может быть, добавление «вундеркинда» не будет слишком много, а? Создание такой программы будет непростым
делом

@CyprUS - я не комментировал его специфические способности (хотя я уверен, что они в порядке). Это было связано с его отцом на самом деле.
Саймон Найтс

3

Одна вещь, не упомянутая в других ответах:

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

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

Во-первых, программирование - это решение проблем. Когда вы не знаете, как сделать X на языке XYZ, вы гуглите его и ищите решения. * Быстрый поиск решений так же важен для программиста, как и использование клавиатуры.

Во-вторых, еще одним важным навыком является использование документации . Книги, как правило, похожи на учебные пособия - они предлагают руководство, но они не предлагают вам полные знания - и здесь документация пригодится. Например: вы программируете на C ++, у вас есть месяц опыта. Рано или поздно (я бы сказал, довольно скоро) вам понадобится использовать стандартную библиотеку ... или, может быть, вы уже использовали ее? Если это так, то это хороший знак, в этом случае ваша книга, вероятно, не плохая. В любом случае, будет полезно узнать, что уже присутствует в стандартных библиотеках C ++, а что нет. Для этого полезно постоянно держать ссылку наподобие http://cplusplus.com/ во время программирования.


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


2

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

Вы сказали своему отцу, что вам нравится программирование - не позволяйте ему испортить это для вас. И, конечно же, не пытайтесь изучать 5 языков программирования, по крайней мере, не сейчас. Придерживайтесь относительно простого, как Java, который может быть передан другим, когда вы освоите его.

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

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


2

Я думаю, что многие программисты в возрасте от 25 до 35 лет выросли, играя в Nintendo и Sega. Большая часть из них / нас сделала умственный переход к тому, зачем играть в игру, когда вы можете сделать свою собственную. Это очень корыстная мотивация, которая может заставить вас стать лучшим программистом. Это начало. Позже вы можете перейти от написания видеоигр (виртуальные проблемы) к играм с более высокими ставками (проблемы реального мира). Подобно тому, как этот рецепт для этого пациента не будет неблагоприятно взаимодействовать с другим прописанным лекарственным средством, могут ли эти грузовики доставить наибольшее количество доставок с наименьшим количеством газа, чтобы уменьшить загрязнение, или как я могу гарантировать, что покупка этого запаса купит по цене, которую я хочу, когда есть тысячи других, покупающих его в то же время.


1

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

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

Для сравнения рассмотрим космонавтов. У них тоже есть новый мир, к которому они совершенно не готовы. Они должны начать с основ, например, как перемещаться по комнате.

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

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

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


0

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

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


0

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

Прежде всего, я бы порекомендовал вам выучить C, потому что это простой язык, и многие другие языки (такие как C ++, Objective-C) построены на C. То, как мы это сделали, было то, что мы должны были купить микрочип ( в нашем случае это Atmel Mega16 с комплектом STK 500, который представляет собой просто плату со светодиодами и кнопками на ней), а затем мы просто поигрались с ним, запрограммировали программы, чтобы сделать его bip и bop. Это веселее, чем просто читать и писать привет программам мира IMO.

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

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

Удачи мой друг!


Я бы порекомендовал что-то кроме C ++ для изучения ООП. Python хороший. C ++ является настолько сложным языком, что пытаться изучать ОО-концепции с ним очень больно; хотя, когда вы действительно изучите их, вы будете знать, что делать со многими из этих непрозрачно выглядящих функций.
nmichaels
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.