Подтвердить что ты не робот

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

В прошлом у меня было несколько фальшивых запусков, которые я преподавал, как программировать. Я работал над несколькими книгами (в основном с C и Python), и в итоге просто изучил синтаксис, не чувствуя себя так, как будто я мог бы сесть и написать программу для себя. Когда я пытаюсь просмотреть исходные деревья проекта на Codeplex или Sourceforge, я никогда не знаю, с чего начать читать код - зависимости, похоже, идут во всех направлениях.

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Лучший способ научиться программированию - решить проблему, которую вы хотите (нужно) решить, а затем решить ее. Но самое главное, WRITE CODE. Когда вы читаете книги по программированию, выполняйте ВСЕ упражнения. Убедитесь, что вы сделали все правильно. Там нет замены для написания кода. Не заменяйте привинчивание, а затем фиксируйте его.

Ответ 3

Stack Over F.. wait no, heh.

Самое большое время для меня, как правило, относится к поиску лучшего ответа. "Я часто обнаруживаю, что у меня возникнут проблемы, которые я знаю, как решить, но чувствую, что есть лучшее решение и продолжать охоту за ним. Только через несколько часов/дней я пришел в себя и понял, что у меня есть 7 экземпляров Firefox, каждый из которых содержит по меньшей мере 5 вкладок, растянутых через 46" пространства для монитора, и я понимаю, что меня поймали в черной дыре это стремление к бесконечному знанию.

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 7

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

Ответ 8

Я могу понять ситуацию, в которой вы находитесь. Чтение книг, даже многие не сделают вас программистом. Что вам нужно сделать, это НАЧАТЬ ПРОГРАММИРОВАНИЕ.

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

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

Так что входите в его гущу и плавайте прямо... Как вы это сделаете.

Удачи.

Ответ 9

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

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

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

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

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

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

Учитывая то, как вы, кажется, хотите, чтобы вас вели, возможно, вы должны стать наставником.

Ответ 10

Не узнайте, как использовать указатели и как вручную управлять памятью. Вы упомянули C, и я потратил много времени на исправление ошибок, вызванных смешением * x и & x. Это зло...

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

Как только вы почувствуете, что можете написать что-то простое, см. книгу/учебник по объектно-ориентированному дизайну. Это не лучшее, что может предложить мир, но это может оказаться интуитивным. Если нет, проверьте функциональное программирование (например, LISP, языки Scheme или Haskell) или программирование в логике (например, Prolog). Может быть, это подойдет вам лучше.

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

Всем поклонникам C: На самом деле язык C очень велик. Это позволяет оптимизировать использование памяти в объеме, недоступном для языков высокого уровня как Python или Ruby. Скомпилированный код также очень быстрый и является единственным выбором для RTOS или современного 3D-движка. Но это не хорошая точка входа для новичков, что я считаю.

Ох, и удачи вам! И не стесняйтесь спрашивать! Если вы не спросите, ответа гораздо труднее найти.

Ответ 11

Здесь есть отличный совет, в других сообщениях. Вот мои мысли:

1) Научитесь печатать, причины объясняются в этой статье Стив Йегге. Это поможет больше, чем вы можете себе представить.

2) Чтение кода обычно считается трудной задачей. Таким образом, лучше получить проект с открытым исходным кодом, скомпилировать его и начать изменять его и учиться так, а не читать и пытаться понять.

Ответ 12

Предполагая, что у вас есть достойные математические навыки, попробуйте http://projecteuler.net/ Он представляет собой серию проблем для решения растущего уровня, который должен быть разрешен путем написания короткие программы. Это должно дать вам опыт в решении конкретных проблем, не теряясь в деталях проектов с открытым исходным кодом.

Ответ 13

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

Ответ 14

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

Какую среду разработки вы используете? Если вы разрабатываете для Windows, вы действительно должны разбираться в создании проектов, добавлении кода, выполнении и отладке в Visual Studio. Вы можете бесплатно загрузить Visual Studio Express из Microsoft.

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

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

Вероятно, труднее найти эти типы учебников для разработки Python или C. Существует избыток их для разработки .Net.

Ответ 15

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

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

Я потратил около 1 месяца на учебники по About.com Delphi. Как и люди diss about.com, учебники Zarko Gajic's были просты в понимании и легко следовать. Как только у меня была базовая умность языка и среды IDE, я сразу перешел в проект, экспортирующий данные учета для программы под названием "Адепт". Взял меня немного, но я добрался туда...

Самая большая помощь для меня заключалась в личном проекте. Я разработал бот IRC на Java для дрянной 2D-игры под названием Soldat. Я многому научился, планируя и кодируя собственный проект.

Теперь мне очень нравится Delphi Pascal, SQL, С# и Java. Я думаю, как только вы получите один язык ООП, вы можете изучить синтаксис другого языка, и его намного легче поймать.

Ответ 16

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

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

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

Ответ 17

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

Ответ 18

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

Например, я нашел Agile Web Development with Rails, чтобы быть очень простым способом изучить Ruby on Rails, намного лучше, чем просто читать рубиновое руководство или даже пробираясь вокруг разбросанных веб-руководств.

Ответ 19

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

Ответ 20

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

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

Удачи!

Ответ 21

Работа над проектами/проблемами, которые вы уже знаете, как решить частично

Ответ 22

Вы должны прочитать статью Майка Кларка: Как я узнал Ruby. По сути, он использовал тестовую среду для Ruby для использования разных языков.

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