个别编程语言对软件开发的贡献

我已经厌倦了博客文章和论坛的喧闹声,指出为什么一种编程语言比另一种更好。 我不介意将语言进行比较以帮助了解它们的不同之处,或者甚至出于特定原因在特定情况下认为一种语言更好。 我还没有找到(从来没有期望找到)一种在所有情况下都比所有其他语言都更好的编程语言(包括HTML5 )。 实际上,我发现相反的说法是正确的:尽管我绝对有最喜欢的少数编程语言,但我认识到,范围更广的编程语言(甚至有些我个人不喜欢的编程语言)已经将软件开发作为一种帮助。练习到达我们今天的位置。

在这篇博客文章中,我研究了几种不同的编程语言对我们学科的贡献。 在大多数情况下,所列语言并不是第一个引入概念或功能的语言,而是第一个使其流行或成为“主流”语言的语言。 这篇文章的目的不是要说明哪种编程语言是最好的,或者为什么自切成薄片以来,一种语言是最好的,而另一种语言对于软件开发人员来说却是最糟糕的事情。 我也不会在本文中介绍XML或HTML之类的标记“语言”,尽管它们显然对软件开发产生了重大影响。

基本的

我认识的大多数软件开发人员都以某种形式的BASIC (初学者的通用符号指令代码)编写了一些代码。 我记得,很早在Internet甚至PC上的鼠标公开可用之前,我从邮件中收到的杂志中输入基本代码,其中包含各种简单游戏和PC实用程序的代码清单。 像许多开发人员一样,Basic是相对年轻的编程语言就吸引了我的兴趣。 正是从我的Basic编程中,我才直接了解了goto的危险。

C

在当今的软件开发中,C可能是所有编程语言中最具影响力的。 在Steve Yegge的著名博客文章The Next Big Language中 ,Yegge对于下一代大型编程语言的#1规则是它具有“类似于C的语法”。 许多人喜欢的编程语言本身(解释器或运行时环境 )都是用C编写的,其中许多语言都提供了机制( JNIXS是两个示例),以“逃逸”到C以获得性能。 尽管C语言比较古老,但它仍然是世界上最流行和使用最广泛的编程语言之一。 维基百科甚至有专门用于基于C的编程语言的条目。

科宝

尽管COBOL并不是您最近在博客或文章中经常读到的一种语言,但是有大量用COBOL( 面向公共业务的语言 )编写的已部署代码。 肯·鲍威尔在《 科博尔不属于博物馆》中写道:

我相信,史密森尼(Smithsonian)的科博(Cobol)首次亮相的精神并不表示其古老,而是对其过去以及持续成功的见证。 正如爱迪生的灯泡在当时是改变游戏规则的发明一样,Cobol改变了计算机的面貌,并继续对我们的日常生活产生巨大影响。

约翰·布雷登二世(John Breeden II)在一位真正的计算英雄 《致敬Cobol 的祝酒词》中还写道,Cobol对软件开发的影响说:“没有Cobol,每台早期的计算机都可能会开发自己的专有计算语言。 取而代之的是,我们开始了互操作性的探索之路,之后将非常方便。”

C#

C#作为Microsoft .NET旗舰语言的地位使其具有开箱即用的影响力。 C#的语法和早期功能也向C,C ++和Java致敬并提供了证据。 尽管C#在早期版本中大量借鉴了这些语言,但它也带来了自己的进步,这些进步已被其他语言(尤其是Java)所模仿。 Microsoft的计划是将旧版Visual Basic应用程序迁移到.NET框架(并使用C#库),该计划大规模地展示了JVM已经提供但很少使用的优点。 近年来,JVM上的多语言范例已经变得非常庞大,但是,尽管JVM早于CLR,但Microsoft对CLR的使用似乎是第一个将此思想带入主流意识的地方。

C ++

C ++曾经一种面向对象的语言,至今仍被大量使用,并且启发了其他高度流行的面向对象的语言,例如C#和Java。 C ++主导了“系统编程”市场,并将我们中的许多人认为编程从完全过程性思维转变为面向对象思维。 C ++本身具有作为流行语言的直接影响力,以及已经达到其流行程度的“子”语言的间接影响力,证明了该语言对软件开发的巨大影响。

Fortran

IBM的文章《 Fortran:开拓性编程语言》指出, FortranFORMula TRANslator )“成为第一个计算机语言标准,“为现代计算打开了大门”,并且很可能是历史上最具影响力的软件产品。” 我强烈建议阅读这篇有趣的文章,以了解有关Fortran对软件开发的影响和影响的更多信息。 Fortran也被称为 “第一种成功的高级编程语言”。

哈斯克尔

与Lisp一起, Haskell是我们中许多人在讨论函数式编程时想到的最早的编程语言之一。 当诸如Scala,Clojure甚至Java 8之类的语言将功能性编程概念引入JVM时,不难看出Haskell和Lisp等语言中这些功能的根源。 为何Haskell至关重要 Wiki页面指出:“ Haskell是一种现代通用语言,旨在将功能性编程社区的集体智慧整合到一种优雅,强大而通用的语言中。” 甚至还有一本免费的在线书,名为《 学好Haskell,为您服务!

JavaScript

JavaScript是当今最常用的编程语言之一,其优势是Web开发和移动开发。 HTML5运动受到了JavaScript的影响并扩大了影响。 已经建立了许多工具来将其他语言转换为JavaScript,并且还创建了新的框架和库来缓解JavaScript的困难(跨浏览器不兼容是主要问题)。 但是,大多数为Web或移动设备开发的开发人员仍然需要对JavaScript的基本了解。 Node.js以及Oracle选择JavaScript作为一种语言来证明JVM适用于与Java截然不同的语言(通过Project Nashorn )的语言证明,JavaScript在服务器端也取得了长足的发展。 最后,在其他ECMAScript实现(例如ActionScript)中可以看到JavaScript的影响。

JavaScript提供了一种很好的语言示例,该语言在使用其他语言进行开发时可以帮助塑造我的思维。 在jQuery和其他类似JavaScript库和框架问世之前的Java开发最痛苦的几年中,使用JavaScript的我们不得不直接使用它。 并不是JavaScript的特质和缺点,而是不同浏览器的DOM实现的特质和缺点使JavaScript开发人员感到愤怒和沮丧。 太多JavaScript代码充满了样板代码,试图检测浏览器版本(“ 浏览器嗅探 ”),以根据浏览器采取不同的操作。 这是有问题的,因为同一浏览器的不同版本可能会启动或停止支持某些DOM功能,这意味着浏览器检查会不断更新。 意识到使用DOM对象检测更好。 更高层次的想法是代码应询问某个功能是否可用 ,然后使用(如果可用 )。 今天,即使是使用其他语言,我也认为这应该是一个指导原则:不要以编程方式问一个间接指向正确行为的问题。 相反,在可能的情况下,提出直接指向要采取的正确措施的问题。 在其他语言中,它可能不如在JavaScript中那么重要,但是对于几乎可以自我维护的代码,它仍然是一种有用的策略。

Lisp

大卫·奇斯纳尔(David Chisnall)在其有影响力的编程语言,第4部分:Lisp中称Lisp为“有史以来最有影响力的编程语言”。 他援引该说法的理由包括:Lisp是“提供自动垃圾收集的第一种编程语言”,Lisp引入了“读-评估-打印循环(REPL)的思想”,Lisp早期使用了闭包/ lambda,以及Lisp的“对纯功能语言的启发”和“对多种面向对象语言的启发”。 在为什么Lisp?彼得·塞贝尔Peter Seibel)说:“因此,一方面,Lisp是计算机科学的“经典”语言之一,其依据是经受了时间考验的思想。 另一方面,它是一种完全现代化的通用语言,其设计反映了一种务实的方法,可以尽可能高效,稳健地解决实际问题。”

帕斯卡

与Basic一样, Pascal在软件开发方面也具有影响力,因为它广泛地用作“学习语言”。 Pascal的各个方面也以其他语言显示。 例如,Oracle数据库过程编程语言PL / SQL一直感觉与Pascal非常相似。 有人可能会说,如今通过PL / SQL等语言间接地感受到了Pascal的影响,而不是直接使用。 就个人而言,Pascal是我使用的第一语言,而不是业余爱好者使用的语言(这对我来说是Basic的角色),因为我在中学和大学课程中使用过Pascal,并且编写了我的第一个“商业”应用程序(体育交易)卡库存控制系统)。 我仍然认为Pascal作为“学习语言”具有许多优势。

佩尔

Perl在各种情况下都是重要的贡献者,特别是在早期Web开发( CGI脚本 )以及Unix / Linux脚本和开发中。 对于C风格的语言开发人员来说,Perl通常是动态语言的第一个口味。 它还帮助许多开发人员意识到以一种可以在所有Shell中使用的语言编写脚本而不是使用特定于Shell的脚本的优势。 此外,可以说Perl可能比任何其他语言都更能将正则表达式的功能以及sedawk的一些强大而简洁的功能带到软件开发的最前沿。

Python

我没有证据支持这一点,但是在我看来,Python是使大多数开发人员不再使用Perl进行脚本编写的语言。 用Perl编写的脚本仍然不计其数,仍然用Perl编写,但是Python似乎在编写新脚本的比例上有所提高。 有适用于所有类型的不同域的Python库。 例如,在我的2013年重要软件开发进展一文中 ,我写了有关Python和大数据的文章 。 Python似乎吸引了Java,.NET,C / C ++和其他不是Python主导语言的其他开发社区中的各种开发人员。

Ruby / Ruby on Rails

尽管Ruby on Rails是框架而不是语言,但Ruby on Rails似乎使Ruby在日本以外广为人知,因此,不考虑Ruby on Rails的影响就很难谈论Ruby的影响。 Ruby普及了许多面向对象的概念,这些概念在其他语言中却从未达到过Ruby的采用水平。 Ruby将所有事物都视为对象(没有基元),并且将动态机制与面向对象的原理结合使用,从而使Perl的固定对象定向无法实现,将面向对象的结构与动态语言结合在一起。 Ruby on Rails例外地普及了配置的概念,该概念在当今很普遍,但是在Ruby on Rails以及“ 约定优于配置 ”的特定和吸引人的命名法之前,鲜为人知(例如MavenHibernateJavaBeans )。

短暂聊天

如果我们用对其他语言和框架的影响力(用该语言编写的现有代码库)的比率来衡量编程语言,那么Smalltalk可能是所有语言中使用比率最高的(尽管ALGOL会在代码方面为它争取金钱)今天仍然部署)。 由于其相对较小的已部署代码库,Smalltalk对框架和更广泛使用的编程语言(包括Java和其他面向对象的语言)产生了巨大影响。 Smalltalk影响了其他语言的语法和概念(例如,一切都是对象),并且对当今的IDE产生了明显的影响。

Visual Basic

我在这里不多讨论Visual Basic,因为我已经在Basic和C#中至少进行了切切的探讨,但是它曾经一次成为世界上最受欢迎的编程语言之一,并影响了许多开发人员。业余爱好者和专业人士从该语言开始。 它还通过早期的IDE创新影响了软件开发,这些创新提供了Java和其他编程语言IDE可能(以及将会)成为什么样的一瞥。

Java

尼古拉斯·弗兰克尔的( @nicolas_frankel和电流的周DZone开发分享Tweet (具有所有编程语言对我来说是最个人的影响力,尽管Java的)让我想起了我忘了,包括我的名单上的Java。 我在这里纠正了我打算在原始帖子中包括的段落。

鉴于Java在学术和专业编程环境中的普遍性,许多开发人员曾经一次或多次编写Java,而接触Java的开发人员数量之多通常说明了其对软件开发的影响。 许多新的语言设计师仍然将他们的语言与Java进行比较和对比。

Java对编程的最大影响也许是它引入了JVM以及与虚拟机相关的许多好处。 与大多数语言所提供的“ 在任何地方运行一次写入 ”范式相比,JVM提供了更好的支持。 这不仅增加了Java应用程序的可移植性,而且还帮助我们许多人开始认为,最好是使数据类型具有相同的内存大小,而不管编写应用程序的平台如何。 对于我们这些主要使用要求开发人员仔细管理自己的内存释放的语言的人来说,Java的垃圾收集机制几乎是一个太好了,无法成为现实。 编译后操作Java字节代码的能力导致了许多基于JVM的动态语言,这也是可以说最好在基于Java的产品(例如AspectJSpring Framework)中实现面向方面的编程的原因之一。

使我印象深刻的第一件事就是Javadoc机制。 我喜欢能够将源注释添加到可在Web浏览器中查看的文档中。 随着互联网使用的增长, 标准的JDK APIJava EE API以及库和框架的API联机可用是巨大的好处,此后许多其他语言都在模仿此功能。

在使用Java之前,我从未考虑过反思内省的力量。 Java继续添加反射功能,例如Java 7中的方法句柄Java 8中的新java.lang.reflect.Parameter类。 Java的Java管理扩展JMX )向我介绍了一种概念,即以编程方式访问有关虚拟机内部甚至运行应用程序本身的详细信息的能力。

Java的出现发生在我们C ++开发人员(以及其他人员)掌握“ 四人帮 ”一书中的概念“ 设计模式:可重用的面向对象软件的元素”的时代 。 Java引入了语言中内置的功能,这些功能为我们正式定义了本书的某些概念。 特别是,Java 接口使实现本书中概述的许多模式更加容易。 Java还包含一些功能,这些功能使开发人员可以根据实际经验而不是简单的理论来决定编码。 我能想到的最好的例子是Java对检查异常的介绍。 不管是喜欢还是讨厌,Java对可检查异常和未检查异常的实现都帮助许多开发人员根据对这些概念的实际经验来形成意见。

感谢Nathan GreenValery Silaev指出我忽略了提及Java。 Valery强调了Java吹捧的相同VM优势,并强调了虚拟机环境中的信任和性能提升。 内森(Nathan)对我从Java成为Javadoc主流的源代码生成文档的优点方面也持同样的想法。 Nathan还指出,.NET诞生之前,JVM支持某些(我认为是次要的)语言。 我坚持认为.NET(是强制性的,但正如Nathan指出的那样, 并不完全成功 )对世界上使用最广泛的一种语言(Visual Basic)的支持,它能够调用以新的热点(C#)编写的库。确实帮助我们了解了大型程序的实用性和商业可行性。

其他JVM语言

在这篇文章中,我不会选择Java以外的其他在JVM中运行的语言,但是它们无疑会影响软件开发,特别是在现有Java开发人员中。 Groovy帮助我拥抱了内在的脚本编写者,而Scala帮助我更加清楚地了解了可变状态的危险和函数式编程的价值。 ClojureKotlinCeylon也在挑战Java开发人员的思维方式并引入新概念,其中一些甚至使它融入Java本身。 这些替代的JVM语言为Java开发人员带来了许多非Java语言的概念和影响( RubyLispErlang等)给Java开发人员,而无需离开JVM。 最后一点的最佳示例是JRuby (对于Ruby)和Jython (对于Python)。

的PHP

在我的文章《 为什么PHP将成为我的下一种语言》中 ,我写了一些我在1990年代末第一次看PHP时不喜欢我之后再次给PHP机会的原因。 在许多方面,我认为同一篇文章反映了PHP如何受到开发人员对其他语言和文化的体验的积极影响。 毫无疑问,PHP对Web开发产生了巨大影响。 对于许多新的Web开发人员来说,PHP一直是一种“网关语言”。 演示和服务器端逻辑的轻松混合激怒了我们中的某些人,但被视为对其他人的好处。 它提醒我,软件开发中没有绝对的规则。

许多主要的Web平台都基于PHP构建并提供PHP API。 这些无处不在必然意味着开发人员在为这些平台编写程序时不得不帮助使用PHP并受其影响。 对我来说很有趣的是,尽管本文未专门提到PHP,但过去的编程语言及其对当今语言和编程范例的影响的网页由PHP提供支持。 这听起来像是一个面向Java的博客,但没有将Java作为促进软件开发的一种语言。

感谢Valery Silaev在此原始帖子中提到了我对PHP的忽视。

艾达

最近的采访文章“ 安全性是目前物联网最大的问题之一 ”提醒我,我错过了清单上的Ada。 尽管Ada今天符合该文章中Jamie Ayre的描述(“ Ada当然是一种利基语言,它不是C,它不是Java”。)但Ada在历史上要大得多,并且对软件开发产生了巨大影响。 AdaCore 对Ada描述是:Ada是一种现代编程语言,设计用于大型,寿命长的应用程序,尤其是嵌入式系统,在这些应用程序中,可靠性和效率至关重要。 …Ada 95是第一种国际标准化的(ISO)面向对象语言。”

Erlang

Erlang在其主页上被描述为“一种编程语言,用于构建对高可用性有要求的大规模可扩展软实时系统。” 学会为大众带来好处的不要喝太多 酷乐”部分! 很好地将Erlang的优缺点与不好的优点进行了对比。 Erlang的并发模型影响了开发人员和其他语言。 关于Erlang及其对开发人员的影响, 为什么Erlang如此重要以及为什么我在Erlang编程也很有趣。

结论

如今,软件开发人员可以选择比以往更多的编程语言。 在每种情况下,没有一种语言是最好的,具有多种优点和缺点的多种语言为消费者(开发人员)提供了多种选择。 竞争对消费者有利,并推动了我们使用语言的改进。 使用不同的编程语言的优势之一是能够学习范例和概念,即使在使用其他编程语言时,也可以在某种程度上应用到我们的工作中。 尽管我绝对比其他语言更喜欢某些语言,但我认识到所有主要的编程语言都有其缺点(或者它们不是最适合的情况),所有主要的编程语言都有其优点(或者它们是最合适的情况之一)对于)。

鼓励反馈

毫无疑问,我在这篇文章中错过了几种重要的编程语言,也毫无疑问地错过了某些涵盖语言的一些重要功能,这些功能通常影响了软件开发。 添加这些语言或语言功能的反馈意见非常感谢。

其他资源

翻译自: https://www.javacodegeeks.com/2014/04/contributions-of-individual-programming-languages-to-software-development.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值