在项目中学习语言?

时间:2009-06-25 00:55:10

标签: programming-languages

您是否尝试过在项目中学习某种语言?我有,从我个人的经验来看,我可以说它需要勇气,努力,时间,思考,很多咖啡因和睡眠。有时这必须在没有选择的情况下完成,有时你选择这样做;如果您正在从事个人项目,例如。

我在这种情况下通常做的事情,我相信每个人都做的,是在我目前对语言,结构,语法和逻辑的了解之上“建立”。我觉得难以应付的是,在某些情况下完整性的差异。有些语言为将来的学习和“语言学习”提供了良好的背景,它们是一个很好的信息来源或参考框架,可以“坚定”地掌握将要发生的事情。其他语言形成或引入了一种新的思维方式,并且更难习惯。

有时候你会无意中用特定的语言思考,当被引入一种新的思维方式时,一种新的语言会引起混淆,或者让你迷失在你的新语言和当前语言知识的“边界”之间。

在这种情况下,什么是一个好的解决方案?应该用什么来拓宽新语言的知识,一种新的思维方式,并在新语言的“边界”内维护或整合其他语言的现有知识?

10 个答案:

答案 0 :(得分:8)

我发现我需要做一个正确学习语言的项目,但那些可以是个人项目。当我在工作中学习Python时,我首先期待(并且发现)我的工作效率显着下降了一段时间。我阅读了标准教程,编码标准,并且我潜伏在Python列表上一段时间,这让我更好地了解了该语言的最佳实践。

在学习语言时做一些编码dojos和东西的事情可以帮助你对事物有所了解。我刚刚换了工作并回到了Java,我花了一些时间研究玩具程序只是为了重新获得对事物的感觉(我也在阅读Effective Java,第2版,因为我之前的主要经验是Java 1.4) )。

答案 1 :(得分:4)

我认为,无论学习语言的动力如何,在某些方面,你必须首先在新语言中模仿好的模式。无论这意味着找到一本好书,有优秀的代码示例,良好的在线教程,还是跟随经验丰富的开发人员的领导,你必须首先考虑用特定语言编写优秀代码的意义。一旦你获得了一定程度的舒适度,你就可以开始分析并尝试替代你学到的模式,寻找应用你从其他语言中学到的东西的方法,但要遵守“规则”。语言。最终,你会知道你可以“破坏你之前学到的规则”,因为你有足够的经验知道它们何时适用/不适用。

我个人的偏好,即使被迫学习一门新语言,也是从一些丢弃的代码开始。即使从优秀的教程开始,你也会毫无疑问地编写代码,以后你会回顾它而不理解你有多么愚蠢。如果可能的话,我更愿意将我的第一次尝试写入一个将被丢弃的语言代码中,而不是以后再回来困扰我。另一种方法是在您学习越来越多的时候花费大量时间进行重构。最终,你最终也会这样做。

答案 2 :(得分:3)

我想在这里提到ALT.NET

  

自我组织的开发人员社区,希望自我提升,挑战假设,并帮助彼此追求卓越的软件开发实践。

因此,在ALT.NET的精神中,伸出你的舒适区学习新语言很有挑战性但很有用。一些对我有帮助的事情如下:

  1. 了解语言或脚本背后的历史。了解进化有很大帮助。
  2. 选择正确的书。研究StackOverflow和Amazon.com找到合适的书籍,帮助您缓解成长的烦恼。
  3. OOP在大多数成熟语言中相当普遍,因此您可以在许多书中跳过许多与OOP相关的章节。语法学习将是一个渐进的过程。我通常会为它添加一些快速方便的指南。
  4. 尽可能多地阅读社区论坛,以了解新语言的常见缺陷。
  5. 参加一些本地聚会,与社区互动,分享您的痛苦。
  6. 通过构建一个不那么复杂的应用程序,从而获得动力,一次取一个音高。
  7. 确保为需要学习的内容创建参考框架。像处理安全性,日志记录,多线程一样的事情。
  8. 心胸开阔,你可能很挑剔,但如果你讨厌某些东西,那就不要学习那种语言。
  9. 最后,我认为值得学习一种强大的语言,如C#或Java,一种函数式语言和一种脚本语言,如ruby或python。

    这些对我有很大帮助,我认为这将有助于所有软件工程师和架构师真正适应任何开发环境。

答案 3 :(得分:2)

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

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

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

  • 阅读代码和文档。
  • 聆听社区的邮件列表和博客。
  • 与语言专家交谈,幸运的是其中有几位是我的直接队友。
  • 编写练习代码,并要求进行代码审查和指导。(Zend_Console_Getopt是我的第一个重要的PHP贡献。)
  • 学习与语言一起使用的工具。 PHPUnitXdebugphpDocphing等。

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

这也有助于我在大学学习编译器设计课程。在如何构建语言方面拥有良好的基础,可以更轻松地学习新语言。在某种程度上,它们只是抽象运行时堆栈和对象引用的方式。

答案 4 :(得分:1)

如果您是团队的初级成员并且不懂语言,那么这根本不是问题。只要有一些代码审查和监督,您就可以高效。

语言语法是一个问题,但架构差异是一个更重要的问题。许多语言也是开发平台,如果您没有平台方面的经验,则不知道如何创建可行的解决方案架构。因此,如果您是项目负责人或单独工作,那么在进行设计工作之前,您最好在平台上获得一些经验。

例如,我会说一个没有VB经验的有经验的C#编码器可能会在VB.NET项目中幸存下来。实际上,对于只有C#/ ASP.NET经验的开发人员来说,完成一个C#WPF项目而不是VB ASP.NET项目会更困难。一位经验丰富的PHP开发人员可能会对ColdFusion项目犹豫不决,但他们可能不会犯任何严重的错误,因为他们熟悉基于脚本的Web开发架构。

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

答案 5 :(得分:1)

我喜欢在处理项目时学习一门新语言,因为真正的项目通常会迫使我学习我可能会跳过的语言方面。我喜欢的第一件事就是阅读那种语言的代码,然后跳进去。我随时都会找到资源(比如书籍和各种网站)。

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

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

答案 6 :(得分:0)

在我看来,你应该尽量避免这种情况。我知道,大多数情况下,你无论如何都不能尝试将新语言与旧语言混合在一起,并且永远不会添加旧习惯,习惯和模式。

始终尝试找到能够帮助您以语言工作方式完成新语言的资源,而不是像其他语言那样;这将永远不会有一个美好的结局,如果确实如此,将很难以正确的方式修改它。

干杯。

答案 7 :(得分:0)

是的,我有。

我的意思是,还有另一种方式吗?我学到的唯一不在项目中的语言是ABC basic,这就是我在第一台计算机上使用的语言。

答案 8 :(得分:0)

我建议如果你从某种语言开始,坚持下去。我只是说,因为过去很多次我尝试过越来越多不同的,而我开始使用的是最好的:D

答案 9 :(得分:0)

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

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

为此,我只是尝试使用我所知道的语言做同样的事情并比较输出。为此,我创建了一个小项目(托管在Github上),附带练习单,并对我学到的每种语言进行校正。在我看来,这是一种学习的好方法,因为它为你提供了一个真正的小项目。