Answers:
一般来说,开发编程语言是没有钱的。
C#当然可以使Microsoft赚钱,但是它实质上是通过推广.NET框架和其他Microsoft技术来间接赚钱。
一个人很难从编程语言中赚钱,原因很简单,大多数编程语言项目都会惨败-这种语言最终会被其设计者(有时甚至是他们)使用,而没有其他人使用。对于每种C#或Java,都有成千上万种语言无处可去。
但是,语言设计很有趣,因此人们会不断学习。而且,如果您真幸运,您可以赚很多钱。例如,Stroustrup的书《 C ++编程语言》在第三版出版时已经售出了50万份,这意味着我想现在的销量必须超过一百万。我的第三版。花了我27.95英镑,甚至允许出版商和零售商削减开支,您也可以看到他一定从中做出了很大的改变!
某些针对特定领域的专有语言最终成为伟大的“生活方式”企业,例如MATLAB(MathWorks)和Mathematica(Wolfram Research)。也许还可以将一种语言作为中间件销售,就像Kx Systems使用q / kdb +一样(它们以数据库而不是一种语言出售)。
另一种商业模式是提供托管,就像Heroku在Ruby on Rails中所做的那样。(37Signals通过不追求该业务而有效地割让了该业务。)
就像其他人所说的那样,一种语言可能会被用作损失领先者,将应用程序开发人员锁定在特定的平台上,就像C#对.NET所做的那样。
关于咨询或书籍,这些是非常有限的收入模式;咨询需要大量的人力来扩展,书籍也达到饱和点。更好的模型是托管或企业许可证。
所以,让我们说你要谋生关闭,写入下一个流行的语言。假设“谋生”是指全职工作(任何工作,不一定是技术性工作)的合理工资。如果您真的很喜欢自己的工作,那么您可能会接受的工作量会减少一些,因此,假设每小时$ 12.50或每月$ 2000。
在稳定工作的同时,您发布了第一个版本并设置了捐赠设施。然后,您将进行持续的开发和营销,并与您的语言的用户数量成比例。保守地估计,您的用户中有1%会进行捐赠,每个用户平均捐赠1美元/年。
这意味着,要获得每月$ 2000的薪水,您需要在一年中的12个月中每个月拥有2000名捐赠用户。这240万个用户总数。现在让我们假设一种语言变得如此流行需要10年:因此,您必须平均每年获得24 万用户,或每月2万用户。
如果您的工作时间相当于全职工作(每月160个小时),则促销策略和实施质量必须足以使平均每小时获得125个用户。当然,这是回头客:如果尝试您的语言的人中有20%成为回头客,那么您实际上需要625人/小时的转换率。
即使您说服的每个人都直接说服了另外四个人来尝试您的语言,并且为了简单起见,假设他们不继续尝试说服其他人,那么您仍然会退回到125用户/小时数。
现在,这似乎完全不合理,但是不管它是否仍然有效:说您的营销策略在您的语言逐渐普及并持续稳定的10年期间产生了大致线性的增长。这意味着一开始您平均将每小时转换0个用户,而10年后,您将获得250个用户。(再次,每小时。透视图,在这里。)
每年平均每小时增加25个用户:在每年年底,您每小时转换的人数比年初增加了25 个人,或每月增加了4000个人。
因此,让我们再次回顾一下240万用户的情况:在10年内获得这么多用户是否可行?如果我们接受Langpop提供的(本质上有缺陷,但仍然可以使用)统计数据是准确的,那么我们将通过Yahoo搜索获得有关当前流行的前7种语言的以下信息。如果一个结果代表一个用户(我知道,请耐心接受),这些数字表示自该语言首次出现以来,每年获得的近似平均用户数。
这使事情回到了可能的境界:如果您开发一种像Python这样流行的语言,那么在20年后,您将有足够的用户将这种语言的开发和支持(以及营销!)变成您的完整语言,时间工作。
使其像C#一样受欢迎,您可以在10中完成。凉!
…当然,除非如此讲,否则就使使一种语言如此流行的极不可能和困难的工作变得微不足道了。但是,嘿,如果您有一个好主意,并且您可以完全自己一个人走上顶峰,而无需其他开发人员的捐助,他们会削减您的捐款,那么您就是个天才,而你应得的。
要详细说明@Peter所说的话:创建软件来支持其他东西是很常见的。免费提供的几乎所有东西都用于推广其他东西,例如广告,平台,设备或服务。
就编程语言而言,其全部目的在于通过吸引开发人员来促进平台。如果吸引开发人员,您会为平台编写更多的软件,这将使平台更强大。吸引开发人员的方法是为他们提供出色的工具,而语言就是其中的一种。实际上,开发人员工具是微软在重新夺回智能手机市场地位的艰难斗争中最强大的显卡之一。“很容易为Windows Phone 7重建您为iPhone和Android制作的Aps”,“很容易使为Windows Phone 7编写的应用程序可用于其他屏幕”等。
另外,有时您只是自己编写一种编程语言,因为您自己需要该工具。
通过开发特定于域的“小”语言,您可以获得更多收益。不过,不是因为出售它们。有一些DSL可以赚钱,但是有更多的开源成功案例,甚至还有更多的失败案例(包括开放式和封闭式)。
您可以从中获得利润的地方是可以从中获得生产力的收益。有一个基于这种想法的开发范例。
优缺点与C ++中基于模板的编程相似,但更多。例如,与普通库相比,DSL需要更多的前期工作,但是一旦编写,DSL就可以提供更多的灵活性,健壮性和“敏捷性”。除非性能是一个大问题,否则您根本不可能这样做,否则将涉及的工作推迟到运行时可能会更容易-例如,使用基于运行时正则表达式的扫描引擎而不是扫描器代码生成器。
“敏捷性”得到了吓人的报价,因为过度渴望编写DSL显然违反了敏捷性原则。即使在DSL繁重的环境中,您也极不可能在日常工作中开发DSL。
使用DSL的一个原因可能是对一些业务规则(一种专家系统规范)进行编码,并生成与这些规则兼容的代码。因为从声明性业务规则到结果代码的转换可能非常复杂,所以可以通过对业务规则规范进行相当直接的更改来处理对所生成代码的巨大更改。例如,DSL可能会生成决策树,或者可能会通过图来跟踪相关性,以自动确保所有需要重新评估的内容都被重新评估并且没有周期(已编译的“电子表格”)。
一个极端的版本可能是在系统的某些部分使用Prolog这样的逻辑语言,尽管在某种意义上这只是极端的-它也只是针对课程的语言选择,而不是构建自己的DSL。范例。
开发编程语言并使其标准化并不能真正由一个人完成。即使Stroustrup是C ++的发明者,世界上仍有许多其他工业专家参与其中。它更像是一项志愿服务。真正有才能的人,例如斯科特·梅耶斯(Scott Mayers),都从中赚钱。其他人正在作为独立顾问或大型组织的顾问。
最好的例子是C ++ 0x标准化。现在被推迟了好几年。之所以会这样,是因为委员会成员要么忙于其主要工作,要么难以通过法定人数最终确定规格。
像Microsoft Sun(Oracle)这样的公司已经开发了自己的编程语言,并通过IDE以及通过其平台提供无缝支持来赚钱。它更像是针对问题的封闭式解决方案。但是这些编程语言是由ISO或类似委员会标准化/批准的。Java似乎正在为使用其编程语言的公司出售其IP。最近,甲骨文已就Java的IP侵权向Google提起诉讼。
一句话,对于那些为开放标准工作的人来说,它更像是自愿服务,而不是企业。