1. Java

编译语言,速度适中(2.67s),目前的大型网站都是拿java写的,比如淘宝、京东等。主要特点是稳定,开源性好,具有自己的一套编写规范,开发效率适中,目前最主流的语言。

作为编程语言中的大腕。具有最大的知名度和用户群。无论风起云涌,我自巍然不动。他强任他强,清风拂山岗;他横由他横,明月照大江(牛逼!)。

2. c#

执行速度快(4.28),学习难度适中,开发速度适中。但是由于c#存在很多缺点,京东、携程等大型网站前身都是用c#开发的,但是现在都迁移到了java上。

3. C/C++

现存编程语言中的老祖,其他语言皆由此而生。执行速度最快无人能及。但是写起来最为复杂,开发难度大。

4. Javascript

编程语言中特立独行的傲娇美女。前端处理能力是其它语言无法比拟。发展中的js后端处理能力也是卓越不凡。前后端通吃,舍我其谁?

5. Python

脚本语言,速度最慢(258s),代码简洁、学习进度短,开发速度快。豆瓣就是拿python写的。Python著名的服务器框架有django,flask。但是python在大型项目上不太稳定,因此有些用python的企业后来迁移到了java上。

6. scala

编译语言,比python快十倍,和java差不多,但是学习进度慢,而且在实际编程中,如果对语言不够精通,很容易造成性能严重下降。,后来比如Yammer就从scala迁移到了java上。微服务框架有lagom等。

7. Go

编程界的小鲜肉。高并发能力无人能及。即具有像Python一样的简洁代码、开发速度,又具有C语言一样的执行效率,优势突出。

总结

  因为Go的语法和Erlang、Python类似,所以我们将这三门语言做个详细的对比。

  相比于Python的40个特性,Go只有31个,可以说Go在语言设计上是相当克制的。比如,它没有隐式的数值转换,没有构造函数和析构函数,没有运算符重载,没有默认参数,也没有继承,没有泛型,没有异常,没有宏,没有函数修饰,更没有线程局部存储。

  但是Go的特点也很鲜明,比如,它拥有协程、自动垃圾回收、包管理系统、一等公民的函数、栈空间管理等。

  Go作为静态类型语言,保证了Go在运行效率、内存用量、类型安全都要强于Python和Erlang。

  Go的数据类型也更加丰富,除了支持表、字典等复杂的数据结构,还支持指针和接口类型,这是Python和Erlang所没有的。特别是接口类型特别强大,它提供了管理类型系统的手段。而指针类型提供了管理内存的手段,这让Go进入底层软件开发提供了强有力的支持。

  Go在面对对象的特性支持上做了很多反思和取舍,它没有类、虚函数、继承、泛型等特性。Go语言中面向对象编程的核心是组合和方法(function)。组合很类似于C语言的struct结构体的组合方式,方法类似于Java的接口(Interface),但是使用方法上与对象更加解耦,减少了对对象内部的侵入。Erlang则不支持面对对象编程范式,相比而言,Python对面对对象范式的支持最为全面。

  在函数式编程的特性支持上,Erlang作为函数式语言,支持最为全面。但是基本的函数式语言特性,如lambda、高阶函数、curry等,三种语言都支持。

  控制流的特性支持上,三种语言都差不多。Erlang支持尾递归优化,这给它在函数式编程上带来便利。而Go在通过动态扩展协程栈的方式来支持深度递归调用。Python则在深度递归调用上经常被爆栈。

  Go和Erlang的并发模型都来源于CSP,但是Erlang是基于actor和消息传递(mailbox)的并发实现,Go是基于goroutine和管道(channel)的并发实现。不管Erlang的actor还是Go的goroutine,都满足协程的特点:由编程语言实现和调度,切换在用户态完成,创建销毁开销很小。至于Python,其多线程的切换和调度是基于操作系统实现,而且因为GIL的大坑级存在,无法真正做到并行。

1.7 Go语言和其它编程语言的对比相关推荐

  1. golang对比java的优势_golang语言和其它编程语言的对比

    在软件行业做过一段时间的人都知道,没有万能的编程语言,也没有万能开发框架,更没有万能的解决方案.任何新技术的产生都应该归功于一部分人对老旧技术的强烈不满.Go语言也不例外.比如,C语言的依赖管理.C+ ...

  2. 用 C 语言开发一门编程语言 — 字符串与文件加载

    目录 文章目录 目录 前文列表 字符串 读取字符串 注释 文件加载函数 命令行参数 打印函数 报错函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C ...

  3. 用 C 语言开发一门编程语言 — 条件分支

    目录 文章目录 目录 前文列表 条件分支 排序函数 等于函数 if 函数 递归函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C 语言开发一门编程语 ...

  4. 用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计

    目录 文章目录 目录 前文列表 函数 Lambda 表达式 函数设计 函数的存储 实现 Lambda 函数 函数的运行环境 函数调用 可变长的函数参数 源代码 前文列表 <用 C 语言开发一门编 ...

  5. 用 C 语言开发一门编程语言 — 变量元素设计

    目录 文章目录 目录 前文列表 变量 变量语法规则 变量的读取和存储 将变量加入 Lisp Value 体系 变量的计算 变量的定义与赋值 异常处理优化 源代码 前文列表 <用 C 语言开发一门 ...

  6. 用 C 语言开发一门编程语言 — Q-表达式

    目录 文章目录 目录 前文列表 Q-表达式 读取并存储输入 实现 Q-Expression 语法解析器 读取 Q-Expression 实现 Q-Expression 的函数 Head & T ...

  7. 用 C 语言开发一门编程语言 — S-表达式

    目录 文章目录 目录 前文列表 使用 S-表达式进行重构 读取并存储输入 实现 S-Expression 语法解析器 实现 S-Expression 存储器 实现 lval 变量的构造函数 实现 lv ...

  8. 用 C 语言开发一门编程语言 — 异常处理

    目录 文章目录 目录 前文列表 异常捕获 定义 Lisp Value 函数 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器l> <用 C 语言开发一门编程语言 - 跨平台 ...

  9. 用 C 语言开发一门编程语言 — 抽象语法树

    目录 文章目录 目录 前文列表 抽象语法树的结构 使用递归来遍历树结构 实现求值计算 抽象语法树与行为树 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器l> <用 C 语 ...

  10. 用 C 语言开发一门编程语言 — 语法解析器

    目录 文章目录 目录 前文列表 编程语言的本质 词法分析 语法分析 使用 MPC 解析器组合库 安装 快速入门 实现波兰表达式的语法解析 波兰表达式 正则表达式 代码实现 前文列表 <用 C 语 ...

最新文章

  1. 用jQuery写的一个翻页,并封装为插件,
  2. 微软翻译突破百种语言和方言大关
  3. axios请求拦截 做Loading加载
  4. python 面向对象 新式类和经典类
  5. C语言(第二章):数据类型、运算符、表达式
  6. MacOS Big Sur 11.5 (20G71) OC 0.7.1 / Cl 5138 / PE 三分区原版黑苹果镜像
  7. 改写TCPMP的界面
  8. 美团秋招高频面试问题汇总!(内附答案!)
  9. SPSS实战:单因素方差分析(ANOVA)
  10. 在excel中创建日历
  11. 【大学物理·早期量子论和量子力学基础】一维定态薛定谔方程的应用
  12. R包survival,survminer生存分析代码
  13. Python:RSA秘钥生成与加密解密整理
  14. GUTI,Globally Unique Temporary UE Identity,全球唯一临时UE标识。
  15. 浙江大学许威威教授招聘博士后
  16. 常见的行业认证和资质清单介绍
  17. Altium Designer 17及以上版本快速画出Keep-Out layer层以便于覆铜操作
  18. QByteArray详解(qt)
  19. 计算机中文件夹怎么上密码,怎样设置电脑文件夹密码
  20. 数据结构思维导图——Java版

热门文章

  1. windows中的ntsd工具使用
  2. SEO实战密码(第3版) 60天网站流量提高20倍-3
  3. 游戏编辑器研发第一天,对比思考确定底层技术和从0开发场景编辑器原因
  4. java numberformat_NumberFormat(数字格式化类)
  5. CST学习笔记------材料边界
  6. 解析OA系统易用性的价值和意义
  7. 哈工大中文分词系统ltp4j使用总结
  8. 通过QQ查看对方的ip地址
  9. win10打开计算机黑屏怎么办,win10系统开机就一直黑屏无法进入桌面的解决方法...
  10. Python通过SSH下载远程服务器文件