您使用新技术或编程语言的标准

时间:2009-05-24 03:07:52

标签: language-agnostic

当您早期采用编程语言或技术时,您考虑的标准或事项是什么?

我听过的两个最常见的解释是:

  1. 它应该是“有趣的”(我从技术人员那里听到的)。
  2. 它应该能够解决我们的问题(我从商界人士那里听到的)。
  3. 那你的是什么?

11 个答案:

答案 0 :(得分:3)

我在各个公司的职业生涯中多次做出这种改变,从C到Java再到Ruby,再到Haskell,我的大部分软件开发。

在所有情况下,我一直在寻找更具表现力和更好的抽象。这总是由业务需求驱动:如何更便宜地开发更好的软件?对我来说,这个问题的挑战是“有趣”,所以很有趣,而且很自然地随之而来。然而,为经理人证明商业价值是很困难的;他们通常没有技术技能来理解为什么一种编程语言比另一种编程语言更好,并且担心转向他们理解的技术甚至比现在的技术更低。 (我通过接管经理的工作解决了这个问题:我创办了一家公司。)

很难说出一种新语言究竟要找什么。你显然没有详细掌握这门语言,或者你已经在使用它或者知道你为什么不这样做。丰富的经验将带来一种本能,使某些语言比其他语言“闻起来”更好,但是 - 这可能使说服其他人查看新语言变得特别困难 - 你不会确切知道哪些功能给你带来了很大的好处。一个例子是模式匹配:它是一种在相对较少的语言中找到的功能,虽然我知道它,但我不知道何时开始使用Haskell,这将是提高生产力的关键因素。

虽然建议是消极的(“避免这种”)建议而不是积极的(“做这个”)建议,但一个相当简单的规则是避免花费大量时间在与您已经熟悉的语言非常相似的语言上。如果你已经了解Ruby,那么学习Python不太可能教你很多新东西; C#和Java将是另一个例子。 (虽然C#开始获得Java没有的一些有趣功能。)

观察学术界用语言做什么可能会有所帮助。如果它是学术研究的一个肥沃的研究领域,那里几乎肯定会有一些有趣的东西,而如果不是,那么很可能没有什么有趣的东西需要学习。

答案 1 :(得分:1)

我的标准很简单:

  • 哇因素
  • 简单
  • 完成任务
  • 快速

答案 2 :(得分:1)

我希望它能够轻松地做一些我习惯使用的工具很难做到的事情。因此,我转而使用Python,然后是Ruby,因为我可以逐步构建程序,轻松添加函数,更简洁地表达程序(特别是使用Ruby,我可以传递块/ Proc并具有干净的闭包,以及能力定义利用块和产量的漂亮DSL。)

我接受了Erlang,因为它很好地表达了基于Actor的并发性;这使得网络程序更容易。

我接受了Haskell,因为它适合我想要试验的一些正式的方法工具。

答案 3 :(得分:1)

  1. 开源。
  2. 活跃的开发者社区
  3. 活跃的用户社区,友好的邮件列表或论坛。
  4. 一些示例和文档,最好是教程
  5. 理想的功能(解决问题)。

答案 4 :(得分:1)

如果这是为了我个人的乐趣,我需要很少的借口,因为我喜欢学习新事物,最好的学习方法就是做。如果它是针对雇主,客户或客户,那么标准要高得多 - 我必须确信“新东西”,即使在考虑了加速效应和出血后的成本之后优势,可以更好地为客户(或客户或雇主)提供价值。这是一个专业态度的问题:我的工作是为客户提供最高价值 - 这样做很有趣,辅助和辅助。因此,在实践中,我在专业环境中引入的“新”技术(包括语言)通常是我以前在自己的业余时间里变得舒适和自信的。

答案 5 :(得分:1)

有人曾经说了些什么:

“如果学习编程语言并没有改变你对编程的看法,就不值得学习。”

这是判断学习新语言(或其他技术)的价值的一个指标(在众多中)。使用此功能,可能会建议学习以下语言:

  • C,因为它让你比任何其他语言更好地理解Von Neumann架构(而且它是随机访问的图灵机,如sorta'......)。
  • LaTeX(作为一种编程语言,不仅仅是一个排版系统),因为它让你学习字符串重写系统作为计算模型。这里,sed是类似的;学习两者,因为它们也是有用的工具: - )
  • Haskell,因为它教你关于函数式编程,lambda演算(另一种计算模型),懒惰评估,类型推断,代数数据类型(轻松完成),类型系统的可判定性(即学会恐惧C ++)
  • Scheme`(或(另一个),Lisp)用于其宏系统,动态类型和函数式编程有所不同。
  • SmallTalk,学习面向对象(我听到)
  • Java,了解赚钱的感受:D
  • Forth,因为wisdom bestowed forth learned implies

...但这并不能解释为什么我学习python或shell脚本。我认为你应该用一粒盐和一堆实用主义来接受启蒙:)

答案 6 :(得分:0)

  1. 应该能够解决问题
  2. 应该比其他替代方案更适合解决问题
  3. 应该很有趣
  4. 应该得到社区或推广它的公司的及时支持

答案 7 :(得分:0)

语言应该是:

  1. 易于使用,学习和编码。
  2. 一致。许多语言都有50种传统的处理方式,这会增加学习曲线并变得非常烦人。 C#对我来说就是其中一种语言。
  3. 它应该以最少的代码提供最有用的解决方案。另一方面,有时你需要一点表现力来确保你没有犯错误。
  4. 适合工作的正确工具,也许是适合任何工作的正确工具

答案 8 :(得分:0)

语言应具备的标准:
1.新想法 - 如果语言只是另一种Scheme变体,如果你知道一种,我觉得不需要学习这种新的。如果我想我会学到新东西,我会学习它 2.与另一种语言相似,但更好。例如,虽然Java和C ++有许多相同的想法,但Java的自动垃圾收集使它在许多情况下成为更好的选择。

答案 9 :(得分:0)

  • 以最少的努力获得最多的成就
  • 与开箱即用的不同协议极为互操作
  • 快速
  • 99%的网页开发人员都有很多内置的库(PDF,电子邮件,报告等等)。

答案 10 :(得分:0)

这取决于我为什么学习新语言。如果我正在学习它的乐趣,那么它必须符合这些标准:

  1. 我的平台支持它吗? 只在Linux上运行的东西 对Windows不感兴趣 程序员。
  2. 我会学到新东西吗?在 换句话说,它是否提出了一个 新的做事方式?
  3. 看起来好玩吗?即使它有新的做事方式,我也不想学习Ada。
  4. 如果我正在学习它的工作,标准是不同的:

    1. 它有多成熟?是吗? 事实证明在现实世界中工作?
    2. 社区有多大?
    3. 这会让我的工作更轻松吗?即是 值得花时间投资 用语言完成任务 我已经知道了。