代码之家  ›  专栏  ›  技术社区  ›  Secko

在项目中学习语言?

  •  5
  • Secko  · 技术社区  · 15 年前

    你有没有尝试过在项目中学习一门语言?我有,根据我的个人经验,我可以说这需要勇气、努力、时间、思考、大量的咖啡因和睡眠。有时这必须是没有选择的,有时你选择这样做;例如,如果你是在一个个人项目上工作。

    在这种情况下,我通常会做的,而且我相信每个人都会做的,是在我目前对语言、结构、语法和逻辑的知识基础上“建立”起来。我发现很难应付的是,在某些情况下,诚信的差异。有些语言为未来的学习和“语言学习”提供了良好的背景,它们是一个很好的信息来源或参考框架,能够“坚定”地把握未来。其他语言形成或引入了一种新的思维方式,很难习惯。

    有时你会无意中用一种特定的语言来思考,当你被引入一种新的思维方式,一种新的语言时,可能会引起混乱,或者使你迷失在你的新语言和你当前的语言知识之间。

    在这种情况下,什么是好的解决方案?应使用什么来扩大新语言的知识、新的思维方式,以及在新语言的“边界”内保持或纳入其他语言的现有知识?

    10 回复  |  直到 9 年前
        1
  •  8
  •   Kathy Van Stone    15 年前

    我发现我需要做一个项目来正确地学习一门语言,但是那些可以是个人项目。当我在工作中学习了python时,我第一次想到(并且发现)我的工作效率有一段时间明显下降。我阅读了标准教程、编码标准,并在Python列表中潜伏了一段时间,这让我对语言的最佳实践有了更好的了解。

    学习一门语言时,做一些诸如编码dojos之类的事情可以帮助你对事物有一种感觉。我最近刚刚换了工作,回到Java,我花了一些时间在玩具程序上,只是为了找回对事物的感觉(我也在阅读有效的Java,第二版,就像我以前的Java 1.4的主要经验)。

        2
  •  4
  •   tvanfosson    15 年前

    我认为,在某些方面,无论学习语言的动力是什么,你都必须从模仿新语言中的好模式开始。无论这意味着要找到一本好书,要有出色的代码示例、良好的在线教程,还是在经验更丰富的开发人员的带领下,您都必须先理解用特定语言编写好代码意味着什么。一旦你达到了一个舒适的水平,你就可以开始扩展和试验你所学的模式的替代品,寻找应用你从其他语言学到的东西的方法,但是要遵守语言的“规则”。最终,你会发现你可以打破之前学过的规则,因为你有足够的经验知道它们何时适用。

    我个人的偏好,即使是被迫学习一种新语言,也是从一些废弃的代码开始。即使从好的教程开始,毫无疑问,您也会编写代码,稍后您将回顾这些代码,并且不理解您可能有多么愚蠢。如果可能的话,我更喜欢把它作为我第一次尝试语言代码的方式来写,这将被丢弃,以后不会再回来困扰我。另一种方法是,随着您了解的越来越多,花大量时间重构。最终,你也会这样做。

        3
  •  3
  •   BenMorel Pankaj Kumar    10 年前

    我想在这里提到alt.net

    自组织、特设的开发人员社区,受自我提升、挑战假设和相互帮助的愿望所约束,在软件开发实践中追求卓越。

    因此,本着alt.net的精神,走出舒适区学习新语言是一项挑战,但很有用。一些真正帮助我的事情如下:

    1. 理解语言或脚本背后的历史。了解进化有很大帮助。
    2. 选择合适的书。研究stackoverflow和amazon.com,找到合适的书来帮助你缓解成长的痛苦。
    3. OOP在大多数成熟语言中相当常见,因此可以跳过许多书籍中与OOP相关的许多章节。语法学习将是一个渐进的过程。我通常会给一些方便快捷的指南加上书签。
    4. 阅读尽可能多的社区论坛,了解新语言的常见缺陷。
    5. 参加一些当地会议,与社区互动,分享你的痛苦。
    6. 通过构建小而不那么复杂的应用程序,一次完成一个音调,从而获得动力。
    7. 确保为需要学习的内容创建一个参考框架。比如如何处理安全性、日志记录和多线程。
    8. 思想开放,你可以批评,但如果你讨厌某件事,那就不要学那种语言。

    最后,我认为学习一种强大的语言,如C语言或Java,一种函数语言和一种脚本语言,如Ruby或Python是值得的。

    这些东西极大地帮助了我,我认为将帮助所有软件工程师和架构师真正为任何开发环境做好准备。

        4
  •  2
  •   Bill Karwin    15 年前

    在我被聘为Zend框架项目的项目负责人之后,我学习了PHP。

    这有助于我有20年的专业编程背景,以及对C、Java、Perl、JavaScript、SQL等的很好的知识。在我的大部分职业生涯中,我也倾向于使用动态脚本语言。我用awk编写了应用程序,用shell编写了框架,用troff编写了宏包,甚至只用sed编写了一个论坛。

    有助于在工作中学习语言的事情:

    • 阅读代码和文档。
    • 收听社区的邮件列表和博客。
    • 与语言方面的专家交谈,幸运的是其中几个人是我的直接队友。
    • 编写实践代码,并要求进行代码审查和指导。( Zend_Console_Getopt 是我第一个重要的PHP贡献)。
    • 学习与语言配套的工具。 PHPUnit , Xdebug , phpDoc , phing 等。

    当然,我确实应用了我从其他编程语言中学到的知识。许多计算机科学概念都是语言通用的。给定语言的差异通常只是惯用的,一种用另一种语言表达可以用另一种方式完成的事情的方式。对于像Perl或PHP这样的语言来说尤其如此,它们都从早期的语言中借用了大量的习语。

    这也有助于我在大学里选修了编译器设计课程。在构建语言的基础上有了良好的基础,更容易掌握新的语言。在某种程度上,它们都只是抽象运行时堆栈和对象引用的方法。

        5
  •  1
  •   Paul Keister    15 年前

    如果你是团队的初级成员,不懂语言,这不一定是个问题。只要有一些代码审查和监督,您就可以成为一个有生产力的人。

    语言语法是一个问题,但体系结构差异是一个更重要的问题。许多语言也是开发平台,如果您没有使用该平台的经验,就不知道如何创建一个可行的解决方案体系结构。所以,如果你是项目负责人或是独自工作,在做设计工作之前,你最好在平台上有一些经验。

    例如,我会说,一个没有VB经验的有经验的C编码人员很可能会在一个VB.NET项目中生存下来。事实上,对于只具有C/ASP.NET经验的开发人员来说,完成C_WPF项目比完成VB ASP.NET项目要困难得多。一个有经验的PHP开发人员在ColdFusion项目上可能会有点犹豫,但他们可能不会犯任何严重的错误,因为他们熟悉基于脚本的Web开发体系结构。

    许多概念,如对象建模和数据库查询策略,可以很好地在语言之间转换。但是对于一个新的平台来说,总是有一个学习曲线,有时它会非常糟糕。最糟糕的情况是项目必须被抛出,因为架构太错误了,无法重构。

        6
  •  1
  •   L. Mills    15 年前

    我喜欢在项目中学习一种新语言,因为 真实的 项目通常会强迫我学习语言的某些方面,否则我可能会跳过这些方面。我喜欢做的第一件事就是用那种语言读代码,然后跳进去。我找到资源(如书籍和各种互联网网站)来帮助我继续前进。

    然后,在我研究了一段时间之后,我喜欢阅读(或重新阅读)有关该语言的书籍或其他资源。到了这个时候,我已经掌握了一些知识,这将有助于巩固一些东西,并指出我在理解上完全错误的地方。例如,我可以看到我对语言之间的相似性做了错误的假设。

    这也适用于工具——在使用工具一段时间并学习基础知识之后,阅读(或略读)文档可以教会我很多东西。

        7
  •  0
  •   JRGuay    15 年前

    在我看来,你应该尽量避免这种情况。我知道,大多数时候你不能,但无论如何,不要把新语言和旧语言混合在一起,也不要把旧习惯、练习和模式混合在一起。

    总是尝试寻找资源来帮助你以语言的工作方式,而不是其他语言的工作方式,通过新的语言;那将永远不会有一个快乐的结局,如果它这样做,将很难修改到正确的方式。

    干杯。

        8
  •  0
  •   Lennart Regebro    15 年前

    是的,我有。

    我是说,还有别的办法吗?我所学过的唯一一种语言是ABC BASIC,它是你在我的第一台电脑上使用的语言。

        9
  •  0
  •   alexyorke    15 年前

    我建议你从某种语言开始,坚持下去。我这么说是因为过去我试过很多次,尝试了越来越多的不同的方法,而我刚开始使用的方法是最好的。

        10
  •  0
  •   P1kachu    9 年前

    每当我有/想要学习一门新语言时,我就强迫自己去寻找代码。

    但是为了确保我做得很好,我总是希望能够检查我的代码和它输出的内容。

    为了做到这一点,我只是尝试用我所知道的语言做同样的事情,并比较输出。为此,我创建了一个小项目(托管在 Github )带着练习表和我所学的每一种语言的批改。在我看来,这是一个很好的学习方法,因为它给了你一个真正的小项目。