热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

永不磨灭的九大尖端编程语言

这些可作为当前流行语言强力替代的语言正在蒸蒸日上,或许你的下个项目正好能用到它。有时候大量的烂大街的主流开发语言也没办法满足你对特定问题的开发需求。有时候你不得不展望未来以期待能出现一门语言:有着良好

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

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

这个世界有太多灵巧的语言,例如 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 吧。

  • 本文来自:Linux学习网

推荐阅读
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 解决PR倒放后视频卡顿的方法及操作步骤
    本文介绍了解决PR倒放后视频卡顿问题的方法,通过标记入点和出点,并进行渲染,可以有效解决视频卡顿的情况。详细的操作步骤包括:继续播放视频,标记入点和出点,选择渲染效果,等待渲染完成,清除标记等。通过理论与实践的结合,可以更好地帮助大家解决PR倒放后视频卡顿的问题。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
  • 测绘程序设计Excel度分秒转换模板附代码超实用版
    本文介绍了测绘程序设计Excel度分秒转换模板附代码超实用版的相关知识,包括准备工作、编写表达式和注意事项。在实际工作中,将GPS实测的经纬度度转换为度分秒是常见需求,本文提供了在Excel中快速进行转换的方法,以提高工作效率。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
author-avatar
罗伯特1980_823
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有