选择新语言学习的标准

时间:2009-11-14 17:22:49

标签: programming-languages

有很多主题讨论下一步要学习的语言。但是,这些线程无法将任务本身考虑在内。我很好奇社区对学习新语言的标准有何看法。我看到一些标准:

  1. 您对某种语言的兴趣。
  2. 您对特定项目的兴趣。
  3. 您的学习语言(即实践与学术)的好处
  4. 学习语言的时间投入。
  5. 您使用什么标准?你对每个标准有多重要?

    我发现我倾向于阅读一种语言,并对此感兴趣。然后尝试使用这种语言解决问题,这当然是一个古老的问题,当你有一把锤子时,一切看起来像钉子。

    有没有人成功地对某个项目(开源等)感兴趣并学习了这门语言才能做出贡献?

6 个答案:

答案 0 :(得分:4)

Alan Perlis说得最好。

  

不影响方式的语言   你想到编程,不是   值得了解。

这是我的标准!

答案 1 :(得分:3)

归结为三个问题。我提供了每个例子:

1)人们会付钱给我使用这种语言吗?

示例: Java,C#,Ruby

这是关于技能组合的市场性和市场价格。

2)这种语言能否提高我的工作效率/让我做新事物?

在此类别中向足够多的人证明自己的语言可能会升级到第一类(上图)并成为大众市场。

Ruby - 即使您没有找到高薪工作,提高您的个人工作效率也可能有助于您的个人项目并增强您的信心。

Objective-C - 再次,您可能只是为了酷炫因素而对iPhone进行编程,或者能够编写自己的个人应用程序。

3)这种语言是否会增强我作为开发人员的教育水平?

Smalltalk - 让人们比任何其他语言都更好地掌握极限编程和高级面向对象。

Lisp - 打开对人工智能文献和算法的整个库的访问。为了获得大量用lisp编写的计算机科学资料,可能值得学习。

自我 - 获得一些革命性的UI工作和基于原型的OO的经验

答案 2 :(得分:1)

如果我在其图书馆和框架中找到了一个明显的好处,我会学习一门新语言,这是我在另一种语言的合理时间内找不到的。这就是为什么我学习WPF的原因:当时没有什么可以做到这一点,同样有吸引力的桌面应用程序界面。出于类似的原因,我学会了Cocoa-Touch / Objective-C =>当我想在平台上写东西时,iPhone的编程实际上强加了我的语言。

答案 3 :(得分:1)

对我来说,有两个理由可以学习新的语言需求和兴趣。

在第一种情况下,我需要做一些事情,通常是为了工作,例如“自动化命令行工具并可能添加gui”,或“将xml数据转换为漂亮的网页”。在这些情况下,我会根据最实用的方法做出决定。

  • 新语言比现有语言更好/更快/更容易?例如,自动化命令工具在python中比C ++更容易,所以学习python是有道理的,特别是因为gui可能会在以后成为一个要求。
  • 我将来可能会使用这种语言吗?例如,我的xml数据是一个小而且定义得很好,用C ++解析它比学习XSLT更容易,或者这只是转换xml的冰山一角?
  • 我是否对我团队中的其他开发人员施加了公平的负担?每个人都知道这种语言来维护我的新代码是否合理?如果它具有战略意义,我应该只为组织添加一种新语言。
  • 我选择这种语言来充实我的简历,如果是这种情况,我不应该选择它来进行实际工作。

在第二种情况下,它归结为我感兴趣的东西。

  • 也许我认为它可能是我们组织未来的有用语言,我想了解更多相关信息。
  • 也许每个人都在谈论它,我想看看所有的炒作是什么,比如Ruby-on-Rails,我可以从中学到一些我可以应用于现有语言的新技术吗?例如,约定优于配置。
  • 有时我感兴趣的是一个项目,而不是语言或技术,然后我可能会选择适合新项目的语言,就好像是为了工作。
  • 有时候,我喜欢函数式编程,因此我会寻找最有趣的语言来探讨这个问题。
  • 有时候它看起来很有趣而且它比看电视还好。

答案 4 :(得分:1)

几年前我在某地读过,每2 - 3年应该学习一种新的不同类型的编程语言。这个过程简化了您对编程和设计的整体看法。我的个人轨迹是这样的:

  • C编程语言(我在大学学到的第一门语言)
  • C ++(当我真正从事工业中的现实生活项目,支持面向对象编程的多范式语言,通用编程,程序结构化编程)
  • Python(非常完全面向对象,动态且强类型的脚本语言,我专门用它来开发Web应用程序(从服务器端))
  • JavaScript(用于在Web应用程序中开发优秀客户端交互的唯一语言,基于原型的编程语言)
  • Haskell(20年函数编程研究的高潮,一种懒惰的函数式编程语言)

除了他们之外,对其他较小领域特定语言的良好研究也有所帮助:

  • HTML,XML,Latex
  • 重组文本,Wiki标记
  • 设计语言,如Verilog,VHDL

一般来说,指导力量是我参与的行业项目。最初,他们是由我在现有项目上工作的老年人指导的。在开始新项目时,我通常会花时间尝试不同的语言,这些语言可能更适合项目的不同方面。其中一些尝试失败了,而另一些则导致我选择了提高整体生产力的好工具。

每当需要程序性能时,我现在都会选择C / C ++。无论何处需要程序员生产力(如Web应用程序的开发),我都会使用Python / JavaScript组合。 Haskell仍然更符合学术兴趣(对我而言)。

其中很多还取决于您使用的工具集,平台等。为了降低开发成本,我更喜欢使用开源工具的成熟语言。这就是为什么我要避免使用ASP.NET,C#.NET等并使用Python。跨平台开发需要仔细使用C ++。

时间投资确实是一个关键组成部分。当在现有的经验丰富的程序员群体中引入新语言时,如果学习它所需的时间非常高,则难以出售。 Python擅长于此。

答案 5 :(得分:0)

有时候学习的标准是你被指责的新项目。举一个用asp.net 1.1编写的asp.net项目,该项目正在升级到asp.net 3.5。对于这样的项目,你可以从

开始

Asp.net 1.1 Ado.net 的Javascript

Asp.net 3.5 实体框架 LINQ JQuery的 Asp.net 3.5 Web表单 Asp.net 3.5 MVC

编程是一个不断变化的研究领域。基本编程概念不会改变。事情如何完成确实会改变。工作委员会或杂志指导我们学习下一件可以为我们带来更多钱或让生活变得更轻松的伟大事物。

今天的世界有一个学习wordpress,ruby on rail,visuals studio .net,f​​lash,dream weaver,设计模式,测试驱动开发。

首先识别网络或桌面。其他一切都将落实到位。 Wrox出版或出版书籍是一个开始学习的好地方。每个人都从一开始就开始,让你在学习过程中跳槽。