原文

这些可作为当前流行语言强力替代的语言正在蒸蒸日上,或许你的下个项目正好能用到它

伟大的语言之所以流行是有理由的。它们提供了大量的开源代码,类库以及能使工作更加方便的框架。这些语言多年来被多个项目选作开发语言,并且在它们的擅长领域内变的越来越重要,并且硕果累累。

有时候大量的烂大街的主流开发语言也没办法满足你对特定问题的开发需求。有时候你不得不展望未来以期待能出现一门语言:有着良好的语言结构,能提供额外的功能,无需不断调整优化就能使你的代码提高运行速度。这门语言有着更好的稳定性以及良好的的代码结构,能帮你避免写出杂乱的或者错误的代码。

【编程的艺术正在快速变化。我们带你认识又酷有热的开发语言,让你领略不断变化编程世界。我通过InfoWorld's Application Development newsletter关注app开发的热门主题】(貌似是本文发表网站的小广告)
 
       这个世界有太多灵巧的语言,例如C#,Java,Javascript。有些语言可能只有少数拥护者,但是大多数语言,拥有庞大的社区拥护者,这些拥护者有着对这门语言能解决特定领域问题能力的相同的喜爱。可能知道这门语言语法的程序员没有过亿,但是有时候稍稍的变动或许是有价值的,当你学习了一门新的语言,说不定下个项目就能发挥用处。

以下的九门语言应该列在每一位程序眼的读书列表中。它们可能并不适合每个工程,因为大多数语言都是针对特定领域的。
但是它们都值得研究和投入精力去学习。某一天,其中的某一门语言就刚好符合你的项目或者老板的需求

Erlang:面向实时系统的函数式语言

Erlang最初是由瑞典电信设备制造商爱立信为通信应用(电话交换机)设计的。爱立信的开发者鼓吹Erlang的9个9指标的性能,
声称Erlang能够传输99.9999999%的数据。这时Erlang才开始引起人们的关注。
 
      Erlang的秘密是它的函数式设计范例。大部分代码都被强制运行于它的虚拟机中,这很好的避免了其他系统的干扰。函数都在
虚拟机内部运行,运行在小的“类似沙箱模式的轻量级进程中”,并且只能通过消息传递相互通讯。你不可能仅仅抓取一个指针就够
快速该变指针在栈中的状态。你必须保持在调用层次内部来保证函数状态的一致性。设计上或许有些不妥,但是这样很好的保证
了错误向外扩散。
 
       这种模式简化了运行逻辑,让运行时代码决定同时能够运行什么任务。并发处理也很容易管理,运行调度程序能够减少上下文
切换。Erlang迷们喜欢吹嘘“在Web服务器上同时运行2000万”处理器“(轻量级进程)。
 
       假如你正在构架一个类似移动电话交换机的实时收费系统,但是并没有足够的空间存储数据,那么Erlang正好符合你的需求。

Go:简单、动态

谷歌不是第一家调查集合语言的组织,最终发现语言杂乱,复杂并且效率不高。2009年,谷歌发布了它自己的解决方案:一门静态类型的语言,类似于c语言但是包含了其所不具备的特征,它让程序员避免了类型声明和被malloc调用锁迷惑。通过Go语言,程序员能够受益于塔的简洁、已编译的c语言的结构以及动态脚本语言的的易用性。
 
       同时,Sun和Apple也以相同的方式创建了Java和Swift语言,相应的,Google做出了一个重要的不同的决定:Go语言的发明者希望它能足够简单以至于每个程序员都能轻松的掌握。Rob Pike,发明者之一,向Ars Technica豪言道:长远来说,通过将事件分开处理,你能够获得更多。因此,Go语言还有一些灵活的特性,泛型,类型继承,断言,只通过干净的简单代码块操作字符串、数字以及哈希表。
 
       据报道这门这门语言在巨大谷歌帝国内部被很好的接受,在其它方面也获得了认可,动态语言Python和Ruby的爱好者接受了编译已编译语言的严密性。

假如你想要获得Google的青睐,并且需要建立服务器端的业务逻辑,那么Go会是一个好的选择。

Groovy:提供Java的脚本支持

Java世界是异常的灵活。但是你需要仍忍受它”穿个背带裤又要系皮带”的方式,例如,声明,每个变量的类型,分行代表每行结束,类的访问只是返回一个值。但是Go语言瞄准了动态语言的吸引人之处并且将它自身紧紧的与Java相集成。
 
       Groovy弃置了Java乏味的引号和分号方式,提供一种简单的编程习惯,也能用于扩展现有的Java代码。运行在jvm上。不仅仅如此,Groovy紧紧的月JavaJAR相结合,所以你能和好的利用一有的Java代码。Groovy运行起来像一门动态类型语言,并且能够访问静态类型Java对象的数据。

Groovy程序眼认为他们技术与Java程序员,同事也是Groovy程序员。基于Java代码,能够提供非常多的功能。充分使用Java拥有的闭包,操作符重载,多态性。不要忘了使用问号来做空指针的判断的简易性,这比使用 if-then语句来判断要简单得多。因此,简洁的语法,使程序员敲击键盘次数减少了。谁会不喜欢呢?
 
      最后,另所有Java程序员羡慕的动态语言的简单特点让他们能够减少工作量,有更多的娱乐时间,但是又不跳出Java圈。

OCaml:复杂数据层次把戏

一些程序员不喜欢声明变量,于是他们创建了动态语言。其他人喜欢声明一个变量的特定类型,integer,string或者是object。对于他们来说,大多胡编译型语言都对类型声明提供了支持。
 
       这是一些喜欢详细声明变量层次类型的,甚至谈到要创建“algebras”(代数)类型。他们想象列表和多种类型的表能用来表示复杂、多层次的数据。他们提到了多态,模式匹配原型以及数据封装。这只会他们期望的复杂的,高结构化类型、原型以及原原型世界的基础。
 
        对于他们,OCaml,一门有多个编程社区为了让前述想法被广泛接受而共同努力的语言。OCaml提供类对象的支持,自动内存管理以及跨平台。甚至苹果App商店也提供了OCaml的app支持。

OCaml的理想的工程可能是建立一个符号数学网站来教授代数。

CoffeeScript: 使JavaScript更简洁

技术角度来说,CoffeeScript并不是一门语言。这是一个将你写的代码转换Javascript的预处理器。但是它看起来有所与众不同,因为它缺少大量的标点符号。你可以人为他是Ruby或者Python,尽管内部表现像Javascript。
 
        当封号厌恶者被强制用浏览器支持的javascript编程的时候,coffeescript开始流行了。改变浏览器工作的脚本语言是不切实际的,于是他们写了他们自己的预处理。结果是程序员们能够写干净的嗲吗并且让CoffeeScript将那些代码转译成各种符号的Javascript语言指令来操控浏览器。
 
       少了分号紧紧支持开始。通过CoffeeScript,你甚至不需要通过var来声明变量。声明函数也不需要function关键字或者大括号。事实上,大括号在CoffeeScript中也不太被使用。代码是如此的简洁,以至于相比于哥特式教堂,它看起来像现代主义建筑物。这就是为什么很多新的javascript框架通常是用CoffeeScript写的然后编译成Javascript。

Scala:JVM上的函数式编程

假如你想要让你的代码有面向对象的清晰层次结构又喜欢函数型编程模式,那你有很多选择。假如你熟悉Java,Scala会是你的一个选择。
 
       Scala运行在JVM上,并将所有的清晰的函数式编程的约束转变成Java支持的语法以及联接到具体的JAR文件。假如那些额外的JAR中有副作用和其他不可避免的令人讨厌的头痛代码,那么使用Scala刚刚适合业务场景,你的代码会变得很清晰。
 
        Scala是静态类型的。编译器负责在编译时推断出具体类型,对象类型和原始类型没有区别,因为Scala想让每一个对象都继承自Any。Scala的语法比Java更加简洁。Scala程序员称之为“低礼节”。你可以把驼峰式命名方式遗留在Java世界了。
 
       Scala提供了很多函数型语言的特征,例如懒初始化,尾递归,常量。但是为了能在JVM中运行,做了适当的修改。基本的原类型或者列表变量(像lists和哈希表),可以是可变或者不可变的。尾递归通过简单的例子运行,而不是必须通过详细声明的可变递归。以上是Scala的全部实现思想,但是因为需要运行在JVM上,具体实现会有所限制。Scala能够所有Java平台上运行,能很好的与已存在的开源Java代码混用。这对于许多实践性问题是一种权衡。    
 
      假如你需要将数据放在一千个处理器的集群中处理,并且有一堆遗留的Java代码,那么Scala是一个很好的解决方案。

Dart: 不像JavaScript的JavaScript

流行并不是被吹捧出来的。可能有越来越多领域使用到了JavaScript,“事君数,斯辱矣;朋友数,斯疏矣”,有时候太过于亲近反而会导致疏远,疏远了然后就开始寻找替代。Dart是Google出品的一门适用于Web浏览器端的新语言。
 
       Dart并没有从JavaScript基本概念中脱离出来。它工作在浏览器中,操作所有的DIV和我们所见的Web对象。Dart的作者仅仅只是为了清除JavaScript中所有恼人的部分,使之变得更简洁。底层结构并没有太大的变化。因为他们希望将Dart代码转成Javascript来提高运行速度。
 
       高亮可能在许多JavaScript类库中提供的额外功能。你不需要通过JQuery或者其他通用类库来修改部分HTML页面。Dart提供了默认的支持。也许一些熟悉的数据类型以及语法的速记技巧能够少敲几次键盘。Google通过提供开源的支持大多数主流平台的开源工具来答题推广Dart。
 
      假如你正在建立一个动态的web应用。并且已经对于JavaScript厌烦了,Dart提供了清晰的语法结构来创建有多种web资源数据的Div块。

Haskell:通用纯函数式编程语言

经过超过20年的时间,一直研究函数型编程的学术研究者开发了Haskell语言,一门用来表达他们对于副作用的坏处的想法的语言。这是一门更加存粹的表达式函数型语言,通过精细的机制来处理I/O Channels和其他不可避免的副作用。其余的代码应该是相当有用的。
 
      Haskell社区相当活跃,那里有很多Haskell的变体等着你去探究。有些是单机版的,其他的是通过与像Java(Jaskell,Frege)或者Python那样的主流语言集成的。大多数的名字显示他们来自苏格兰,那里是Haskell研究,或者是哲学家/逻辑学家(他们是许多Haskell思想的启蒙者)的温床。假如你认为你的数据结构和类型太复杂了,你可以考虑用Haskell。

Julia: 给Python界带来了新的消息

科学计算领域有一群Python的爱好者,享受Python带来的简单语法以及能够避免陷入乱用指针和字节的细节中的自由自在。除了所有的优点,Python通常在科学计算中处理大数据所表现的令人发狂的运行速度一值是一个诟病。为了提高运行速度,很多科学家转而使用c语言来编写核心的运行代码。但是这带来了新的问题,用两种语言写的程序很难修改或者扩展。
 
        Julia是这种复杂问题的一种解决方案。它的作者带来了零Python程序员欣赏的干净语法并且做了稍稍修改使之能够在后台编译代码。通过这种方式,你能够像Python那样打开个记事本或者命令行来编码,但是你写的任何代码都会被即时编译。
 
        Julia真是非常了不起的语言。它提供了非常强大的类型分析引擎能够帮助优化代码。假如你喜欢元编程,这门语言提供了足够的扩展接口。它最大的附加价值是通过集群发布并行算法的简单机制。其内置了大量的数学算法库用来做数据分析。
 
        最好的消息应该是它的运行速度。它的许多基本标准的运行速度是Python的30倍,甚至比c语言还快一点,假如你需要处理大量数据并且喜欢Python的语法,那么你最好快去学学Julia吧。

Peter Wayner — 特约编辑
Peter Wayner是InfoWorld的特约编辑,以及超过16本书不同主题的书的作者,涉及开源软件,自动驾驶汽车,个人计算,数据处理,速记式加密等。

provenance  起源,出处
encapsulate  封装;概述
gnarly  多瘤的,粗糙的
trade-off  交易;权衡
ceremony  典礼,仪式;礼仪
imperative   必要的,不可避免的;命令的
concise  简明的,简洁的
insurmountable  不可逾越的;不能克服的
guts  勇气( gut的名词复数 );内脏;消化道的下段
popularize  使受欢迎;普及;
extravaganza  内容狂妄的作品;盛大表演(比赛),盛事;狂文,狂诗,狂曲;狂妄的
multilevel  多级;多层次
heterogeneous  多种多样的,混杂的;不均匀;非均匀
elaborate  详细制定;详尽阐述
humdrum  乏味的,平凡的
goodness  良好;善良;精华;上帝
rigor  严格;严酷;严密
coaxed  巧言骗取;哄劝,劝诱
zippy  <非正>能迅速移动的
terseness  简洁,精练
juggle  用…玩杂耍,边抛边接;歪曲,篡改;欺骗;失去平衡
cluttered  杂乱;混乱;喧嚣
paradigm  范例,样式
treasure  重视;珍惜;珍视;储存
sloppy  懒散的,草率的;稀薄的;多雨的
look beyond  往更远处看;展望未来
momentum  动量;势头;动力;要素,契机
nuance  细微差别;细微的表情

9大值得学习的尖端编程语言相关推荐

  1. 2020 年,网络安全方面 5 大值得学习的编程语言

    作者 | Andrew Long 译者 | 明明如月,责编 | 夕颜 封图 | CSDN下载自视觉中国 出品 | CSDN(ID:CSDNnews) 无论你是一名准专业人士,安全爱好者还是经验丰富的资 ...

  2. 2019年最值得学习的编程语言TOP5

    选择何种编程语言似乎无关紧要,因为大多数流行语言基于相同的基本概念,对于未经训练的人来说,大多数语言看起来都是一样的,都能得到大致相同的结果.但从开发人员的角度来看,编程语言不仅是一种工具,选择正确的 ...

  3. 2020 年最值得学习的 5 大 AI 编程语言

    来源:学术头条 本文约1571字,建议阅读4分钟. 本文介绍2020 年最值得学习的 5 大 AI 编程语言,希望对想学习人工智能的读者有帮助. 人工智能是当今世界最具需求的一个领域,人工智能通过编程 ...

  4. python查看数据大小_科多大数据带你看Python可以列为最值得学习的编程语言

    原标题:科多大数据带你看Python可以列为最值得学习的编程语言 不知道从什么时候开始,这句话开始流行.不过也从侧面反映出 Python 语言的特点:简单.高效. 从近期代表技术趋势的业界报告以及编程 ...

  5. 2021 年最值得学习的 5 大机器学习编程语言!

    [编者按]提起机器学习,绝大部分开发者想到的第一种编程语言都是 Python,Python 的确是学习机器学习的利器.但现在,如果想研究更多的编程语言,那你还有其他4种语言可选. 英文:Top 5 M ...

  6. 各大编程语言优势对比,哪些值得学习更高薪?

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 有人说程序员知识更新速度要很快,这是因为编程语言很容易就过时.这句话虽然有点绝对,但是也说 ...

  7. 2023年最值得学习的10大编程语言

    作为一名程序员,我们的目标之一就是学习新技术和编程语言,但是你应该学习哪些语言呢?由于学习一门编程语言既需要时间又需要耐心,因此您应该学习一门值得付出努力的语言:我的意思是,它可以帮助你获得更好的工作 ...

  8. 2015年最值得学习的编程语言是?

     2015年最值得学习的编程语言是? 2015-03-04 10:31 来源:优才网 编辑:Loading[纠错]12人评论 A-A+ 怎么开淘宝店 网站优化方法 创业如何获得投资 小米note顶 ...

  9. Java开发2018年值得学习的10大技术

    转载自 Java开发2018年值得学习的10大技术 作为一个开发人员,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR. ...

最新文章

  1. linux中软件包安装(rpm和yum)
  2. python三国演义人物出场统计_python爬取三国演义文本
  3. Docker_容器数据卷
  4. Android开发之判断任意View上拉的方法
  5. CommonJS,AMD,CMD区别 - 郑星阳 - ITeye博客
  6. python读取excel写入mysql pandas_python pandas 读取文件 写入文件excel
  7. cesium js 路径_vue2.0项目集成Cesium的实现方法
  8. 取消选中目标CALL
  9. 怪盗基德的滑翔翼(信息学奥赛一本通-T286)
  10. jQuery 基础事件
  11. 带你掌握二进制SCA检测工具的短板及应对措施
  12. 美丽联合与腾讯云签署战略协议 全面借助腾讯云打造智慧时尚电商平台
  13. linux运行程序时,中途出现意外怎么办?
  14. php_l3arning_notes_2
  15. linux+ipv6免流量下载,Ubuntu 12.04 校园网下使用IPv6源 免流量更新
  16. 2021年江西省研究生数学建模竞赛题目(二)题目:全国人口普查问题
  17. git中将多次commit合并为一次commit
  18. linux sftp连接报错:JSchException: Algorithm negotiation fail问题的解决方法
  19. 核心技术解析:移动端车牌识别系统方案
  20. Oliver的救援(bfs)

热门文章

  1. 微信小程序【人脸识别功能】
  2. 【threejs】可视化大屏酷炫3D地图附源码
  3. 梦幻手游服务器总维护,梦幻西游手游7.13维护解读 维护内容详细分析
  4. git如何忽略一个文件
  5. linux centos 7 系统性能查询、DHCP租期信息查询、网络五元组
  6. Redis在Windows下的安装教程
  7. AI如此多娇,引得猛男竞折腰
  8. 开源真的在蚕食整个世界吗
  9. 如何为超级通胀做好准备
  10. static关键字和块和包机制和继承super