代码之家  ›  专栏  ›  技术社区  ›  Arthur Ulfeldt

在提议使用一种新语言之前要回答的问题?

  •  17
  • Arthur Ulfeldt  · 技术社区  · 16 年前

    在我向某人介绍一种新语言之前,我必须回答哪些技术问题?

    我在找技术问题清单,如果没有一个很好的答案,我甚至不应该通过建议我们使用语言X浪费任何人的时间。

    PS:(定义x Clojure)

    12 回复  |  直到 14 年前
        1
  •  17
  •   bradheintz    16 年前

    语言的生产力既不是唯一的因素,也不是简单的标量。重要问题包括:

    • 如果团队中的人还不熟悉这种语言,学习它有多容易?
    • 成为语言专家有多容易?
    • 团队是否可以接触到一个或多个语言专家,他们有足够的带宽来进行必要的指导?
    • 好的学习材料(书籍、博客、教程)和支持渠道(论坛、IRC、邮件列表)是否可用?
    • 该语言(或该语言的某些框架)是否允许一个称职的程序员比您现在使用的更快地编写软件?
    • 语言的可维护性如何?对于一个有能力的程序员来说,第一次遇到别人的代码的语法可读性如何?(想想apl和perl。)
    • 该语言是否比您现在使用的语言(例如,用于分布式计算的函数语言)更适用于您的问题域?
    • 语言/平台在多大程度上满足了与开发速度无关的业务需求(例如,性能、可扩展性)?
    • 现有的工具是什么样的,它们的成本是多少?有可用的调试器吗?IDE?集成开发环境中内置的重构和单元测试支持?构建管理和部署工具?
        2
  •  52
  •   DigitalRoss    16 年前

    为工程师开设的政治速成课程…

    尽管所有的使命宣言都是为了听起来高尚和强调社区支持,但每个企业的真正目的是 投资回报率 或者,等价地, 以股权价值最大化 .如果它是一个政府机构,这仍然是一个问题,但合法所有人将没有直接的影响,相反,你将有代理人所有人,如更高的机构或强大的个人官员。

    然而,决策几乎总是由 代理人 等等 principal-agent problem (也称为 代理困境 )看来,代理人(管理层)将根据他们的利益做出决定,而不一定按照理论要求根据股东的利益做出决定。在政府机构,这几乎是100%的考虑。

    可悲的是,这激起了迪尔伯特和帕金森定律的复杂性。

    你能得出的最好结论是,根据风险、成本和利益作出决定是合理的,但往往是基于对代理行的信用和责任以及代理行的理解做出决定,这对委托人来说是一种狭隘的风险考虑,但对委托人来说价值可疑,但至少是一种可识别的考虑。

    所以,我们现在应该把这个应用到语言问题上。您的经理可能会避免威胁、风险、丑闻和争议。他将主要通过预算和预期的约束来应用校长的关切。这里有一些应该是不言而喻的例子。

    如果您想使用Java或PHP:

    • 每个人都是这样做的
    • 这是解决此类问题的行业标准方法
    • 这是低风险的方法
    • 类似的系统在Java/PHP中已经做了很多次。

    (这就是“没有人因为购买IBM而被解雇”的论点。)

    如果您想使用Ruby:

    • Ruby在Tiobe排名前十(不是很符合行业标准,所以这是你能做到的最好的)
    • PHP和Java是更高成本的技术(他可能有预算作为减轻委托代理问题的尝试)。
    • PHP和Java将很快“过时”(也许不是),但被表述为“冒着愚蠢地使用旧技术的风险”,意味着缺乏后来的信用和认可。
    • Ruby是一种高级语言,具有强大的抽象功能,可用于经济高效的开发(对于代理来说,这是一个薄弱的论点,但提供了信任的可能性)。所有参数中最不有效的。)

    如果你想使用Clojure:

    • 你最好在周末和晚上制作这个系统的原型,并把它作为一个已解决的问题呈现出来。
    • 强调并行Java/CuljuleDebug(如果需要的话,整个系统可以写入 克洛杰尔 “Java”
    • 制作所有的Java参数,然后说一些关于“两个世界最好的”的东西。
        3
  •  3
  •   FinnNk    16 年前

    这在很大程度上取决于你现在使用的是什么,你要切换到什么以及为什么很难回答。但这些总是很重要的:

    • 如果我选择了一种以前不可能使用的新语言,我该怎么办?
    • 我能做什么比目前使用新语言更快?
    • 团队的其他成员将如何应对新语言的引入?
    • 如果我离开了,有没有其他不懂这门语言的人能在我离开的地方找到我,没有太多问题?
        4
  •  3
  •   jldupont    16 年前

    商业案例是什么?

    归根结底就是投资回报率。

    它不仅与个人的生产力有关,而且:

    • 全队

    • 对产品生命周期的影响

    • 维修性

    等。

        5
  •  3
  •   Geo    16 年前

    捡起来有多容易? 我发现这并不重要。

    它有IDE支持吗? 很重要,但你可以不用它工作。

    有可用的调试器吗? 我认为这是我会问的最重要的问题。一旦有了一个可工作的调试器,通常可以完成任何事情。

        6
  •  3
  •   Alex Miller    14 年前

    我们今年雇用了一个团队,决定使用 克洛杰尔 作为我们选择的武器。该团队的背景主要是基于Java的,但也有各种各样的其他语言来进行业余爱好工作。

    我们考虑的标准是:

    • 我们能利用团队的Java/JVM背景,并与现有的基于Java的产品集成吗?
    • 我们能实现与Java同等的性能吗?
    • 我们能建立线程安全并发吗 可维护的 程序?
    • 我们能利用更高层次的抽象吗
    • 我们能雇用/训练人们用这种语言工作吗?
    • 我们能在语言中维护一个大的代码库吗?
    • 是否有足够的工具可以有效地使用该语言?
    • 有没有一个活跃的人社区在发展语言和libs?

    我们认真考虑了groovy、scala和clojure。我真的很喜欢用于轻量级应用程序的groovy,但我对性能有严重的疑问。scala和clojure在上面的所有点上都提供了很多东西。最后,我们的问题域涉及很多符号操作,我们觉得Clojure会是更好的匹配,但我怀疑scala也会很好地工作。

        7
  •  2
  •   Daniel Bingham    16 年前

    您的新语言将提供哪些现有语言尚未提供的功能?

    今天我们有各种各样的语言。因此,在引入一种新语言之前,请确保没有一种语言可以完成您的新语言所做的一切。并且确保您确切地知道新语言将提供哪些功能,而这些功能不是以相同的组合或其他语言提供的。

    当然,除非你只是为了你自己的教育而这样做——在这种情况下,忘记这个问题,去做吧!

        8
  •  2
  •   ChaosPandion    16 年前

    这将如何提高我的生产力?

    如果这不能回答,打包回家。

        9
  •  2
  •   Austin Salonen gmlacrosse    16 年前

    有什么意义?为什么?

    它将如何使我的工作更容易?

        10
  •  2
  •   Mikael Gueck    16 年前

    问题1:我可以雇佣具备这些技能的人吗?

    问题2:当我打电话给我们的外包合作伙伴客户经理,问一个典型的固定成本项目成本是多少,如果按常规的方式完成,或者使用语言X完成,乘数是否大于1?

    问题3:我所在部门的其他人是否也有与我最喜欢的语言大致相同的最喜欢的语言,是否也应该使用他们最喜欢的语言?这样做的实际后果是什么?

        11
  •  0
  •   BillT    16 年前

    要问的一个好问题是,语言/框架周围的社区规模有多大。例如,Ruby/Rails周围有一个重要的社区,这会让我更舒服,因为我不必成为处理特定问题的“第一个孩子”。

        12
  •  0
  •   MathGladiator    16 年前

    为什么只说一种语言?找出哪些问题是通过哪种语言和提供最优质的服务来解决的。如果服务之间的带宽太高,那么根据哪种语言最能解决这两个问题,将有问题的服务迁移到一起。

    推荐文章