是什么推动或不采用新的编程语言?[关闭]


12

我真的很想关注为什么主流采用了一些新的编程语言,而另一些则仍然相对利基。我想了解诸如特定用例,向后兼容性或某些新功能,简单或复杂的实现难度之类的事情。具体示例将不胜感激,但让我们不要在这里陷入“主流”或“利基”的确切定义。



2
机会和公司的支持是一个很大的因素。steve-yegge.blogspot.com/2007/02/next-big-language.html
工作

3
此论坛不适合提出问题
Ryan

好吧,这不是一个论坛。对于两个人,我认为这完全符合主观问题的指导原则。
DeadMG

1
编程语言的采用与使用它的潮人数量成反比。

Answers:


18

如果有人真的知道,他们将是非常有钱的人。

也就是说,这是我的猜测:

可用性

BASIC是一门糟糕的小语言,当PC首次出现时(随所有PC一起)。Apple II(许多高中的默认计算机)和ATARI 400/800(第一台超级便宜的家用计算机)都附带了BASIC。

如果您有一台UNIX计算机(AT&T系统V或Berkeley的计算机),那么您就拥有C。如果要对该计算机进行编程,那就必须使用它。

编辑:随着'net的出现和普及,此要求转换为:

  1. 有多少Linux发行版打包了一个最近的副本,以及它们如何保持最新?是否可以类似地安装第三方库?
  2. 是否可以轻松地在Windows(XP | Vista | 7,8 ...)中安装?
  3. 是否涵盖Mac / iOS平台?
  4. 是否可以在旧版Unix上进行安装而不会造成麻烦?
  5. 安装后,访问第三方库有多容易,是否可以轻松升级?

轻松过渡

Java是一个很好的例子。如果您了解C编程,那么Java并不是一个遥不可及的领域,但是它提供了C所缺少的许多功能,而C ++无法提供干净的功能。

出于明显的原因,C ++是从C向前迈出的容易的一步,并且很容易将其作为“改进的” C出售给管理层。C++具有与许多现有的旧C代码库向后兼容的额外好处。

Perl是C,awk,sed和其他Unix实用程序的结合体。在出现之前,大多数系统管理都是通过shell脚本以不令人满意的方式将所有内容粘合在一起的。将所有内容与类C语言的数据结构和控制进行统一处理真是天赐之物。

满足需求

C之所以起飞,是因为它使您能够获得接近组装的效率,而不会陷入特定于机器,难以维护的组装世界中。

FORTRAN之所以起飞,是因为它可以轻松地将数学思想转换为代码,而不必迷失在机器的细节中。

对于LISP和符号操作也是如此。

Python不再需要“更好”的Perl。(我在这里有偏见,所以我不再赘述。)

PHP本质上是Web的BASIC-默认情况下,它已安装在许多Web服务器上,并且可以很容易地将有用的东西一起破解。

倡导,基于用户的贡献代码

让我们面对现实吧,如果Haskell不是出于其开发人员和用户群的不懈拥护,它就不会像非生产语言那样流行。

许多语言在其创建者的背后都有一种个人崇拜,我们都知道他们是谁。

FORTRAN有大量已建立和审查的数学代码;对于Java和web / systems-integration / MVC-systems,也是如此;Perl和CPAN相同;T E X和文件管理相同;等等

因素

出于某种原因,某些语言似乎只是拥有适当数量的新语言,而对语言则表示了足够的敬意,从而使某种语言显得简单或需要。也就是说,它有自己的理由。谁知道这是怎么发生的?


无论如何,这是为什么有人成功的最好猜测。至于为什么有些人不……好吧,如果他们不符合上述标准,那可能就是他们失败的原因。


1
大多数标准中的决定因素是企业的 支持。例如,Java可能在过渡的便利性方面得分很高,但是如果没有人愿意年复一年地向其投入数百万美元,作为其世界统治计划的一部分,目前尚不清楚会有什么不同。所以,您是对的,非常有钱的人确实知道答案:-)
jaybee 2011年

4
@jaybee-不确定语言创建者的企业支持是否一定有所帮助。来自IBM / ATT的Fortran和C并不是特别有用。Oracle链接似乎正在积极损害Java。Basic,Perl,Python,Ruby等都没有公司。用户/客户的内部公司支持很重要,但是在无处不在很久以后。
马丁·贝克特

1
@马丁·贝克特:你可能有一点。我确实认为,尽管为了使语言达到临界质量,可能需要将各种行星对齐,但将这些行星排列成直线的“现代”方法似乎是在浪费金钱。例如,Mark以Haskell为例-它可能具有强大的声音用户群,但是GHC为他们赢得了很多争论。像GHC这样的编译器要花钱。
jaybee 2011年

@jaybee-运气很好。但是,对于很酷的新网络语言而言,很重要的是创造者/早期采用者的营销技巧。
马丁·贝克特

11

语言之所以流行,是因为它们在需要的领域中比现有的语言具有优势。

爪哇

  • 自动内存管理(与C ++和C比较)
  • 线程内置的语言/ API
  • 在虚拟机上运行(这意味着开发人员可以在开发机上使用Windows来测试和部署应用程序,而无需在Linux / Unix上进行修改)。
  • 网络编程比以前流行的语言(C ++和C)和Java在Internet开始流行时发布的语言容易得多。

的PHP

  • 简化网络开发
  • 内置支持连接到MySQL数据库
  • 无需编译,可以很容易地将脚本直接包含到HTML文件中。

的JavaScript

  • 网络浏览器的唯一语言。
  • Web浏览器越来越多地用作瘦客户端(Web应用程序)。
  • 移动代码-易于部署且无需安装

目标C

  • Mac OS X环境和iPhone 的语言。iPhone取得了巨大的成功。

红宝石

  • 与Ruby on Rails(一个Web框架)一起使用MVC使大规模Web开发变得更加容易。

C#

  • 最近十年用于Windows环境的语言。几乎所有Microsoft API都易于与C#一起使用,例如Winforms,WPF和WCF。

动作脚本

  • Addobe Flash / Flex 的唯一语言,它在Internet上的媒体内容和JavaScript无法处理的事情上取得了巨大的成功。

Erlang

  • 并发和容错-Erlang有一个独特的模型来进行并发和框架容错系统。开始对电信行业有用,后来开源并获得了大型互联网公司的关注,这些公司也需要容错。

1
Erlang的并发模型不是唯一的,它与丑陋的命令式语言所使用的并发模型不同:)。Scala具有相同的类型。同样,Clojure和Haskell专攻STM。
可替代

4
@mathepic:是的,但是所有这些语言都比Erlang更新。因此对于Erlang来说,它在一开始就是独一无二的-就像我列出的几乎所有语言功能一样。好主意值得偷。
乔纳斯(Jonas)

1
C#是.net语言。我以为Windows实际上是用C ++编写的。我错了吗?我想说C#是通过利用人们已经知道的(C)语言和新框架而变得流行的,该新框架通过强大,易于使用并考虑了开发人员需求和实际使用的编辑器工具,使开发强大的应用程序变得更加容易。
SoylentGray 2011年

1
@Chad C#与C无关
替代

1
@mathepic-我从事过C,C ++和C#编程。我可以说,C#仍然保留其c根,直到命名法为止。当然,它已经超越了C语言,这并不意味着它不使用该语言。
SoylentGray 2011年

5

我会成为一个愤世嫉俗的人:赚钱,随之而来的是营销。

Microsoft支持C#,Oracle支持Java和Apple支持Objective C并非偶然。到目前为止,只有Google's Go尚未真正取消。

当然,钱不是唯一的原因,但拥有雄厚的资金肯定有助于将您的语言推向市场。


必须同意并扩展:流行语,管理上的吸引力,知名度,令人兴奋的特征。如果您不同意,我只给您起一个名字:COBOL。
SF。

1
C#和Obj-C并没有像“强制”那样受支持。仅使用MSFT提供的api在c ++中编写Windows应用程序是困难的,并且至少在Apple移动平台上仅允许AFAIK obj-C。另一方面,甲骨文对Android制造商的起诉可能会损害Java
Martin Beckett

1
@Martin-您基本上是正确的WRT Obj-C。从技术上讲,您可以使用诸如Appcelerator Ttanium之类的东西来使用其他语言来编写应用程序,但是仍然可以将其转换为Obj-C进行部署(这对于他们来说是不小的挣扎)。苹果将​​禁止其他任何产品(即使PhoneGap的表现也不错)。
Shauna

3

一方面是市场营销,更确切地说是演讲,博客等。拥有主流程序员可以关联的功能,并从他们所了解的知识中受益(Java与C ++ –垃圾收集器与内存管理),这一点很重要。最后但并非最不重要的一点是,入门门槛低-示例,良好的文档,无缝安装,良好的社区和支持,蓬勃发展。


1

几乎所有的语言在其生命早期就使用非平凡的,实际的问题解决程序。

Unix是用C编写的,当时C还很年轻并且不断发展,Unix上的工具也是如此。

Anaconda(RedHat的安装程序)是在Python很小的时候就用Python编写的,并且没有今天的流行。

这些是我能回忆起的。该列表可能涉及在其成长期中幸存下来的每种语言。

然后,在大学中大规模采用可以帮助提高语言的寿命。Java在大学中作为一种教学语言非常流行。在某种程度上,Lisp和Lisp的方言也享有这种地位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.