编程每种语言有什么用_每种情况的最佳编程语言

编程每种语言有什么用

有一个问题,很多人都认为提问者根本不理解该主题。 有些人甚至觉得它很生气。 问题的形式通常是什么是最佳X? 什么是最好的车? 最好的编程语言是什么? 但是同时,这是一个问题,我们每次启动项目或选择汽车时都会问自己。

当然,不同之处在于我们是在特定环境下提出这个问题的。 我们希望针对我们所处的情况,了解适合我们的最佳编程语言。

我们显然无法得知您的情况,但是通过本文,我们希望为正在考虑进入新领域或仅想了解当前最新技术水平的人员提供有用的信息。

改变编程语言需要付出代价

如果您的代码库很大,那么您可能根本不会为新项目选择语言。 您只需使用到目前为止使用过的那个即可。 主要因素是添加新语言的成本。 对于许多公司来说,雇用新开发人员,更改基础架构,学习最佳实践,实在是太多了。

另一个问题是,尽管有可能在一两个月内学习一门新语言,但是精通该语言需要花费更长的时间。 因此,开发人员及其雇主都喜欢利用他们已经拥有的知识。

在这种情况下,最佳编程语言问题的答案通常会变成您已经在使用的内容,这是一个无聊的答案。 尽管这不一定意味着那是错误的答案。

何时更改编程语言

Twitter中断是如此频繁,以至于错误页面成了吉祥物: 失败的鲸鱼

业务的必要性可能迫使某些公司更改编程语言,例如Twitter从Ruby更改为Java和Scala时。 Ruby的性能根本不够好,并且正在影响他们提供服务的能力。 更改成本很高,但有必要。 除了性能,还有其他技术因素可供选择

没有一种语言是完美的,实际上Scala似乎存在新的问题, 例如学习曲线 。 但可以公平地说,在某些情况下,并非所有语言都是平等的。 这是某些人的普遍看法。

当您有重要的特殊需求时,某些语言确实比其他语言要好。

大量的钱可以改变语言本身

HHVM带给维基百科的性能改进图

另一个著名的案例表明,金钱可以在某些情况下为您提供帮助:Facebook和PHP。 PHP被指控有很多事情,其中​​很多是正确的,尤其是在安全性方面。 但是很少有人会说PHP特别慢。 仅仅是因为Facebook曾经如此,而且如此之大,以至于性能的任何提高都可以为他们节省大量资金。

一方面,PHP并不是性能最佳的语言,但它易于使用,并且在该语言中具有庞大的代码库。 您可能会说他们的语言已经不合时宜了。 但是,他们没有更改开发语言,而是更改了语言本身及其工作方式。 他们创造了不只是一种技术,而是创造了两种技术来提高其性能:首先是用于PHP的HipHop ,一个PHP到C ++的编译器,然后是更著名的HHVM ,一个用于PHP和Hack的虚拟机。 实际上,他们还发明了一种称为HackPHP方言。

他们可以保留PHP,因为它的性能还不错,也不要求它那么好。 Twitter完全不能与Ruby一起使用,而Facebook即使可以与普通PHP一起使用,它的成本也更高。

选择语言的一些标准

虽然我们都同意绝对没有最好的编程语言,但我们认为针对特定任务更好的编程语言 。 我们认为可以设定一些合理的标准来指导专业开发商和企业。 这些条件可以帮助您选择适合您情况的最佳编程语言。

良好的技术素质

除了明显的性能要求外,该语言还必须具有满足您需求的良好技术素质。 例如,如果您的软件大量并发,则需要一种对此具有一流支持的语言。

Twitter的另一个问题是Ruby部署的LAMP模型不能很好地支持封装。 因此,很难构建一个独立的独立存储或搜索服务。 这不是Ruby的问题 ,但更多的Ruby是为其他目的设计的 。 请记住,技术质量不仅意味着您可以衡量和看到的东西,例如性能或语法。 这也意味着该语言在幕后的工作方式。

因此,您确实需要选择一种适合您的用例的语言,即选中所有复选框的语言。 尽管您不一定需要选择最适合您的用例的一种。 这是因为并非总是可以对不同的需求进行排名,或者即使有,您可能也不知道哪个对您最重要。

例如,假设您可以确定语言X如果达到500万或更多的用户会更好,而语言Y可以更容易和更便宜地达到500万用户。 您怎么知道您是否会达到500万用户? 也许X语言一开始使用起来太昂贵,所以您的公司将在吸引那么多用户之前就失败了。

将技术要求视为过滤器,您的语言必须通过这些要求,但是并不一定是最好的语言。

人气度

您选择的语言应该足够流行。 这可以帮助您节省金钱和时间,尤其是由于开源开发。 例如,如果您的公司使用PHP,那么现在您可以利用Facebook开发人员的辛勤工作。 您可以使用HHVM来提高软件的性能。 找到良好的即用型库也可以加快开发速度。

有几种方法可以衡量编程语言的流行程度

  • 可用工作数量
  • 搜索引擎搜索量
  • GitHub项目的数量

它们都是有用的,没有一个是完美的。 例如,GitHub上有许多JavaScript项目,这些项目由一个文件组成,目前处于非活动状态。 这仅仅是因为语言和工具鼓励您创建非常小的库。 您如何看待搜索引擎结果,了解一种叫做Go的语言的流行性(还有另一种叫做Go!的语言)?

社区适应

该语言还必须在您所属的社区中流行。 良好的社区适应性有很多优点:开发人员以您希望他们思考的方式思考,并且他们通常还具有所需的非编程技能或知识。 这意味着您必须花费更少的时间来培训他们,并且您招募错误的开发人员的风险也较小。

PHP在技术部门已经有了很大的进步,但是仍然希望编程变得容易的人仍然选择它。 这意味着有许多不那么优秀PHP程序员,可能很难找到优秀PHP程序员。 更糟糕的是,直到使它们适合您的项目并看到结果,您才可能发现它们是否不错。

另一方面,也许并非所有从事C和C ++的专业人士都拥有计算机科学学位,但也许他们都像拥有一个计算机科学的人一样思考。 仅仅是因为如果您没有以正确的方式思考,计划和编写C / C ++代码,那么您的代码将使您很快遭受错误的困扰。

另外,某些社区通常会使用某些语言,因此有更多的图书馆来覆盖该领域。 考虑开发用于分析Python数据的库的数量。 这是许多数据科学家都接受Python的事实的结果。 如果需要在该领域开发应用程序,则可以通过采用Python来从中受益。

某些特定上下文的最佳编程语言

我们出于实用目的列出了此列表。 我们没有尝试为每种可能的细分市场找到最佳的编程语言。 我们仅列出了可以找到至少两种非常合适的编程语言的行业。

让我们看一下最好的编程语言列表,以便我们所有人都可以开始对此争论不休。

面向企业和行业的学术界

企业界和学术界都充满了无法移动的事物。

尽管有创新,但也有适当的做事方式,并且必须有充分的理由进行改变。 具有行业意识的学术界是指与真实产品和业务直接相关的学术界。 例如,当我们谈论用Java进行解析时,我们发现许多最好的工具直接来自学术界。 确实,学术界所有领域的研究都可能以真正的产品而告终,但通常这条路更加circuit回。

Java

可以说C#是比Java更好的语言,而CLI比JVM更灵活。 但是Java是一种很好的语言,而JVM是一个很好的平台。 更重要的是,其他所有人都在使用它,因此您也应该这样做。 换句话说,Java足够好,并且非常流行,这在企业界尤其重要。 Java在许多计算机科学课程中也都有讲授,但是它在企业中的存在是在具有行业意识的学术界中使用它的原因。

在企业界,更改平台不仅意味着更改代码库,而且还针对所有技术,法规和业务问题找到了一套全新的专家和解决方案。 这通常是不值得的。 对于Java,已经有许多库和产品可用,而其他所有库和产品都不存在。 甚至企业专用的Java平台都添加了专门针对该领域的新功能。

Kotlin

如果您在Java公司工作,那么部分摆脱Java的唯一方法可能就是Kotlin。 Kotlin是一种比Java更安全,更高效的语言,同时易于使用并且与Java 100%兼容。 它由著名的软件开发公司JetBrains开发。 最近,它成为Android支持的第二种语言(仅次于Java)。 Corda也使用它,由知名银行联盟开发的分布式分类帐。

C ++

C ++是对C的改进而诞生的,至少在公众看来,它在很大程度上取得了成功。 Linus Torvalds可能不喜欢它 ,但是大多数人都喜欢。 如果您的公司需要一种性能出色且与硬件紧密相关的语言,那么这是一个不错的选择。 尽管与C的兼容性仍然很重要,但是现在不容易获得。 如果没有别的,因为两种语言都在不断发展。

悠久的历史为企业提供了与Java相似的优势,即已经编写了许多代码。 它也有出色的表现。 原因之一是因为该语言的级别低于Java和普通程序员使用的大多数语言。 另一个原因是,世界上一些最好的程序员都致力于优化其编译器。 他们不仅为编译器自己编写了代码,而且还研究和开发了许多改进它们的技术。

历史还带来了一些缺点:有些功能实际上并不存在使用C ++的标准方法。 您可能必须强制使用它的方式,以免造成许多维护问题。

理论学术界

通过理论学术界,我们打算将其与我们之前讨论过的具有行业意识的学术界进行对比。 我们的意思是指出人们在学术界真正从事学术工作的类型。 更具实验性且与实际应用相距甚远的东西。 这些东西最终将被证明是有用的。

Python

此类的唯一好的一般答案是Python。 它不是唯一一种被广泛使用的语言,而是唯一一个在许多不同领域中使用的语言。 它具有一些重要的技术特征,例如易于扩展和嵌入的事实。 但是它之所以受欢迎,是因为它被设计为美观而有趣。

例如,Python使用空格而不是大括号来分隔代码块。 语言和社区支持一种文化,这种文化导致代码拒绝巧妙的技巧,但更喜欢可读,简单和显式的代码。 因此,它易于使用,因此非常适合原型制作。 在许多方面,它是强调文化在编程中的重要性的最佳编程语言。

关于理论学术界的一个很好的例子就是人工智能。 实际上,Python在人工智能的几个领域非常流行:从机器学习(使用scikit-learnTensorFlow之类的库)到使用NLTK进行自然语言处理。 Python还通过SciPy对科学计算提供了强大的支持,而对NumPy则提供了很多数学上的需求。

不好的部分

不幸的是,Python的使用存在弊端:许多实际方面并未得到照顾。 一方面,尽管与C ++相比,具有解释性的语言性能也不是很好,尽管它也不可怕。 这是导致创建多个不同实现的原因之一。 还有一些支持JVM或.NET甚至使Python在微控制器上运行的实现。

另一个问题是,还没有一种标准且简单的方法来部署Python应用程序,这意味着它非常复杂

2008年发布的向版本3的迁移存在问题,并且仍在进行中。 版本3与以前的版本不兼容,这导致最近的内存中的迁移时间最长。

朱莉亚

Julia(Julia)是一种满足高性能科学计算需求的语言,尽管它也可以用于更普通的Web开发。 简而言之:它是Python的一种性能更高,更不受欢迎的版本。 实际上,它还具有其他技术优势,例如对并发性和并行性的良好支持以及直接调用C,Fortran和Python代码的能力。 给定各自的社区和预期用途,它通常与Python一起使用。

许多其他小语言

当需要复杂的数学时,在学术界或行业的某些地方还使用许多其他小语言。 R是一种这样的语言, R是一种广泛用于统计和数据分析的编程语言。 R对于此类行业具有一些有用的功能,例如其自己的文档格式以及许多标准功能都是用R本身编写的事实,因此它们很容易为用户分析。 但是,最大的优势是可以提供大量的库以及用于统计和数据分析的专业知识。

MATLAB既是语言,又是计算环境。 这意味着它可以被那些非程序员的人轻易而轻松地使用。 此类别包括大多数科学家。 它广泛用于工业和学术界的技术计算。 作为专有软件,它确实有一个价格标签。 MATLAB的著名竞争对手是Wolfram Mathematica ,它落后于著名的计算知识引擎 Wolfram Alpha

R和MATLAB都是技术上的编程语言,但是在大多数情况下,它们本身并没有被程序员使用。 它们被科学家和行业专家用于研发。

并发和可靠的软件

与并发相关的基本问题会影响任何软件。 例如,如何协调对共享资源的访问是一个可能影响任何程序的问题。 但是,实际上,大多数开发人员倾向于忽略它。 这是因为大多数编程语言提供的基本解决方案都足够好。 在真正开始影响他们的地方,例如Web开发和对数据库的访问,非常聪明的人为他们做了很多工作。

当您开始在并发方面真正具有相同的强烈要求时,您可能会采用功能性编程语言。

但是,如果您的业务依赖于此,则您需要更多。 一种明确用于开发高度可靠的并发应用程序的语言。

Erlang

任何使用另一种语言的足够复杂的并发程序都包含一个临时的,非正式指定的,臭虫缠身的缓慢的Erlang一半实现。

Erlang的创始人之一Robert Virding

当您绝对需要开发分布式,容错,可靠,软实时并发应用程序时,您可以选择Erlang。 它是由电信公司爱立信开发的一种开源语言,正是出于这种需求。 该语言本身显然具有适当的技术特征,例如成为功能性编程语言和实现Actor模型

但是,Erlang的真正优势在于,在开发整个生态系统时都考虑到了这一目标。 例如,相对于流程及其组织监督 ,它具有一些有趣的功能。 实际上,Erlang不仅是一种语言,而且是一个运行时系统和一些易于使用的组件,例如分布式数据库。 它具有检查代码质量或程序执行的工具。 整个系统称为开放电信平台(OTP)。

简而言之,Erlang是经过实践检验的语言和平台,可以创建可靠的并发应用程序。

长生不老药

Erlang是为企业开发的,这意味着它在技术上可能是完美的,但不是那么漂亮或非常有生产力。 为了解决这个缺陷,JoséValim创建了Elixir,这是一种基于Erlang平台构建的语言。 例如,Elixir添加了对可扩展性的支持。 对于习惯了Ruby或Python的人们,您可以将Elixir视为Erlang。

它越来越受欢迎,已被Pinterest和Moz等公司所使用,但尚未有很多用户。

当然,另一家需要开发并发应用程序的公司是Google。 因此,在那里工作的人们创造了Go就不足为奇了。 它最初是由一些工程师进行的实验,目的是开发一种在C ++和Java上得到改进的语言。 对这些语言的重新构想不只是一种演变,还有其他一些好处。

它被设计为可扩展到大型系统,并且无需IDE即可使用,而且生产率高,特别擅长联网和并发。 除了经过深思熟虑的设计外,它还具有一些并发的特定功能,例如一种称为goroutines的轻量级进程。

它的所有作者都不喜欢C ++的复杂性。 因此,从某种意义上讲,它是一种旨在说服C人进入新世纪的语言。

在Google进行开发时,如果说它以Microsoft支持C#的相同方式得到Google的支持是不正确的。 在Google工作的人也开发了其他语言。 因此,这是一种许多人喜欢的语言,包括一些在Google工作的人。 实际上,Docker和Dropbox也使用它。

系统软件

系统软件是一种主要由其他程序使用的软件。 它具有一些特定的需求:性能和与硬件的接近性。 如果要编写系统软件,则必须处理所有硬件差异,以便其他人可以提高工作效率。 您还必须提供最佳的性能,因为其他一切都取决于您。 并非所有程序都需要将效率提高1%,但是有些程序需要这样做,而且您也在为它们编写软件。

C

C是一门革命性的语言,除了少数优势之外,它实际上消除了所有当时的竞争对手。 尽管它仍然受到许多用户的喜爱,但对于其他所有人来说,它仍然存在一些问题。 其中某些功能(例如手动内存管理)可能无法达到预期的效果。 但是其他一些功能,例如没有任何功能来支持大型程序或神秘的预处理器,则大多已成为其时代的遗产,没有人会使用现代语言。

但是,根本没有其他选择具有与C相同数量的库和优化。 没有其他语言在系统编程方面拥有如此众多的专家开发人员。 它的用户必须是专家,因为该语言不会以任何方式帮助您开发良好的大型应用程序。

C语言的编译器是如此高效,以至于该语言还具有中间语言。 例如,Python和PHP的实现是用C编写的。

C ++

C ++也广泛用于系统编程。 它的优点是可以更好地支持大型应用程序,例如使用面向对象的编程。 但是有些人发现系统编程根本不需要此附加功能。

Rust是Mozilla赞助的一种用于系统编程的新语言。 它是开源的,因此对社区的贡献开放。 但是语言的设计随着Servo的发展而发展,Servo是一种用于浏览器的实验性布局引擎。 它受到许多用户的喜爱 ,事实上,根据StackOverlow对开发人员调查,它实际上是最受欢迎的编程语言

Rust的设计还为并发性,内存安全性和大规模应用程序提供了强大的支持。 例如,不能有空指针或悬空指针,这会导致C或C ++中与内存相关的错误。 它具有与C ++相当的类和性能。

它比C或C ++流行得多,并且尚未在广泛的应用程序中使用。 Mozilla计划最终将其用于Firefox(尽管不是直接与Servo一起使用)。 目前,使用它的最重要的软件可能是Tor,这是一个匿名网络,其安全性实际上就是存在的理由

游戏开发

游戏开发似乎是与系统编程最正交的事情,因为您确实不希望玩游戏的软件 。 尽管如此,对性能也有类似的需求。 这对于某些要求苛刻的游戏很有用,但对于构​​建游戏引擎(用于简化游戏开发的软件)是必不可少的。

游戏开发也有着截然不同的需求:生产力。 这是许多企业所要求的功能,但在游戏开发中却是生死攸关的现实。 没有其他软件行业如此依赖于良好的发行收入。 游戏开发人员甚至可能在发布游戏之前就失败了。

这些要求的组合导致行业严重依赖特定的库,游戏引擎,SDK和工具。

C ++

用于专业游戏开发的最常用编程语言是C ++,它将良好的生产率与性能结合在一起。 它还拥有最有经验的开发人员。 某些软件可能是用C编写的,但是大多数开发人员更喜欢使用C ++ 。 专为C ++开发的软件示例包括DirectX技术和虚幻引擎。

C#

如果您不需要最佳性能,或者喜欢更轻松的开发和跨平台支持,那么C#是一个不错的选择。 这实际上是库和SDK的问题。 最初,Microsoft创建了XNA,以使游戏开发在Windows和Xbox上更易于访问,但后来被跨平台的MonoGame所取代。 它也是与广泛的游戏引擎Unity一起使用的首选语言。

快速高效的Web开发

尽可能尝试,您无法逃脱WordPress

Web开发正在进行中。 它可能是最广泛的发展领域。 每个人都需要开发Web应用程序,或者至少开发与Internet交互的应用程序。 因此,无论是在可用的库还是在可用的程序员的意义上,功能都是存在的。 几乎所有流行语言都可以在某些大型网站上使用,这证明它可以专业地完成。 哎呀,甚至还有用于快速Web开发的C ++框架

然后,使用一种语言而不是另一种语言的理由主要取决于您需要的社区和/或您知道的语言。 例如,您的应用程序可能与技术计算有关,然后选择Python。

如果您没有偏好,我们可以提供一些默认选项。

Java脚本

很明显,JavaScript是客户端Web开发的唯一选择,但它也在服务器端使用。 每种可能的开发方式都有无数JavaScript库。 从雄心勃勃的应用程序到简单的应用程序,都有适用于各种应用程序的Web框架。 因此,您还可以找到适合自己需求和风格的一切。

从根本上讲,JavaScript传播到服务器有两个原因:优化运行时环境和开发人员的能力。

许多开发人员已花费大量时间来优化JavaScript引擎和该语言使用的工具的性能和质量。 可能只有C和C ++可以要求类似的投资水平。 因此,利用这些努力并在各处使用它是有意义的。

JavaScript可以提供最好的最佳开发人员,他们已经学会了快速编写代码和针对性能进行优化编写。 您想尽可能地使用他们的技能。 网络的另一端,即服务器,也需要非常相似的专业知识。

另一方面,JavaScript可能是唯一没有受过正规培训或教育的人所使用的唯一语言。 人们甚至还没有阅读过JavaScript手册,但是他们已经通过复制和粘贴来学习了。 在开始使用JavaScript之前已经开始使用jQuery的人。 它们也有助于JavaScript的传播,因为这是他们唯一了解的内容。

这意味着您可能需要花费一些时间为您的项目找到合适的开发人员。

打字稿

新的Web框架使构建大型而强大的应用程序变得更加容易。 尽管有些人认为JavaScript本身还不够。 对于这些人,TypeScript可能是理想的折衷方案。 它是具有静态类型和类支持JavaScript的超集,可转换为JavaScript本身。 这意味着您可以在部署中重用JavaScript基础结构。

它主要由Microsoft开发,但也被Google用于Angular (不要与AngularJs混淆)。

PHP

PHP被设计为一组工具,用于简化和加速服务器端Web开发。 您可能会指责PHP是一种设计不良的语言。 但是你会错的: 它根本不是设计而成的 ,甚至根本不是一种语言。

Rasmus Leedorf关于PHP的创建:

我真的不喜欢编程。 我构建此工具的目的是为了减少编程,以便我可以重复使用代码。 [..]我不知道如何阻止它,从来没有写任何一种编程语言的意图[…]我完全不知道如何写一种编程语言,我只是不断增加下一步的逻辑步骤

另一方面,这证明了把事情做好的哲学力量。 因为PHP确实可以正常工作,但效果并不佳或安全,但是在其他任何地方都无法工作。 实际上,直到几年前,它还是进行服务器端Web开发的唯一简便方法。 它易于部署,并且具有满足所有Web开发需求的大量库。 由于这些原因,即使在今天,CMS仍然是PHP的据点。

如今,该领域充满了竞争者。 PHP仍然是使用最广泛的服务器端语言,但它不再是唯一的选择。 该语言也有很多改进,PHP 7是一种真正的设计语言。 有许多良好的Web开发框架,例如LaravelPhalcon ,它们鼓励进行健壮,安全和周密的开发。

同时,PHP仍然遭受其起源的困扰。 您可以创建良好PHP代码,但很少有用户这样做。 原因是PHP仍然吸引了许多只想简单编程的用户。 因此,您必须注意找到优秀PHP开发人员。

苹果软件

该玻璃杯仅与Apple iWater兼容

尽管倾向于用诸如魔术之类的词来形容他们的软件,但苹果公司像我们其他人一样编写着平凡的软件。 因此,将特定的部分专门用于Apple软件似乎有些奇怪。 之所以这样做,是因为该公司具有激发灵感的强烈愿景,这通常也是必须遵循的命令。

您当然可以使用C#等普通语言为其平台开发,并且为此提供了一些第三方支持。 但是Apple可以更方便地使用其语言。 它们提供了更好的支持和第一方工具,例如Xcode IDE。 除了需要学习一种新语言外,缺点是这些语言具有某些特殊功能。 例如,他们使用ARC而不是更常见的垃圾回收进行内存管理。

Swift

没有C的Objective-C

Swift是更新的语言,也是生产力最高的一种。 它已经是Apple开发人员中最常用和最受欢迎的编程语言。 它使用更熟悉的语法并支持更多的编程范例,例如函数式编程。 因此,您可能应该使用Swift。

目标C

尽管Apple可能会随时决定弃用其堆栈中的任何内容,但对于Objective-C不太可能这样做。 这仅仅是因为其许多代码库和基础结构都是用Objective-C编写的。 因此,如果您需要稍微更好的性能,则可以选择它。

但是语言是最可怕的编程语言之一 。 可能会不客气地将其定义为C ++的较差版本。 为了解决与导致C ++的问题类似的问题而做的事情,只是它以一种怪异的方式做到了。

您必须使用一种技术来构建许多事物

在某些情况下,您必须构建某些东西,但您不知道最终产品的外观如何。

或者您必须构建许多东西,但是您必须选择一种技术。 与小型企业合作或与小型企业合作都可能发生。 作为自由开发人员,这可能会很有用。

当您不确定您的产品将如何发展时也会发生这种情况,因为您无法预测市场。 您可能开始构建桌面应用程序,但是您的客户要求某些功能可以被多个用户访问,因此您添加了一个Web应用程序,然后……

C#

当您有不稳定和不同的要求时,您需要一种适用于所有情况的语言。 不仅从理论上讲是一种通用编程语言,而且还用于构建各种事物。 有些工具可以在所有方面为您提供帮助。 在这种情况下,C#是最好的语言。

它并不是要成为一种革命性的语言,而是基本上是Java和C ++的更好版本。 由于这三种语言都在不断发展,因此我们可以永远争论是否成功,并且每年都会找到新的答案。 从技术上讲,C#支持其他语言所没有的特定功能,例如LINQ ,这些功能增加了对查询数据的轻松支持。

A few examples of the real usage of C# for: desktop software (Windows), games (MonoGame, Unity), web development (ASP.NET Core), mobile (Xamarin) and even embedded systems ( .NET Micro Framework ). Some of this software (eg .NET Micro Framework, Unity) is written in C/C++, but it is meant to support the use of C#.

平台

An important difference is that, while Java was always designed with portability in mind, C# was designed by Microsoft for its platforms. This has been both and advantage and a disadvantage. The disadvantage is that it was always mostly used on Microsoft platforms and according to its needs. The advantage is that it was brought and used for everything from desktop software to web development.

This has certainly changed, both in the sense that now .NET Core is designed and actively supported to be cross-platform. Also Microsoft does not use C# for everything anymore. On the other hand Microsoft keep developing what many consider the best IDE of all: Visual Studio.

The CLI standard is independent from C#, while a Java Virtual Machine (JVM) is very much tied to support Java. This means that an implementation of CLI, like the .NET Framework or Mono, can support many other languages as first-citizens, like Visual Basic.NET and F#. While this is not an advantage of C# per se it comes with choosing the language. This is useful because you can keep maintaining one platform and infrastructure, but you can keep C# with another language better suited for a specific subsytem.

JavaScript

JavaScript is a language created for client-side web development, so it might seem odd to see it as a language for all things. And indeed it is. But this is not a suggestion, rather the statement of a fact, or an act of surrender . JavaScript will be used for everything. It started to be available for use in server-side web development, with Node.js, then it became possible to use it for mobile, for example with Apache Cordova , then desktop, with Electron and WinJs and games, with WebGL.

There are people that have build parser generators in JavaScript or even entire operating systems for JavaScript.

We have already seen the reasons that lead to the spread of JavaScript: optimization and developers expertise. While the expertise may be less applicable to everything else outside the web, the will and the support of many companies is there. So we will all have to deal with the fact that some people are willing to use JavaScript for almost everything. At this point any resistance seems futile.

Two Interesting Languages

There are two languages that we would like to talk about. They are interesting to show what could make a language useful and popular to a diverse community. They are both created in academia and great languages on technical grounds.

Prolog

Prolog is a general-purpose logic programming language used for artificial intelligence and computational linguistics. It is still quite popular in that field, but it never really left academia. This is due to its very design. Logic programming is a programming paradigm based on formal logic. So you state some fact, or truth, about an element and then the program itself find the solution. You say thinks like:

  • A is true
  • B is false only if A is true and C is a cat
  • C is a dog

Then you ask the program to tell you what is B.

This is neat, but nobody really found a way to make it work. There are really no artificial intelligence programs useful in real-life with this logical approach. Most of contemporary development in artificial intelligence relies on machine learning or similar non-logic approaches.

Another problem is technical. Prolog is a fifth-generation programming language . In this context, generation does not denote a chronological feature, but a programming language in which the developer states the constraints of the problem and the language itself will find a strategy to solve it. In the case of Prolog the constraints are logical statements.

Well, it turns out that to design a general and efficient algorithm to automatically find a solution is really hard. So the resulting programs are not efficient. This makes impossible to write large scale applications with them.

There are newer languages that attempt to improve on Prolog and make it usable in the real-world, like Mercury , but they are not in widespread use.

哈斯克尔

Haskell was designed to be the C of functional programming languages: the definitive purely functional programming language. It largely succeeded, but for some time it remained confined to academia and the kind of industry that requires heavy use of advanced mathematics, like finance. Notice that this does not necessarily mean numerical computing.

The functional programming paradigm relies on having programming functions that behave as mathematical functions . This allows the creation of a function that does not modify outside data or have observable interactions with the outside context. Observable interaction refers to things like writing data on a file or raising an exception. Technically this means that a function has no side-effects . This also makes possible to have functions as first-class citizens . Functions are like any other type and, for example, you can use them as argument of other functions.

Expert programmers have noticed, or probably already know, that these are desirable features for avoiding many problems created by concurrency. And the rising popularity of the internet has increased the need to deal with such problems. So Haskell has increased its popularity. Facebook and Microsoft use it and there are even web frameworks for this language. On the other hand it is not specifically designed for concurrency, or any industry use, so it is less pragmatic than Erlang or Go.

What Does All This Mean

By the standard of academia Prolog and Haskell are both successful languages. Haskell is an usable and popular functional programming language and Prolog in a sense proved that logic programming does not work in practice and it is not easy to use it to solve real problems. That count as success because even a negative answer to an important question is worth the effort.

Of course, by the standard of the real world Prolog it is not that successful. Despite being still the most popular logic programming language. We personally think that Prolog is one of the most interesting languages ever created, but even we could not find a place for it in production code.

This does not just mean that technical features are not enough. That is true, but Prolog and Haskell did have a community and specific uses in mind, in addition to technical features.

It serves to illustrate a strange fact: developers are literally creating the edge of technology, but they benefit from being late adopters. You cannot predict which languages will be successful, nor why. You might spend a lot of time learning and developing with a language, but your community may choose another one. Sometimes the best programming language simply changes. So we cannot guarantee that these will be the best languages forever, only that right now many smart people think they are.

Even the real world success of Haskell might be temporary, because if history teaches us something a language like F#, could easily take its place.

F#

From the business perspective, the primary role of F# is to reduce the time-to-deployment for analytical software components in the modern enterprise

Being a purely functional programing language restricts the appeal of Haskell and it makes difficult to understand by the average programmer. It may be easier to adopt a language like F#, that is primarily functional, but support also traditional programming paradigms. F# can run on any platform that implements the CLI-standard, like C#. This also allows it to interact with other languages that run on the same platform and reuse their codebase.

Good Languages That We Could Not Fit Anywhere

There are obviously many other programming languages that we could not fit in this analysis. One of the reasons is our approach: some languages are not that popular, some do not have won over a specific community. Sometimes there was simply a better alternative. These reasons had lead to the exclusion of languages like Ruby, Perl, Object Pascal and Visual Basic.NET.

There also languages used in very specific niches, for example:

  • ADA for the US military and related industries
  • Fortran for numerical computing, especially with supercomputers
  • COBOL for finance and related industries

We did not mention them because these are very specific, so if you need to work with them you probably already know them.

摘要

Talking about the best programming language is risky. It is easy to enrage somebody and hard to say something useful to a large audience. That is why we tried to clearly explain our rationale and provide pragmatic information. We talked about technical features when necessary, but we mostly reported on the community and the best use each language has.

We also tried to make the information accessible to programmers that have no familiarity with a certain field and to non-programmers. So that, if you are working for a small business or thinking about starting one, this might help you in making a decision considering both technical and business aspects.

翻译自: https://www.javacodegeeks.com/2017/06/best-programming-languages-situation.html

编程每种语言有什么用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值