开启go 05.Go语言和其他语言的对比

2019-12-07| 发布者: admin| 查看: |

Go 作为一门言语致力于使工作简略化。它并未引进许多新概念,而是聚集于打造一门简略的言语,它运用起来反常快速并且简略。其仅有的立异之处是 goroutines 和通道。Goroutines 是 Go 面向线程的轻量级办法,而通道是 goroutines 之间通讯的优先办法。

敞开go 05.Go言语和其他言语的比照

8、安稳性

​ Go具有强壮的编译查看、严厉的编码标准和完好的软件生命周期东西,具有很强的安稳性,安稳名列前茅。那么为什么Go比较于其他程序会更安稳呢?这是由于Go供给了软件生命周期的各个环节的东西,如go tool、gofmt、go test。

Go的许多言语特性学习与它的三个先人:C,Pascal和CSP。Go的语法、数据类型、操控流等承继于C,Go的包、面临目标等思维来源于Pascal分支,而Go最大的言语特征,根据管道通讯的协程并发模型,则学习于CSP分支。

go1

编译言语,速度适中,现在的大型网站都是拿java写的,比方淘宝、京东等。首要特色是安稳,开源性好,具有自己的一套编写标准,开发功率适中,现在最干流的言语。

作为编程言语中的大腕。具有最大的知名度和用户群。不论如火如荼,我自巍峨不动。他强任他强,清风拂山岗;他横由他横,明月照大江。

履行速度快,学习难度适中,开发速度适中。可是由于c#存在许多缺陷,京东、携程等大型网站前身都是用c#开发的,可是现在都搬迁到了java上。

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

编程言语中特立独行的傲娇美人。前端处理才能是其它言语无法比拟。发展中的js后端处理才能也是杰出非凡。前后端通吃,舍我其谁?

脚本言语,速度最慢,代码简练、学习进展短,开发速度快。豆瓣便是拿python写的。Python闻名的服务器结构有django,flask。可是python在大型项目上不太安稳,因而有些用python的企业后来搬迁到了java上。

编译言语,比python快十倍,和java差不多,可是学习进展慢,并且在实践编程中,假如对言语不行通晓,很简单形成功能严峻下降。,后来比方Yammer就从scala搬迁到了java上。微服务结构有lagom等。

编程界的小鲜肉。高并发才能无人能及。即具有像Python相同的简练代码、开发速度,又具有C言语相同的履行功率,优势杰出。

由于Go的语法和Erlang、Python相似,所以咱们将这三门言语做个具体的比照。

比较于Python的40个特性,Go只要31个,可以说Go在言语规划上是适当抑制的。比方,它没有隐式的数值转化,没有结构函数和析构函数,没有运算符重载,没有默许参数,也没有承继,没有泛型,没有反常,没有宏,没有函数润饰,更没有线程部分存储。

可是Go的特色也很明显,比方,它具有协程、主动废物收回、包办理体系、一等公民的函数、栈空间办理等。

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

Go的数据类型也愈加丰厚,除了支撑表、字典等杂乱的数据结构,还支撑指针和接口类型,这是Python和Erlang所没有的。特别是接口类型特别强壮,它供给了办理类型体系的手法。而指针类型供给了办理内存的手法,这让Go进入底层软件开发供给了强有力的支撑。

Go在面临目标的特性支撑上做了许多反思和取舍,它没有类、虚函数、承继、泛型等特性。Go言语中面向目标编程的中心是组合和办法。组合很相似于C言语的struct结构体的组合办法,办法相似于Java的接口,可是运用办法上与目标愈加解耦,减少了对目标内部的侵入。Erlang则不支撑面临目标编程范式,比较而言,Python对面临目标范式的支撑最为全面。

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

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

Go和Erlang的并发模型都来源于CSP,可是Erlang是根据actor和音讯传递的并发完结,Go是根据goroutine和管道的并发完结。不论Erlang的actor仍是Go的goroutine,都满足协程的特色:由编程言语完结和调度,切换在用户态完结,创立毁掉开支很小。至于Python,其多线程的切换和调度是根据操作体系完结,并且由于GIL的大坑级存在,无法真实做到并行。

并且从笔者的并发编程体会上看,Erlang的函数式编程语法风格和其OTP behavior结构供给的不流畅的回调运用办法,对大部分的程序员,如C/C++和Java身世的程序员来说,有必定的入门门槛和应战。而被称为“互联网年代的C”的Go,其类C的语法和操控流,以及面临目标的编程范式,编程体会则好许多。