【IT168 编译】在之前《企业和程序员如何选择合适的编程语言?》、《深度解析各种使用情境下的非常好的编程语言》的两篇文章中,我们针对编程语言的使用成本、选择标准以及应用场景做了解析。有网友表示很多编程语言并没有涵盖在内,本文将继续为大家解析各种应用场景下的非常好的编程语言。
Web快速开发
PHP
PHP的设计初衷是成为简化和加速服务器端Web开发的工具。有很多人说PHP是一种设计不善的语言,其实不然,PHP根本就没有设计,甚至都不能称之为语言。
PHP之父Rasmus Leedorf曾经如此描述过PHP:
"I really don’t like programming. I built this tool to program less so that I could just reuse code. [..] I don’t know how to stop it, there was never any intent to write a programming language […] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way."
PHP之所以能够存在,并不是因为其美观或者是安全,而是因为它的不可替代性。几年前,PHP成为了服务器端开发唯一的简单方法,易于部署,并且为Web开发提供了大量的库。直到现在,CMS仍然是PHP重要的根据地。
但是如今这个领域竞争激烈,尽管PHP仍然是使用最广泛的服务器端语言,但它已不再是唯一的选择。当然,PHP自身也有了很大的改进,PHP 7已经成为真正意义上的语言了,具有很多良好的Web开发框架,如 Laravel 和 Phalcon,之后也会朝着更强大、安全和成熟的方向发展。
与此同时,PHP其实还受着起源的影响,现在PHP能够创建体验更好的代码,但是用户却很少这样去做,因为大部分用户使用PHP都是因为其简单,所以,在招聘PHP程序员时一定要注意甄别。
苹果软件
在开发过程中,我们可能会遇到这样的情况,在不知道产品最终形态的情况下,就要开始创建,而创建时必须要选择一种编程语言。这种情况在与小企业合作时,或者是自由开发人员会经常碰到,这时应该如何选择编程语言呢?
C#
当你有不稳定或者不同的需求时,你就需要选择一种能够适应所有情况的语言,它不仅应该是一种理论上的通用语言,而且可以用来构建各种各样的东西,如果能够有一些工具协助那就再好不过了。在这些条件下,C#会是一个很好的选择。
C#并不是一个革命性的语言,而是一个更好的Java和C ++版本。C#、Java和C++都在不断的发展,所以对于上述说法,也一直存在着争议。技术上,C#有一些独特的支持,如LINQ,便于数据查询。
C#的实际应用例子有很多,如桌面软件(Windows)、游戏(MonoGame,Unity),网站开发(ASP.NET Core)、移动(Xamarin)和嵌入式系统(.NET Micro Framework)。还有一些软件是基于C/C++,如.NET Micro Framework、Unity等等,但它们的最终目的是支持C#。
平台
Java和C#的一个重要区别就是,Java旨在可移植性,而C#是微软为其平台量身定制的。这对C#来说既是优点也是缺点,优点是它可以应用于从桌面到Web开发的始终,缺点是它主要应用于微软平台。
所以这在一定程度上也促进了.Net Core积极支持跨平台,而且Visual Studio是众多程序员公认的最好用的IDE。
CLI标准独立于C#,而Java虚拟机(JVM)与Java非常紧密。这意味着CLI的实现,如.NET Framework或Mono,可以支持许多其他语言作为第一语言,如Visual Basic,.NET和F#。虽然这严格来说,并不是C#的优点,但是这是C#附带产生的效应,选择了C#,用户在之后的开发过程中还可以更换更适合的编程语言。
JavaScript
JavaScript是为客户端Web开发而创建的语言,所以插在这些语言中间可能有的人会觉得有些奇怪。但是,这几年JavaScript的受欢迎程度和发展是有目共睹的,开始支持服务器端,如Node.js,也可以用于移动端,如Apache Cordova,桌面软件可以使用Electron 和 WinJS,游戏开发可以使用WebGL。有的程序员甚至在JavaScript中构建解析器生成器,甚至还有还有程序员将其应用于整个操作系统。
JavaScript的受欢迎和传播程度有点超乎想象,这主要得益于JavaScript自身的优化和程序员的贡献。虽然,JavaScript在Web开发之外不太适用于其它场景,但是很多企业都愿意选择和使用JavaScript,甚至有些程序员和企业愿意所有的东西都用JavaScript来完成。
两种有趣的语言
有两种编程语言我特别想要和大家聊聊,它们都是学院派出身,从技术性来看,无疑都是伟大的语言。
Prolog
Prolog是用于人工智能和计算语言学的通用逻辑编程语言,在这个领域该语言尤其受欢迎。它的设计非常好,逻辑编程是基于形式逻辑的编程范例,你说出一个事实或者元素,程序本身就可以找到解决方案。
例如,假设我们现在有如下三个条件:
·A是真的
·B只有在A是真的且C是一只猫时才是假的。
·C是一只狗。
那么,此时程序就会告诉你B为真还是为假。
但遗憾的是,现实生活中还没有找到一个方法可以将上述逻辑实际应用。目前大多数人工智能还是依赖机器学习或者是类似的非逻辑方法。
还有一个技术问题,那就是Prolog号称是第五代语言。传统方法通常把问题的全部知识以各种的模型表达在固定程序中。对于人工智能技术要解决的问题,往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库(包含事实和推理规则),程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动。而现在,Prolog远远不能达到自然语言的要求。
Haskell
与命令式编程语言不同,Haskell是一种纯函数式编程语言。虽然它现在仍然局限在学术界和需要大量使用高等数学的行业如金融业,但是这并不意味着数值计算。
功能编程范式依赖于编程功能 ,其行为为数学函数,允许创建不修改外部数据或具有与外部上下文的可观察的交互功能。可观察的交互是指将数据写入文件或引发异常的事情。在技术上这意味着功能没有 side-effects,这也可能成为一等公民的功能。函数和其他类型一样,也可以作为其他函数的参数。
很多专业程序员可能已经意识到这会是避免很多问题的功能,互联网的日益普及也增加了处理这些问题的必要性,因此Haskell积累了相当的人气,Facebook和Microsoft都在使用,甚至还出现了Haskell的Web框架。另外,Haskell并不是为某些行业而专门设计的,所以它的实用性比不得Erlang和Go。
如果按照学术界的标准,Prolog和Haskell都是成功的语言。Haskell是一种可用和受欢迎的功能编程语言,而Prolog在某种意义上证明了逻辑编程在实践中不起作用,并且几乎很难来解决实际问题。(对一个问题做出否定回答同样值得肯定。)
但是如果按照现实世界的标准来看,Prolog并不是那么成功,因为还没有找到实际的使用案例。这不仅仅意味着技术特性还不够,在社区和具体用途上还有欠缺。
现实世界总是存在着这样一个怪圈,开发人员创造了技术的边缘,却只能受益于后来者的采纳。所以,可能你觉得哪一种语言会爆红,花了很多时间和精力去学习,而社区却做了和你相反的选择。
所以,我们不能保证一种语言永远都是最好的语言。Haskell取得的成功也只是暂时的,因为历史的教训告诉我们,它很容易就被F#这样的语言取代。
F#
从业务角度看,F#的主要作用是减少现代企业分析软件的组件部署时间。
作为一种纯粹的函数式编程语言,F#分得了Haskell的一部分盛宠。F#既是函数式编程语言,同时也支持传统的编程范例。F#可以在任何实现CLI标准的平台上运行,如C#,同时也支持与同一平台上运行的其他语言进行交互并重用其代码库。
适用于特殊场景的编程语言
很显然,有很多语言在我们今天的谈论中没有涉及到,它们当中有的可能是不太受欢迎,也有的可能是社区不给力......基于上述的种种原因,在这次的非常好的编程语言解析中,我们没有讨论了诸如Ruby,Perl,Object Pascal和Visual Basic.NET之类的语言。
当然,它们并非没有适用场景,相反它们在非常具体的特殊场景中被应用了,例如;
·ADA被应用于美军及相关行业;
·Fortran用于数字计算,尤其是超级计算机中;
·COBOL被应用于财务及相关行业;
在本文中我们之所有没有提到,是因为它们实在太具体了,只要你从事相关行业,就不可能不明白。
写在最后
讨论“什么是非常好的编程语言”其实是一个非常冒险的举动,因为这很容易就触怒了一部分人,但是我们是真的想为大部分读者提供一些实在的帮助,所以我们谈论了技术特性,也讨论了社区和每种语言的非常好的使用。
希望所有的程序员或者正在考虑加入程序员行列的准程序员都能够从文中获取到一些信息。