2009-07-22 5 views
7

Дома я работаю над большим персональным проектом, написанным на Java. Недавно я нашел работу в качестве разработчика C#.Почему я не могу одновременно сохранить 2 языка в голове?

После 8-часового рабочего дня, читающего код C#, мне очень сложно вернуться на Java дома. На самом деле, мой домашний проект застопорился почти полностью, так как я работал.

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

+0

@ Kirtan Как это связано не с программированием? – balpha

+0

Это определенно связанное с программированием. – TheCodeMonk

+5

Честно говоря, я не думаю, что это проблема для большинства людей. Я использую VB, SQL и XSLT на работе, Java, PHP и C# дома. У меня никогда не было проблемы переключения между ними, и я никогда не слышал о том, что у кого-то проблемы с переходом между ними до сих пор. – Welbog

ответ

11

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

+0

Возможно, но помимо времени, необходимого для переноса существующего кода, я также не хочу * уйти в отставку * – mafu

+0

@mafutrct: Точно, «вы не меняете лошадей в середине потока!» (но серьезно, почему бы не подумать об этом как знак re (de) вместо увольнения) –

+0

if (java_mood) { WorkInJava(); } else { if (want_to_continue_project) { SwitchLanguage(); } else { Принять (IsDead (Project)); } } – harriyott

9
  1. Используйте хорошую (и сопоставимую) IDE в обоих случаях. Я переключаюсь между C# и Java и нахожу сочетание Visual Studio с JetBrains ReSharper для C# и IntelliJ Idea для Java делает это простым.

  2. Празднуйте различия - я нахожу, что заклинание в C# помогает моей Java и наоборот. Различия в, например, структурах коллекции просто помогают глубже понять реализации на каждом языке.

  3. Используйте сходства в своих интересах. Синтаксически различия не велики. Вы должны писать код, а не писать C# или писать Java. Как сказал Стив МакКоннелл, «код на язык, а не в язык» (или что-то в этом роде - думаю, что это от Код Завершить).

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

+0

Я не уверен, что остановит меня, пытаясь использовать Java API в PHP: P –

+0

Мне действительно нужно выкопать мою книгу «Полный код» - она ​​находится внизу кучи книг. Я не читал прошлое, как первые несколько страниц, LOL. – Zack

+0

@ Эйден: Я думаю, он имел в виду искать сходства синтаксиса. В течение недели я нашел около 3-5 языков. C#, C++, PHP и т. Д. – Zack

7

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

Это может помочь обобщить: программирования логики знаний + синтаксис и API = Язык Знание ... потому что ...

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

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

Я пришел к выводу, это потому, что:

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

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

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

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

Извините за плохой RDBMS аналогии

4

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

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

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

4

Интересно, связано ли это сходством между этими конкретными языками. Конечно, я на самом деле не использовал C#, но, похоже, он похож на Java. Сходство может затруднить переход контекста с работы на хобби. Возможно, вы могли бы узнать и перейти на Python, Haskell, Lisp и т. Д. Для вашего личного проекта.

+0

Я думал то же самое. Бьюсь об заклад, не было бы такой путаницы, если бы они не были языками c-стиля. Я нашел ту же проблему, двигающуюся вперед и назад с C++ до C#. – JimDaniel

3

Вы могли бы потратить некоторое время на программирование на совершенно другом языке в свободное время. Например, напишите что-нибудь в Haskell, Prolog, Mercury, Oz, или Factor.

Когда (если?) Вы возвращаетесь к Java, его сходство с C# будет намного более впечатляющим, чем его отличия.

0

У меня есть аналогичная вещь на работе. Я пишу код в JavaScript и C#, но дома пишу код в Python и JavaScript.

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

-1

Я думаю, что java для добросовестного, и .net для ленивых. Возможно, кто-то будет злиться на это, но я хочу сказать, что я .Neter. Синтаксис .net менее строг, чем java. На самом деле в исходном коде .net есть некоторые упрощения. , например, мы можем использовать Convert.toDateTime (string) для прямого преобразования строки в DateTime. Но в java мы должны сделать определение формата строки, например, «yyyy-dd-mm», после чего мы можем конвертировать.

+0

.NET дает вам выбор. DateTime.ParseExact ("yyyy-dd-MM") выполняет точное преобразование формата. – Jimmy

+0

Еще один способ сказать, что Java для повторяющихся, .NET для эффективного :) –

+0

Также, как это связано с исходным вопросом? Вы говорите, что парень ленив? –

5

Во-первых, если вы программируете на 8 часов на любом языке, это может быть не переключение языков, а просто перерыв в программировании. Я могу говорить только за себя, и я знаю, что некоторые SO'ers могут чувствовать себя иначе, но мне часто нужен перерыв в программировании после полного рабочего дня.

В настоящее время я предпочитаю программировать на Python, но моя работа требует, чтобы я выполнял сценарии оболочки, Java, JavaScript, PHP и IDL (это интерактивный язык данных, а не язык описания интерфейса). Итак, я пытаюсь сделать некоторые Python дома, чтобы сохранить эти навыки от атрофии. То, что я нахожу (в дополнение к частому перерыву, как упоминалось выше), заключается в том, что я часто меняю языки, когда я переключаюсь с одного на другой. В этот момент легко отказаться, но я нахожу, что по мере того, как я мысленно углубляюсь в программирование на данном языке, я делаю меньше ошибок из-за путаницы языка. Так что, может быть, если вы можете просто отказаться от первого нежелания использовать Java, у вас будет успех. YMMV, конечно, и удачи!

5

Это связано с чем-то в психологии, называемым эффектом интерференции, или эффектом Stroop. Эти две задачи тесно связаны (программирование), поэтому знание, введенное в ваш разум одним языком, мешает познанию, введенному в ваш разум другим языком.

Вот милый пример простой задачи, что трудно сделать из-за этого эффекта:

http://www.apa.org/science/stroop.html

2

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

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

Есть упражнения для поддержания себя Когнитивные гибкие. Один из них - переключиться на некоторое время (пару минут) на Java вместо того, чтобы тратить столько времени на C#. Это похоже на то, когда вы программируете на Java и переключаетесь на SQL, а затем в HTML. Вы гибки и переключаетесь.

Удачи.

+0

Звучит интересно. Короткий умственный переход, а не на самом деле быть продуктивным, но держать ум гибким. – mafu

2

Как я ответить на этот вопрос я чувствую, что мне нужно сделать некоторые предположения здесь на основе личного опыта. Я пишу код на C++ или C# по боковым проектам, а на работе меня вынуждают болтаться между php и python. Было время, когда я был без постоянной дневной работы и довольно много работал над побочными проектами.

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

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

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

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

0

Знаете, когда вы перегружены работой: это когда вы пытаетесь найти ключ F1 в кабине лифта, чтобы запустить его!

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