使语言成功需要什么?

时间:2009-04-20 04:25:57

标签: open-source programming-languages project-management

我对一种新的编程语言有一个有趣的想法。它基于一种新的编程范式,我已经在脑子里工作了一段时间。几周前我终于开始为它做一个基本的解析器和解释器了。

我希望我的新语言能够取得成功,我希望在它准备发布时最终围绕它创建一个社区。它背后的想法是相当创新的,所以我不认为它会在商业世界中获得很多好处,但是看到少数初创公司使用它或者开源项目使用它会让我感到震惊。

因此,考虑到这些目标,我能做些什么来帮助我的语言成功?语言项目如何成功?我应该不惜一切代价避免什么?我很想听听有关其他语言的意见或故事 - 成功与否 - 所以我可以在继续发展的过程中思考它们。

到目前为止,我心中最关心的两个问题是找到一个市场,访问现有的库,拥有惊人的工具支持。我还可以在此列表中添加什么?

10 个答案:

答案 0 :(得分:4)

虽然不是特定于新的编程语言,但Karl Fogel的书籍Producing Open Source Software(可在线阅读)可能包含一些关于围绕新编程语言建立社区的问题的提示。

就采用编程语言而言,最近的趋势似乎是拥有一个丰富的库来缩短开发时间。

由于没有太多关于您的语言的详细信息,因此很难确定该语言的采用是否取决于丰富库的可用性。也许您的语言将能够填补其他语言所忽视并能够获得用户的利基。或许它有一个引人注目的名字 - 有许多因素会影响语言的采用。

在考虑最近成功的语言时,会想到以下几个因素:

  • 能够利用新语言中的现有库。

    • 使用其他语言编写的外部库的适配器。
    • 定位已经有大量库可供使用的平台。
      • GroovyScala以Java平台为目标,因此允许在现有Java代码之间使用和互操作。
  • 语言设计和语法,可以提高工作效率。

    • 许多动态类型语言已经普及,例如Ruby和Python来命名一对。
    • 更简洁明了的代码可以用Groovy等语言编写,而不是像Java这样的冗长语言。
    • 提供functions as first-class objectsclosures等功能,而这些功能并未以更多“传统”语言(如C和Java)提供。
  • 一群忠诚的用户,他们也愿意教新手了解语言的好处

    • 人类因素对语言的广泛支持将会很大 - 如果人们从未开始使用您的语言,那么它将无法获得更多用户。

此外,我可以添加的另一个建议是让您的语言开发 - 让您的用户发布您的语言发展,并允许人们给您反馈。更好的是,如果您觉得合适,请让您的用户参与决策过程。

我相信通过提供参与语言培养的方法,人们会越多地认为他们与新语言的成功有关,因此更有可能获得更多支持。

祝你好运!

答案 1 :(得分:4)

答案 2 :(得分:2)

大多数快速起飞的语言都是通过一个杀手级应用来实现的。对于C,这是Unix。 Ruby有Rails。 JavaScript是大多数没有第三方附加组件的浏览器常用的唯一可用编程系统。

另一种成功手段是通过命令。这只有在您具有重要影响力时才有效。例如,C#,就像它可能是一种语言一样好,如果微软没有像它那样努力推动它,那么就不会像现在那样流行。 Objective-C是MacOS X的语言,因为Apple这么说。

绝大多数语言缺乏单一的杀手级应用程序或主要的企业支持者,通过各自创作者的长期投资获得了成功。 Perl和Python是最好的例子。 C ++背后没有单一的实体,但随着开发人员的需求发生变化,它已经发展。

答案 3 :(得分:1)

不要担心尝试使语言成功;担心用它来解决实际问题并赚钱。

你或者要么使用这种语言赚很多钱。一旦你有很多钱,其他人可能会关心你是如何做到的。或者不是,无论哪种方式,你都有很多钱。

如果你没有赚很多钱,没有人会想知道你是怎么做到的。

根据评论进行编辑:我定义为使用它的人是成功的,人们使用语言来解决问题,大多数是为了获利,因此成功==有利可图。

答案 4 :(得分:1)

除了使语言易于使用(具有多种含义)之外,您还应开发一个涵盖并且还提供良好抽象级别的综合库(以下最重要的领域) :
*数据结构和操作
*文件I / O支持
* XML处理
*网络(加上基于Web的技术,如HTTP / HTTPS)
*数据库支持
*同步和异步I / O
*流程和线程
*数学

深思熟虑的框架可以使快速开发更快(更容易维护),这将是一个很好的补充。为此,您应该了解当前流行的框架。

答案 5 :(得分:1)

请记住,这需要花费很多时间。我认为花了大约10年的时间(如果我错了,有人请纠正我)。

所以,即使你的社区在说了5年之后仍然看起来很小,那也不是故事的结局。

答案 6 :(得分:1)

“它基于一种新的编程范式,我已经在脑子里工作了一段时间。”

虽然值得称赞,但有些人已经对你的“新”范式做了一些事情,这种可能性确实很大。

要使语言可用,必须以现有技术为基础。完全新的不是成功的好途径。我最喜欢的例子是Algol 68。

Algol 60非常受欢迎(当天回来,不久之前,不可否认)。

专家们希望在此成功的基础上再接再厉。他们提出了一些新的范式,这种努力分裂成派系。纯粹主义者将新范式纳入Algol 68;它消失得无声无息。有些人创建了不同版本的Algol,称为PL / I.它没有任何真正的新范例。它实际上去了某个地方并被大量使用。另一个小组创建了Pascal - 它并没有太多新东西 - 它从Algol 60中丢弃了东西。它实际上是在某个地方使用了很多。

您的新范例必须具有清晰简洁的摘要,以便人们可以将其纳入语言可用的位置,如何使用,使用它的成本和收益的环境中

一种“新的编程范式”会让一些人说“当我工作得那么好的时候,为什么要学习一种全新的范式?”你必须非常清楚如何有一个新的范例。

语言和图书馆必须正常工作,并且工作非常非常好。一种不坚如磐石的语言毫无价值。为了坚如磐石,它必须非常简单

它必须有一个教程,可以帮助任何人开始使用您的语言

答案 7 :(得分:0)

常见任务的良好框架

易于安装/部署

良好的文档

调试器/ IDE和其他工具

使用您的语言的流行旗舰产品!

答案 8 :(得分:0)

  • 良好的文档,包括详细的参考手册以及简单示例,以便让人们快速入门。

  • 良好的图书馆支持,以便人们可以实际编写有用的程序。

大多数流行语言在其中一种或两种或两者中似乎都非常强大。

答案 9 :(得分:0)

使用特洛伊木马方法 C++ - The Forgotten Trojan Horse

一篇有趣的文章,讲述为什么C ++能够成功地抓住程序员的核心。