1.7 Go语言和其它编程语言的对比
1. Java
編譯語(yǔ)言,速度適中(2.67s),目前的大型網(wǎng)站都是拿java寫的,比如淘寶、京東等。主要特點(diǎn)是穩(wěn)定,開源性好,具有自己的一套編寫規(guī)范,開發(fā)效率適中,目前最主流的語(yǔ)言。
作為編程語(yǔ)言中的大腕。具有最大的知名度和用戶群。無(wú)論風(fēng)起云涌,我自巍然不動(dòng)。他強(qiáng)任他強(qiáng),清風(fēng)拂山崗;他橫由他橫,明月照大江(牛逼!)。
2. c#
執(zhí)行速度快(4.28),學(xué)習(xí)難度適中,開發(fā)速度適中。但是由于c#存在很多缺點(diǎn),京東、攜程等大型網(wǎng)站前身都是用c#開發(fā)的,但是現(xiàn)在都遷移到了java上。
3. C/C++
現(xiàn)存編程語(yǔ)言中的老祖,其他語(yǔ)言皆由此而生。執(zhí)行速度最快無(wú)人能及。但是寫起來(lái)最為復(fù)雜,開發(fā)難度大。
4. Javascript
編程語(yǔ)言中特立獨(dú)行的傲嬌美女。前端處理能力是其它語(yǔ)言無(wú)法比擬。發(fā)展中的js后端處理能力也是卓越不凡。前后端通吃,舍我其誰(shuí)?
5. Python
腳本語(yǔ)言,速度最慢(258s),代碼簡(jiǎn)潔、學(xué)習(xí)進(jìn)度短,開發(fā)速度快。豆瓣就是拿python寫的。Python著名的服務(wù)器框架有django,flask。但是python在大型項(xiàng)目上不太穩(wěn)定,因此有些用python的企業(yè)后來(lái)遷移到了java上。
6. scala
編譯語(yǔ)言,比python快十倍,和java差不多,但是學(xué)習(xí)進(jìn)度慢,而且在實(shí)際編程中,如果對(duì)語(yǔ)言不夠精通,很容易造成性能嚴(yán)重下降。,后來(lái)比如Yammer就從scala遷移到了java上。微服務(wù)框架有l(wèi)agom等。
7. Go
編程界的小鮮肉。高并發(fā)能力無(wú)人能及。即具有像Python一樣的簡(jiǎn)潔代碼、開發(fā)速度,又具有C語(yǔ)言一樣的執(zhí)行效率,優(yōu)勢(shì)突出。
總結(jié)
??因?yàn)镚o的語(yǔ)法和Erlang、Python類似,所以我們將這三門語(yǔ)言做個(gè)詳細(xì)的對(duì)比。
??相比于Python的40個(gè)特性,Go只有31個(gè),可以說(shuō)Go在語(yǔ)言設(shè)計(jì)上是相當(dāng)克制的。比如,它沒(méi)有隱式的數(shù)值轉(zhuǎn)換,沒(méi)有構(gòu)造函數(shù)和析構(gòu)函數(shù),沒(méi)有運(yùn)算符重載,沒(méi)有默認(rèn)參數(shù),也沒(méi)有繼承,沒(méi)有泛型,沒(méi)有異常,沒(méi)有宏,沒(méi)有函數(shù)修飾,更沒(méi)有線程局部存儲(chǔ)。
??但是Go的特點(diǎn)也很鮮明,比如,它擁有協(xié)程、自動(dòng)垃圾回收、包管理系統(tǒng)、一等公民的函數(shù)、??臻g管理等。
??Go作為靜態(tài)類型語(yǔ)言,保證了Go在運(yùn)行效率、內(nèi)存用量、類型安全都要強(qiáng)于Python和Erlang。
??Go的數(shù)據(jù)類型也更加豐富,除了支持表、字典等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),還支持指針和接口類型,這是Python和Erlang所沒(méi)有的。特別是接口類型特別強(qiáng)大,它提供了管理類型系統(tǒng)的手段。而指針類型提供了管理內(nèi)存的手段,這讓Go進(jìn)入底層軟件開發(fā)提供了強(qiáng)有力的支持。
??Go在面對(duì)對(duì)象的特性支持上做了很多反思和取舍,它沒(méi)有類、虛函數(shù)、繼承、泛型等特性。Go語(yǔ)言中面向?qū)ο缶幊痰暮诵氖墙M合和方法(function)。組合很類似于C語(yǔ)言的struct結(jié)構(gòu)體的組合方式,方法類似于Java的接口(Interface),但是使用方法上與對(duì)象更加解耦,減少了對(duì)對(duì)象內(nèi)部的侵入。Erlang則不支持面對(duì)對(duì)象編程范式,相比而言,Python對(duì)面對(duì)對(duì)象范式的支持最為全面。
??在函數(shù)式編程的特性支持上,Erlang作為函數(shù)式語(yǔ)言,支持最為全面。但是基本的函數(shù)式語(yǔ)言特性,如lambda、高階函數(shù)、curry等,三種語(yǔ)言都支持。
??控制流的特性支持上,三種語(yǔ)言都差不多。Erlang支持尾遞歸優(yōu)化,這給它在函數(shù)式編程上帶來(lái)便利。而Go在通過(guò)動(dòng)態(tài)擴(kuò)展協(xié)程棧的方式來(lái)支持深度遞歸調(diào)用。Python則在深度遞歸調(diào)用上經(jīng)常被爆棧。
??Go和Erlang的并發(fā)模型都來(lái)源于CSP,但是Erlang是基于actor和消息傳遞(mailbox)的并發(fā)實(shí)現(xiàn),Go是基于goroutine和管道(channel)的并發(fā)實(shí)現(xiàn)。不管Erlang的actor還是Go的goroutine,都滿足協(xié)程的特點(diǎn):由編程語(yǔ)言實(shí)現(xiàn)和調(diào)度,切換在用戶態(tài)完成,創(chuàng)建銷毀開銷很小。至于Python,其多線程的切換和調(diào)度是基于操作系統(tǒng)實(shí)現(xiàn),而且因?yàn)镚IL的大坑級(jí)存在,無(wú)法真正做到并行。
總結(jié)
以上是生活随笔為你收集整理的1.7 Go语言和其它编程语言的对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言多个形参,C中子函数最多有几个形参
- 下一篇: 谷歌翻译失败解决方案