为什么我不能同时保留2种语言?

时间:2009-07-22 13:39:01

标签: programming-languages

在家里,我正在开发一个用Java编写的大型个人项目。我最近找到了C#开发人员的工作。

在阅读C#代码的8小时工作日之后,我发现很难在家里切换回Java。实际上,自从我受雇以来,我的家庭项目几乎完全陷入停滞。

起初我以为我必须等待休假才能真正切换回Java,但即使在大脑上没有C#一周之后,我也无法再次进入Java风格。我不想承认我的家庭项目已经死亡,但我无法真正找到解决这个问题的方法。

14 个答案:

答案 0 :(得分:11)

如果情况那么糟糕,你可以在C#中再次启动项目吗?它可能比等待你的java气氛更快回来。它应该比从头开始更快,因为你已经编写了逻辑和域,所以你可以翻译并输入你的方式。

答案 1 :(得分:9)

  1. 在两者中使用一个好的(和可比较的)IDE。我在C#和Java之间切换,找到Visual Studio与JetBrains ReSharper for C#和IntelliJ Idea for Java的组合使这很简单。

  2. 庆祝差异 - 我发现C#中的咒语有助于我的Java,反之亦然。例如,集合框架的差异只会帮助您更深入地理解每种语言的实现。

  3. 根据您的优势使用相似之处。从语法上讲,差异并不大。您应该编写代码,而不是编写C#或编写Java。正如Steve McConnell所说的那样,“将代码转换为语言,而不是 语言”(或类似的东西 - 认为它来自 Code Complete )。

  4. 事实上,如果您还没有阅读代码完成 - 非常适合在语言之间进行翻译。

答案 2 :(得分:7)

我想你可以称之为习惯性的恢复时间,。

它可以帮助推广到:编程逻辑知识 + 语法和API =语言知识......因为......

人类是习惯的生物,根据我们最常执行的环境和任务,建立有效的工作方法,记忆和心理。这是一件好事。

我最近花了很多时间用Python编程,经过很长一段时间几乎100%的C。我非常容易地选择了Python,现在又转回C.对于我的意外,我认为我会遇到的问题(缺少分号,随机的缩进冲动)不存在。

我的结论是因为:

  1. 当我编写Python时,我经常(每天)查看其他项目的C源代码,以便记住那些我没有记录得太好的项目。因为我的C项目适合Python的东西。
  2. 我一直在关注一些Python的C实现
  3. 我想诀窍是将新技能与旧技能联系起来,这样当你在新技能组中执行任务时,你的大脑仍在思考旧技能及其相关性。许多理论认为学习是基于你心中的这种关系基础,而了解它可以帮助你减少学习曲线和恢复时间。

    将其想象为关系数据库。当您执行新操作时,请创建一个forign键并将其标准化。不要创建一个全新的表或数据库。

    学习编程逻辑的概括,并在语言之间进行更改的基础上进行构建。您将学习/切换更快。

    对不好的RDBMS类比

    抱歉

答案 3 :(得分:6)

答案 4 :(得分:5)

首先,如果您使用任何语言进行8小时的编程,那么可能无法将语言切换为只需要打破编程。我只能为自己说话,而且我知道有些人可能会有其他感觉,但是经过一整天的工作后,我经常需要休息。

目前我更喜欢用Python编程,但是我的工作要求我做shell脚本,Java,JavaScript,PHP和IDL(这是交互式数据语言,而不是接口描述语言)。所以,我尝试在家里做一些Python,以防止这些技能萎缩。我发现的(除了经常需要休息时,如上所述)是当我第一次从一个切换到另一个时,我的语言很混乱。在这一点上很容易放弃,但我发现随着我在精神上更深入地使用给定语言进行编程,我会从语言混乱中减少错误。所以,也许如果你能够超越第一次不愿意使用Java,你就会获得成功。 YMMV,当然,祝你好运!

答案 5 :(得分:5)

这是因为心理学中称为干扰效应或Stroop效应。这两项任务密切相关(编程),因此一种语言带入你脑海中的知识会干扰另一种语言带入你脑海中的知识。

这是一个很简单的任务的可爱例子,由于这种影响很难做到:

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

答案 6 :(得分:4)

在两个不同的框架之间切换非常困难。如果你很长时间没有这样做,那就更难了。

我认为,这个问题必须回到你身边,因为你应该问自己现在的喜好。如果您仍然喜欢Java并希望将您的技能保持在Java中,那么您可能需要花费更多的时间来进行半日常工作。在晚上和周末使用它,并确保它们之间没有长时间休息。

如果您现在更喜欢C#并且真的没有兴趣继续使用Java,我会将家里的项目转换为C#,因为这样只会让您成为更好的C#程序员并让您在日常工作中更好。

答案 7 :(得分:4)

我想知道这是否与这些特定语言之间的相似性有关。虽然我实际上并没有使用过C#,但它似乎与Java非常相似。相似之处可能使得从工作到业余爱好的上下文变得困难。也许您可以了解并切换到PythonHaskellLisp等个人项目。

答案 8 :(得分:3)

您可以尝试在业余时间用完全不同的语言编程。例如,在HaskellPrologMercuryOzFactor中撰写内容。

当你(如果?)回到Java时,它与C#的相似之处将远远超过它的差异。

答案 9 :(得分:2)

这很正常。这可能是 认知灵活性和不灵活性 的问题。它也发生在人类的演讲中。

检查自己。如果你经常在<8小时的工作日阅读C#代码之后在家工作太累了,而且你也想要完成你的项目,现在你发现难以在java中编码,你可能会患有焦虑症。如果你喝一些能量饮料,咖啡,可乐,那么你就是喜欢焦虑。

有让自己保持认知灵活的练习。其中之一是将一段时间(几分钟)切换到Java,而不是在C#中花费这么多时间。就像用Java编程并且必须切换到SQL,然后转换为HTML一样。你正在变得灵活和切换。

祝你好运。

答案 10 :(得分:2)

当我回答这个问题时,我觉得我需要根据个人经验做出一些假设。我在C ++或c#中编写代码,而在工作中我被迫在php和python之间摇摆不定 曾经有一段时间,我没有稳定的日常工作,并且非常忙于辅助项目。

当我找到我的日常工作时,我对我方项目的热情基于两个主要因素而减少......就像你一样,我每天工作8到9个小时。

2,我增加了稳定的额外收入来源,所以为了谋生而大大降低了编码的动力,我发现自己越来越多地选择在工作之后不接受任何新项目因为我不再心情。

我还发现,在这种新态度下,我开始在使用c ++进行编码时犯了新手错误。在改变态度之后,事情再次发生了。

我最好的猜测是,你正在经历我正在经历的同样的事情。我建议你在离开工作后找到新的激励方法,你会发现继续用java编程会更容易。

答案 11 :(得分:0)

我有类似的事情在起作用。我用JavaScript和c#编写代码,但在家里我用Python和JavaScript编写代码。

我有时会在c#中编写python样式代码,然后让我的测试失败。我同意Nat的观点,即使用与您的工作语言完全不同的语言进行工作将有助于您了解相似之处,并且他们只会在库存在的地方存在差异!

答案 12 :(得分:0)

你知道什么时候你工作过度了:当你试图在电梯舱里找到F1钥匙启动它的时候!

答案 13 :(得分:-1)

我认为java是勤奋的,而.net是为了懒惰。 也许有人会对此感到愤怒,但我想说我是一个.Neter。.net语法不如java的严格。事实上在.net的源代码中,有一些简化。 例如,我们可以使用Convert.toDateTime(string)直接将String转换为DateTime。 但是在java中,我们应该对字符串的格式进行定义,例如“yyyy-dd-mm”,然后我们就可以转换了。