Изучать язык на проекте? - PullRequest
5 голосов
/ 25 июня 2009

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

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

Иногда вы непреднамеренно мыслите на определенном языке, и когда вы знакомитесь с новым мышлением, с новым языком, это может вызвать путаницу или затерять между «границами» вашего нового и вашего текущего знания языков.

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

Ответы [ 10 ]

8 голосов
/ 25 июня 2009

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

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

4 голосов
/ 25 июня 2009

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

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

3 голосов
/ 25 июня 2009

Я хотел бы упомянуть ALT.NET здесь

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

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

  1. Понимание истории языка или сценария. Знание эволюции очень помогает.
  2. Выберите правильную книгу. Исследуйте StackOverflow и Amazon.com, чтобы найти нужную книгу, которая поможет вам справиться с проблемами роста.
  3. ООП довольно распространено в большинстве зрелых языков, поэтому вы можете пропустить многие главы, связанные с ООП, во многих книгах. Изучение синтаксиса будет постепенным процессом. Я обычно ставлю в закладки несколько быстрых полезных руководств для этого.
  4. Прочитайте как можно больше форумов сообщества, чтобы понять общие подводные камни нового языка.
  5. Посетите некоторые местные встречи, чтобы пообщаться с сообществом и поделиться своими трудностями.
  6. Выполняйте по одному шагу за раз, создавая небольшие, но не сложные приложения и получая тем самым импульс.
  7. Убедитесь, что вы создали контрольную рамку для того, что вам нужно выучить. Такие вещи, как безопасность, ведение журнала, многопоточность обрабатываются.
  8. Будьте непредубежденными, вы можете быть критически настроенными, но если вы что-то ненавидите, не изучайте этот язык.

Наконец, я думаю, что стоит изучить один сильный язык, такой как C # или Java, один функциональный язык и один язык сценариев, такой как ruby ​​или python.

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

2 голосов
/ 25 июня 2009

Я выучил PHP после того, как меня наняли в качестве руководителя проекта Zend Framework.

Помогло то, что у меня было 20 лет профессионального опыта программирования и хорошее знание C, Java, Perl, JavaScript, SQL и т. Д. Я также стремился к динамическим языкам сценариев для большей части моей карьеры. Я написал приложения на awk, фреймворки в оболочке, макропакеты в troff, я даже написал форум, используя только sed.

Что поможет выучить язык на работе:

  • Чтение кода и документации.
  • Прослушивание списков рассылки и блогов сообщества.
  • Разговаривая со специалистами по языку, к счастью, некоторые из них были моими ближайшими товарищами по команде.
  • Написание тренировочного кода и просьба о проверке кода и о коучинге (Zend_Console_Getopt был моим первым значительным вкладом в PHP).
  • Изучение инструментов, которые соответствуют языку. PHPUnit , Xdebug , phpDoc , phing и т. Д.

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия данного языка часто просто идиоматичны, это способ излагать то, что можно сделать другим способом на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют много идиом из более ранних языков.

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

1 голос
/ 25 июня 2009

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

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

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

1 голос
/ 25 июня 2009

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

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

Например, я бы сказал, что опытный кодер C # без опыта работы с VB, вероятно, прекрасно справится с проектом VB.NET. На самом деле, разработчику, имеющему опыт работы только в C # / ASP.NET, будет сложнее завершить проект C # WPF, чем проект VB ASP.NET. Опытный разработчик PHP может немного сомневаться в проекте ColdFusion, но он, вероятно, не допустит серьезных ошибок, потому что знаком с архитектурой веб-разработки на основе сценариев.

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

0 голосов
/ 03 июля 2015

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

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

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

0 голосов
/ 06 декабря 2009

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

0 голосов
/ 26 июня 2009

Да, у меня есть.

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

0 голосов
/ 25 июня 2009

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

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

Приветствие.

...