什么会让你尝试(或不尝试)一种新的编程语言?

ste*_*dig 12 oop programming-languages functional-programming web-services web-applications

我已经设计了一种实用的编程语言已有5年左右的时间了,它可能不会再发布几年(可能直到我现在和下一次创业公司成功或失败之后).

与此同时,我有两个可能有趣的问题:

1)新编程语言的哪些属性可以吸引您在下一个项目中尝试?

2)新编程语言的哪些属性可能会阻止您在项目中尝试它?(即没有图书馆,...)

为了确保这个问题不是一个哲学辩论(因此被管理员关闭),请描述您自己的工具选择谓词,而不是关于更广泛的人口偏好的理论:)

谢谢!

Tom*_*ett 16

对于一种新的通用语言来说,我认为一个功能胜过其他所有功能:与现有的已建立平台集成.您没有时间编写语言所需的所有库,为什么要这样做?像Clojure和Scala这样的新语言本身很酷,但真正使它们"变得病毒式"的是它们以JVM为目标并与Java互操作.除了你的语言获得的免费图书馆,这意味着使用它的人不必在一夜之间放弃旧的代码库; 他们可以随着时间的推移逐步迁移.

下一件大事就是工装; 你需要坚如磐石的,最好是快速的编译器.您需要一个带调试器的IDE.包经理不能伤害.大多数程序员不会容忍二流工具; 他们宁愿继续编写Java样板文件,因为至少在那里他们有一个很好的IDE来帮助他们重构它.

最后还有语言本身的实际技术; 它的新思想,或旧思想的新颖组合,其语法的可爱性或简洁性.这些可能是你作为语言设计师在语言中最关心的事情 - 这重要.即使使用平台集成和出色的工具,也没有人会切换到一种不会给表带来任何新东西的语言.


dsi*_*cha 12

我最大的绝对不是任何一种语言都不会将其用户视为同意的成年人,并且过于努力地强调其"正确"编程的愿景.对我来说,一种语言应该可以很容易地编写好的代码,而不是编写糟糕的代码.

例子:

  1. 纯函数式语言.
  2. 要求在类中声明所有内容以强制OO样式编程.
  3. 一般避免高度表达的功能(lambdas,运算符重载,动态类型,类型推断,默认函数参数等),因为它们在错误使用时会导致混淆代码.
  4. 非常严格的类型安全,即使我明确要求绕过类型系统.
  5. 谨慎的"功能",如检查异常,并要求每个文件只包含一个顶级公共类.
  6. 当没有这些限制的良好技术原因时,您无法获得抽象.

  • +1如果明确地描述Java而没有命名它! (8认同)
  • 我认为你用纯粹的功能语言来支持它.函数式语言几乎总是向后弯曲以允许命令式构造,因为它们认识到有时候你只需要效果.另一方面,命令式语言通常使纯函数式编程变得困难,如果不是不可能的话.在Haskell中强制编程的难度远远低于在Java或Ruby中以纯函数式编程的难度.我怀疑不同之处在于你*尝试*在功能语言中强制编程*但反之亦然*. (2认同)