2010-08-07 2 views
10

Я только начал изучать Java (со ссылкой на книгу Head-First).Каков ваш способ изучения языка?

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

Как получить максимальную отдачу от книги?

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

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

(я только что прочитал ответы друга здесь регулярно)

+0

Вы, вероятно, хотите отметьте этот вопрос «Community Wiki», чтобы он не сразу закрылся. –

+0

попробовал http://stackoverflow.com/search?q=learning+a+language%3F? – Iznogood

+0

@ Carl: Спасибо, сделано :) –

ответ

13

«Лучший» способ зависит от вас - мой собственный подход можно резюмировать следующим образом:

  • читать книгу
  • написать код
  • повтор

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

0

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

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

0

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

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

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

1

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

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

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

На самом деле делать вещи - это ключ независимо от того.

0

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

Раньше я читал много книг, но сегодня с помощью stackoverflow и учебников везде, где я нахожу, что я нуждаюсь в них все меньше и меньше.

0

Я обычно предлагаю лучшую книгу (одна с большинством рекомендаций), и я просматриваю ее очень быстро, просто чтобы получить общее представление о языке, передовой практике и т. Д. Тогда я либо думаю, либо google программа который мог бы охватить все, что вы можете сделать с этим языком (хорошо, а не каждый, но, насколько это возможно). Например, когда я изучаю Java EE (JSP, Servlets, JPA), я решил написать простую игру для палача, сначала я бы сделал основы, затем добавлю базу данных и т. Д. - Сначала я сделал очень базовую программу, затем я добавил все больше и больше. Конечно, я во время написания этого документа всегда бывал в поиске хорошей практики, потому что вы можете что-то закодировать, и это будет работать, но может быть, черт возьми, сохранить его в будущем и т. Д.

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

2

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

0

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

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

2

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

  • Используя любой графический интерфейс рамки языка использует
  • Используя такие вещи, как сокеты, потоки, и т.д.
  • Синхронизация
  • OOP стиль (если язык ООП)
  • Многопоточность
  • Делать вещи динамически (для плагинов)
  • Если я делаю это правильно, когда я запрашиваю обзор кода.
  • Как использовать другие механизмы

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

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

0

Для меня: Я изучаю язык, только начинаю проект. Я узнал C# .NET этим летом, запустив веб-проект на C#. Когда я застрял на чем-то, я либо google, либо просто получаю выгоду от stackoverflow !! Если вы не чувствуете себя уверенно: запустите мини-проект с Java и посмотрите, как он идет!

0

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

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

0

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

Скорее, возьмите книгу, пройдите каждый пример, попробуйте задать некоторые вопросы в главе, введите код из примеров и подумайте о творческих способах изменения программы в соответствии с вашими потребностями. Вы также можете дополнить свое обучение, просмотрев видео-лекции, предоставленные Stanford's Engineering Everywhere или OCW MIT. В вашем случае первая серия бесплатной видео-лекции Стэнфорда начинается с Java, переходит на C++, затем глубже в MIPS и некоторые языки сценариев.

Проверьте это: http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111

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

+0

Спасибо chiurox :) –

0

Я часто следующее:

  • чтения книги, которая говорит о том же вещь (например, Java интро, Java для начинающих, Java лобовом первый и т.д.)

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

  • читать коды, которые другие люди пишут.

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

  • присоединиться к форуму и принять участие в обсуждении.

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

0

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

Если вы (или кто-либо еще читающий этот вопрос) заинтересованы, вы можете зарегистрироваться This site для введения в компьютерную науку. Есть также много других хороших курсов по opencourseware. Этот класс, в частности, представляет собой потоковое или загружаемое видео с лекциями с заданиями, тестами и викторинами, все 100% и учителями MIT.

Если у вас уже есть опыт работы CS, то, пожалуйста, игнорировать меня :)

0

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

Смежные вопросы