Language agnostic 您使用新技术或编程语言的标准 P>当你是一个编程语言或技术的早期采用者时,你的标准是什么?

Language agnostic 您使用新技术或编程语言的标准 P>当你是一个编程语言或技术的早期采用者时,你的标准是什么?,language-agnostic,Language Agnostic,我听到的两种最常见的解释是: 它应该是“有趣的”(我从技术人员那里听到的) 它应该能够解决我们的问题(我从商业人士那里听到的) 那么你的标准是什么呢?我的标准很简单: 惊喜因素 简单的 完成事情 快的 我希望它能轻松完成一些我习惯的工具难以完成的事情。所以我转向Python,然后是Ruby,而不是Java,因为我可以增量地构建程序,轻松地添加函数,更简洁地表达程序(特别是使用Ruby,我可以传递块/过程,拥有干净的闭包,还可以利用块和产量定义漂亮的DSL) 我选择Erlang是因为它很好地表达

我听到的两种最常见的解释是:

  • 它应该是“有趣的”(我从技术人员那里听到的)
  • 它应该能够解决我们的问题(我从商业人士那里听到的)
  • 那么你的标准是什么呢?

    我的标准很简单:

    • 惊喜因素
    • 简单的
    • 完成事情
    • 快的

    我希望它能轻松完成一些我习惯的工具难以完成的事情。所以我转向Python,然后是Ruby,而不是Java,因为我可以增量地构建程序,轻松地添加函数,更简洁地表达程序(特别是使用Ruby,我可以传递块/过程,拥有干净的闭包,还可以利用块和产量定义漂亮的DSL)

    我选择Erlang是因为它很好地表达了基于角色的并发性;这使得网络程序更加容易

    我选择Haskell是因为它适合我想要尝试的许多正式方法和工具

  • 应该有能力解决这个问题
  • 应该比其他替代方案更足以解决问题
  • 应该很有趣
  • 应得到社区或公司的及时支持
  • 语言应为:

  • 易于使用、学习和编码
  • 始终如一。许多语言有50种传统的做事方式,这增加了学习曲线,变得非常烦人。对我来说,C#是其中一种语言
  • 它应该以最少的代码量提供最有用的解决方案。另一方面,有时你确实需要一点表达能力来确保你没有犯大错误
  • 适用于正确工作的正确工具,也可能适用于任何工作的正确工具

  • 我的语言应具备的标准:
    1.新想法-如果语言只是另一个方案变体,如果你知道一个,我觉得没有必要学习这个新想法。如果我想学点新东西,我会学的。
    2.与另一种语言相似,但更好。例如,java和C++有很多相同的想法,java的自动垃圾回收使它在很多情况下是更好的选择。
  • 开源
  • 活跃开发者社区
  • 活跃的用户社区,具有友好的邮件列表或论坛
  • 一些示例和文档,最好是教程
  • 理想特性(解决问题)

  • 如果是为了我个人的乐趣,我不需要什么借口,因为我喜欢学习新东西,最好的学习方式是通过实践。如果是对雇主、客户或客户而言,标准要高得多——我必须确信,即使考虑了升级效应和处于前沿的成本,这些“新东西”在向客户(或客户或雇主)提供价值方面也会做得更好。这是一个职业态度的问题:我的工作是为客户提供最高价值——在这样做的同时享受乐趣是辅助和次要的。因此,在实践中,我在专业环境中引入的“新”技术(包括语言)通常都是我以前在业余时间对其感到舒适和自信的技术。

    在我的职业生涯中,我曾多次在多家公司进行此项改变,我的大部分软件开发都是从C到Java再到Ruby再到Haskell

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

    很难说用一种新的语言到底要寻找什么。你显然没有对语言的详细掌握,或者你已经在使用它,或者你知道为什么你没有。丰富的经验会带来一种本能,使某些语言比其他语言“闻起来”更好,但这会使说服其他人看一种新语言变得特别困难,因为你不知道到底是什么特性给了你巨大的优势。模式匹配就是一个例子:这是一个在相对较少的语言中发现的功能,虽然我知道它,但当我开始使用Haskell时,我不知道这将是提高生产率的关键因素

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

    了解学术界对一门语言的使用情况可能会有所帮助。如果这是一个学术研究的肥沃领域,几乎肯定会有有趣的东西在那里,而如果不是,很可能没有什么有趣的东西可以学。

    • 以最少的工作量完成最多的任务
    • 可与不同的协议进行极强的互操作,开箱即用
    • 快速
    • 为99%的web开发人员提供了大量内置的库(PDF、电子邮件、报告等)

    这取决于我学习新语言的原因。如果我学习它是为了好玩,那么它必须满足以下标准:

  • 它得到了很好的支持吗