阅读更多

0顶
0踩

编程语言
引用

译者注:从事主流开发语言的人员有很多,但是除了这些语言,我们也应该了解一些其他的,这样,我们才能根据场景的不同决定采用哪一种。本文中作者为我们列举了9种语言的应用场景。以下为译文。

目前比较流行的开发语言之所以能够被大多数开发人员使用,是因为它们各自有各自的优势。但是除了C#、Java或者JavaScript这些语言外,还有些其它的高级语言在某些时候也会提供很高的价值。下面的9种语言应该出现在每一位程序员的候选清单中。它们可能不是所有场景下的最佳选择,因为它们都是有专用于某一种情况下的。但它们都提供了值得研究和学习的有利方面。可能有一天,其中一种语言被证明是你的项目或老板所需要的。

Kotlin:重新设计过的Java语言

Java是一门伟大的语言,支持各种主流的平台。但是它现在有点过时了,而且痛点正在被放大。Kotlin的意思是快速的编译,它与Java并存,解决了Java开发者耗时长的问题。Kotlin的特性中需要重点关注的就是它对空值的处理,这个问题每个开发者都会遇到。Kotlin在这一方面取得了巨大的进步,它还可以和现有的Java代码一起使用,而且还可以将代码编译成JavaScript和本地代码。

Erlang:实时系统的函数式编程

Erlang的秘密武器就是功能范式。大多数代码都被迫在自己的小世界中运行,这样这些代码就不会对系统其他部分产生影响。这些函数在内部完成所有的工作,在类似于沙箱一样的的小“进程”中进行运行,并且只通过邮件消息相互通信。该模型还简化了运行时代码需要哪些代码确定可以同时运行的过程。这样做就使得并发性非常容易检测,所以运行时进程的开销也会非常小。

如果你正在构建一个实时系统,该系统没有空间给那些已经删掉的数据,比如移动电话交换机的计费系统,那么可以考虑一下Erlang。

Go:简单性和动态性

谷歌在调查开发语言的过程中,发现这些语言杂乱无章、复杂,而且往往很慢。2009年,谷歌发布了它的解决方案:一种看起来像C语言的静态类型的语言,但它的后台更智能,可以让程序员不必指定类型和处理malloc调用。谷歌使用了和Sun以及苹果公司完全不一样的策略,他们希望Go语言的代码能够“简单到可以一直保存在程序员的脑海中”。

如果你是一家想要吸引谷歌眼球的创业公司,你需要建立一些服务器端业务逻辑,那么Go就是一个很好的起点

OCaml:适用于复杂的数据层次

有些程序员不希望指定变量的类型,动态语言可以做到。其他人则喜欢定义变量是否整数、字符串或对象。对他们来说,许多编译语言提供了他们想要的所有支持。还有一些人梦想着精心设计的层次结构,甚至可以说是创造出“代数”的类型。他们设想了各种不同类型的列表和表,它们被组合在一起,以表达复杂的、多层次的数据。它们谈到了多态性、模式匹配原语和数据封装。这仅仅是一个复杂的、高度结构化的世界的开始,他们想要的是类型、元类型和元数据类型。

TypeScript:你会喜欢的JavaScript语言

TypeScript是目前比较受欢迎的开发语言,因为它要求所有的变量都必须定义一个类型,这种做法会让Java程序员感到更加的安全。TypeScript现在之所以这么受欢迎,最重要的原因就是因为Angular,而且TypeScript支持和遗留的JavaScript进行整合。还有一个原因是因为TypeScript是JavaScript的父集。强类型有很多优势,比如可以在早期捕获一些bug,而且可以提高编译的速度。对他们来说,这是OCaml,这是编程语言社区的一项严肃的努力,推广了上面提到的许多想法。有对象支持、自动内存管理和设备可移植性。甚至还有来自苹果应用商店的OCaml应用。

Rust:安全可使用的系统语言

Rust就像是翻新过的C语言版本,但是它有大量的多态类型。Rust发展很快,在Stack Overflow的语言流行排行榜上,以前大概50名左右,今年则跃升至18名。原因就是因为它解决了很多C语言拥有的问题。系统程序员不喜欢依赖垃圾回收机制,他们喜欢自己掌握内存的数量,Rust就会让你有这种感觉。

Scala:JVM上的函数式编程

如果你非常喜欢功能范式,又需要将项目变为面向对象层次结构,而且代码还得简单,你可能会有多个选择。但是如果你有Java的基础,Scala就可以帮助你了。Scala也是基于JVM运行的,与Java相比,它的代码显得更为整洁。Scala的类型机制是强静态的,编译器为了推断类型会做很多工作。在Scala中原始类型和对象类型之间没有区别,因为Scala希望所有的东西都可以从一个ur-object中调用。

Scala提供了函数式语言的许多特性,比如延迟评估、尾递归和不可变变量,但是为了在JVM上面运行,它已经做过修改了。基本的元类型或集合变量,如链表或哈希表,可以是可变的,也可以是不可变的。

如果你必须在数千个处理器集群中处理数据,而且还面临着遗留的Java代码问题,那么Scala是一个很好的解决方案。

Haskell:纯粹简单的函数式编程

20多年来,致力于函数式编程的学者们一直在积极地发展Haskell。它是理想的函数式编程一种更纯粹的表达方式,它有一套很健全的体制去处理输入/输出通道。此外,Haskell的社区也非常活跃。如果你认为你的数据结构会很复杂,而且有很多类型,Haskell将会帮助你的。

Julia:速度更快的Python语言

软件行业喜欢用Python开发的人非常多,然而,无论Python的优点有多明显,它一直都存在一个让人特别恼火的问题,就是速度问题。Julia的出现就是为了解决这个问题。它引入了Python开发者所崇尚的clean语法,使得代码可以在后台进行编译。它还提供了一个强大的类型推理引擎,可以让代码运行的更快。与Python相比,它的速度明显快很多。如果你的数据量比较大,但是喜欢Python的语法,那么Julia可以是你的下一个学习的语言。
  • 大小: 440.8 KB
0
0
评论 共 2 条 请登录后发表评论
2 楼 kylinshaw 2017-07-25 11:11
                
1 楼 somefuture 2017-07-22 13:50
   

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • C/C++语言的学习方向

    文章目录一、中国编程语言的排名情况二、企业对C/C++程序员的技能要求三、数据比石油更珍贵四、C/C++...一个农民种菜之前,会考虑菜的行情(包括销量和价钱),如果您打算学习C/C++语言,也应该先了解C/C++程序员的行

  • 从“非主流”到“潮流”,开源早已值得拥有

    从“非主流”到“潮流”,开源在IT界早已家喻户晓,甚至有人发出“互联网世界的一切源自开源”的感慨。 这句话是否言过其实笔者不敢断论,但至少确定这句话覆盖的并不全面。从笔者看来,开源不仅促进了互联网的发展...

  • Python 学习日记

    1.4 关于Python语言 Python作为解释型语言,运行速度偏慢,尤其是和编译型的C语言对比。但是Python拥有灵活的数据结构和丰富的扩展模块,因此编程过程更加方便快捷。 2.2 关键字 可以在help函数派生的环境下查询...

  • 【学习笔记】前端工程化-大公司里怎样开发和部署前端代码

    前端工程化 ... 大公司里怎样开发和部署前端代码? 主要有以下问题: ...开发时的和部署时类库的引用和存放是... 渲染网页用 Nginx 还是其他动态语言的 Web 服务器? 制作网页的流程,是先有设计师的稿,还是先看模...

  • JAVAWEB学习概要

    structured Query Language:结构化的查询语言,其实就是定义了操作所有关系型数据库的规则,每一种数据库操作的方式存在不一样的地方,成为“方言”。 ##3.SQL通用语法 1.SQL 语句可以单行或多行书写,以分号结尾...

  • 第1章 JVM语言家族概览 《Kotin 编程思想·实战》

    第1章 JVM语言家族概览 天地和而万物生,阴阳接而变化起。《荀子·礼记》 1.1 编程语言简述 1.1.1 编程语言是什么 所谓编程语言只是一个抽象的规范,而编译器是这个规范的实现,它是在这个规范的严格定义下被实现的....

  • 主流waf非主流waf_通过黑客眼中的WAF

    主流waf非主流waf Today we’re going to talk about one of the modern security mechanism for web applications, namely Web Application Firewall (WAF). We’ll discuss modern WAFs and what they are based ...

  • 测试开发笔记

    测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 3外部测试: 10 验收...

  • 聊聊移动端跨平台开发的几种流派

    最近出现的 React Native 再次让跨平台移动端开发这个话题火起来了,曾经大家以为在手机上可以像桌面那样通过 Web 技术来实现跨平台开发,却大多因为性能或功能问题而放弃,不得不针对不同平台开发多个版本。...

  • 值得学习的100个网站推广方法

    目前流行非流行的博客程序、论坛程序等开发者网站,流量大的吓人。有点能力的站长朋友何不学习一下呢。即使开发不了完整版,搞个二次开发,推出美化版、各类主题版,发布到各类源码站。  70 网站模板网站推广法。这...

  • 六、CISSP 官方学习指南(OSG)第 7 版术语对照表

    8.2.42 AppleTalk AppleTalk 协议是一套由苹果公司开发并使用于 Macintosh 系统网络上的协议,最早版本于 1984 年初发布。在 2009 年,Mac OS X 版本 V1O.6 发布后取消了苹果操作系统对AppleTalk 的支持。 8.2.43 ...

  • AI 图像识别项目从入门到上线

    本课程是一个完整的项目实战课程,从项目调研开始到项目最终上线,完整的复现了基于深度学习的实战项目的流程。 本课程系列文章具有很强的工程性质,同时内容追求循序渐进,建议从头开始学习。 第 01~02 课,将讲述...

  • 聊聊移动端跨平台开发的各种技术

    聊聊移动端跨平台开发的各种技术介绍最近出现的 React Native 再次让跨平台移动端开发这个话题火起来了,曾经大家以为在手机上可以像桌面那样通过 Web 技术来实现跨平台开发,却大多因为性能或功能问题而放弃,不得...

  • 腾讯面试官送给准程序员的9条建议!

    有没有开过自己的github项目,或者是给知名项目贡献过源码,其次才是你的编码风格如何,学习成绩啥的。 2.产品经理说的不一定都对。 exp:据我的老大(腾讯第一个前端T4)讲,鹅厂的产品好,不仅仅是因为产

  • 操作系统课程设计任务书

    《操作系统》 课程设计任务书     指导教师:刘  刚 设计者: 班级: 学号:           山东建筑工程学院计算机系软件教研室     操作系统课程设计题目     一.  混合索引模式下文件空间管理 设计要求: 编写一程序,模拟混合索引形式的文件系统。能接收建立、删除、读、写和查询属性的命令,并在模拟文件系统中进行操作。   例:   create a1.doc 8000    /

  • 操作系统课程设计完成了

    终于弄好了课程设计,不过不是自己做的 二:  进程调度模拟程序 设计要求: 编写一程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转。 虚拟程序的描述:    虚拟指令的格式:   操作命令  操作时间 其中,操作命令有以下几种: l        C : 表示在CPU上计算 l        I :表示输入 l        O:表示输出 l        W:表示等

  • 双绞线与RJ-45水晶头的接法

    今天也接了一回 橙白 橙 绿白 蓝 蓝白 绿 棕白 棕,按这个顺序排起来就行啦

  • 找到一个非常不错的文章保存软件

    在网上游荡经常碰到好的文章要保存起来,但是手动保存很不方便而且还不好管理,在网上找了找相关的软件,终于发现一个非常不错的东东--网文快捕 这是介绍: 网文快捕 (原名WebCatcher) 是一个保存/管理网页的工具,主要功能有:可以在IE里面保存网页,包括文字,图片,Flash动画等等。也可以保存选中的文字,图片和链接等等;在一个树形孔建里面管理保存下来的网页。可以通过拖放来分类您的网页;在一个

  • 写了针对学校论坛的刷钱工具

    我校的建院学子论坛是用的CPB论坛,在每次发贴有个境遇问题,来改变发贴人的钱或魅力,看着很有意思,经过几次发贴,突然发现回贴后出现的页面,通过按F5刷新同样可以经过改变境遇来增加钱数或魅力值,于是明白了白小痴怎么会有这么多钱,不过按F5也太慢了,当然也写一个测试程序了,程序其实很简单,就是一个通过socket向指点的HTTP主机发送数据包通过IRIS截获 所发送的数据包为 GET /bbs/pos

Global site tag (gtag.js) - Google Analytics