golang底層是什么語言 為什么大部分高校還在只教C/C /Java,而不教更加強(qiáng)大的Rust/Go/Scala?
為什么大部分高校還在只教C/C /Java,而不教更加強(qiáng)大的Rust/Go/Scala?客觀環(huán)境:C、C、Java的開發(fā)比較成熟,學(xué)習(xí)者多,生態(tài)比較好。[翻白眼]企業(yè)的需求比較大,保證了就業(yè)的基本面
為什么大部分高校還在只教C/C /Java,而不教更加強(qiáng)大的Rust/Go/Scala?
客觀環(huán)境:C、C、Java的開發(fā)比較成熟,學(xué)習(xí)者多,生態(tài)比較好。[翻白眼]企業(yè)的需求比較大,保證了就業(yè)的基本面,學(xué)生學(xué)習(xí)后不容易失業(yè)。[笑聲]新語言由學(xué)生自己教授,以確保有效的技術(shù)變革。
主觀環(huán)境:美味的老資本,易于混合的資金。[傻笑
]一句話:穩(wěn)定是絕對(duì)的原則,每天改變不是正確的方式。
注意:個(gè)人觀點(diǎn),請(qǐng)繞道而行。[白眼
你好,我是Advantech的技術(shù)總監(jiān)。我們剛剛經(jīng)歷了從Java到golang的演變過程。我想和大家分享一下我們的經(jīng)驗(yàn),希望能對(duì)您有所幫助。
為什么我們要將Java轉(zhuǎn)換為golang?
這與我們商業(yè)模式的轉(zhuǎn)變有很大關(guān)系。前面的模型是用戶購(gòu)買自己的VM,我們的Java應(yīng)用程序部署在上面。后來,我們開始構(gòu)建自己的云平臺(tái)。基于成本考慮,我們非常關(guān)注在云平臺(tái)上運(yùn)行的應(yīng)用程序的CPU和內(nèi)存開銷。仔細(xì)想想,如果一個(gè)Java應(yīng)用程序使用2G內(nèi)存和1核CPU,如果有10個(gè)用戶在我們的云平臺(tái)上部署應(yīng)用程序,需要20g內(nèi)存和10核CPU;但是如果應(yīng)用程序是用golang編寫的,可能只需要512M內(nèi)存和0.5核CPU,所以總體資源成本只有5core5g,大大節(jié)省了資源成本。(從公司的角度看,省的錢就是賺的錢)
因此,我們只關(guān)注高朗的性能優(yōu)勢(shì),節(jié)省內(nèi)存和CPU。我們并不否認(rèn)Java的卓越之處。我們?nèi)匀辉谝恍┙M件上使用Java。
事實(shí)上,十大編程語言中沒有g(shù)olang,Java仍然是排名第一的編程語言:
go在流行程度和使用量上都無法與Java相比:
因此,我的理解是,任何一種語言的選擇都應(yīng)該結(jié)合公司的經(jīng)營(yíng)戰(zhàn)略和經(jīng)營(yíng)目標(biāo)來考慮,而不是聽從別人的建議,選擇哪種語言比較流行。
希望對(duì)您有所幫助。
現(xiàn)在是不是越來越多的大公司在使用golang語言?為什么?
列表的基礎(chǔ)是什么?有幾種情況。一是采取問卷調(diào)查的形式。樣本量小。幾種通用語言,如C、C和Java,肯定會(huì)占據(jù)前三名。由于樣本量不夠,彼此的排名并不顯著。
還有一種基于githip代碼更新次數(shù)的統(tǒng)計(jì),比較科學(xué)。我們可以看到一些新興語言,如pathyo和JavaScript,已經(jīng)列出。但C,C還在。為什么?
這是因?yàn)樵S多超級(jí)項(xiàng)目都是由他們編寫的,例如windows和Linux操作系統(tǒng)。代碼量上億行,維護(hù)更新量也很大。可以說尾巴太大了。饑餓的駱駝比馬大。
為什么有人說c/c 近十年來一直在編程語言榜單前三,但有人覺得流行程度不如Java?
首先,Java、python、go、C等編程語言目前廣泛應(yīng)用于IT行業(yè)。除了go語言,其他語言中也有大量的成熟案例,因此這些編程語言是初學(xué)者的好選擇。
就語言本身的難度而言,python語言和go語言的語法結(jié)構(gòu)應(yīng)該更加簡(jiǎn)潔,Java和C語言應(yīng)該稍微復(fù)雜一些。當(dāng)然,這也直接關(guān)系到編程語言的設(shè)計(jì)思想。對(duì)于計(jì)算機(jī)基礎(chǔ)薄弱的人來說,從Python開始是一個(gè)不錯(cuò)的選擇。隨著大數(shù)據(jù)和人工智能的發(fā)展,Python在未來的應(yīng)用范圍將進(jìn)一步擴(kuò)大,特別是在工業(yè)互聯(lián)網(wǎng)階段。
其次,編程語言只是程序開發(fā)人員能否在程序開發(fā)的道路上走得更遠(yuǎn)的因素之一。更重要的因素是自身的研發(fā)能力。實(shí)際上,編程語言只是一種工具。過去常說程序員依賴各種搜索引擎;程序員依賴各種二級(jí)邏輯;程序員依賴各種搜索引擎。從這個(gè)角度來看,編程語言對(duì)程序員能力的影響是有限的。最后,編程的過程歸根到底是數(shù)學(xué),所以R&D級(jí)程序員往往需要有堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ),程序員成長(zhǎng)的最終高度往往是由諸如數(shù)學(xué)之類的基礎(chǔ)學(xué)科決定的。如果僅僅從編程語言的角度來看,目前Python和go的發(fā)展趨勢(shì)更加明顯。
c 、java、go、python哪個(gè)語言更容易精通?哪個(gè)可以走的路更遠(yuǎn)且不至于被輕易淘汰?
目前,可能性不大。至于未來是否可能,則要看谷歌能否繼續(xù)支持圍棋。目前,圍棋語言的開發(fā)人員說,它是簡(jiǎn)單,快速,安全,并發(fā),快樂編程和開源。然而,圍棋語言缺乏方向性和“集成商”的嘗試,很容易導(dǎo)致圍棋學(xué)不到貓和狗,圍棋語言將減少到四種。
Java似乎永遠(yuǎn)不會(huì)過時(shí)。盡管Java最初是在20世紀(jì)90年代為交互式電視設(shè)計(jì)的,但今天的Java為企業(yè)應(yīng)用程序、Android移動(dòng)應(yīng)用程序開發(fā)和所有其他功能提供了動(dòng)力。
Java本身的跨平臺(tái)、安全性、健壯性、簡(jiǎn)單性非常適合企業(yè)開發(fā)。此外,這些年來,各種組織貢獻(xiàn)了各種生態(tài)環(huán)境,比如各種開源框架,比如spring family bucket。Java在今天取得了巨大的成就,spring無疑做出了很大的貢獻(xiàn)。據(jù)不完全統(tǒng)計(jì),世界上運(yùn)行Java程序的設(shè)備有幾十億臺(tái)。
Java最大的問題是臃腫的框架。以前配置一個(gè)開發(fā)環(huán)境需要半天的時(shí)間?,F(xiàn)在springboot在一定程度上改善了這種情況。
總之,Java優(yōu)勢(shì)突出,生態(tài)完善,技術(shù)成熟。雖然go非常好,但要在短時(shí)間內(nèi)取代Java是不可能的。
Go會(huì)成為下一個(gè)企業(yè)級(jí)編程語言嗎?
我學(xué)過Java和golang。Java已經(jīng)使用了5年,我對(duì)Java的生態(tài)、工業(yè)語言和無數(shù)解決方案有著深刻的感受。無論您是從事互聯(lián)網(wǎng)還是傳統(tǒng)行業(yè)的開發(fā),java開發(fā)總能解決很多問題。國(guó)內(nèi)巨頭阿里巴巴將java推向了極致。作為一種新的語音語言,golang的簡(jiǎn)單語法極低很難上手,他的生態(tài)也在逐步改善,比如docker etcd kubernetes Tidb、beego甚至阿里巴巴都在中國(guó)推出了Dubbo go。今天頭條、比力、滴滴等中國(guó)公司的技術(shù)堆棧已經(jīng)逐漸從Java變成了golang。不是Java不好,而是golang非常簡(jiǎn)單。如果您開發(fā)一個(gè)包含20行代碼的web應(yīng)用程序,Java可能需要您了解完整的技術(shù)棧,比如spring引導(dǎo)棧,而golang只需要您了解httprouter。RPC框架的支持并不比Java好多少。去cicd領(lǐng)域完全是玩Java。畢竟,docker和kubernetes是由golang編寫的,它們自然得到無縫支持。Golang的并發(fā)模型也領(lǐng)先于Java。Gorouting是為并發(fā)而生的,所以現(xiàn)在學(xué)習(xí)golang是一個(gè)很好的選擇,但是golang也有它自己的優(yōu)點(diǎn)它的缺點(diǎn)是項(xiàng)目管理和包依賴管理不如Java,通用支持也不是很好。與Java的生態(tài)相比,go的國(guó)內(nèi)生態(tài)還很欠缺。另外,爪哇的就業(yè)比哥朗簡(jiǎn)單,因?yàn)椴罹嗪艽?,但哥朗的就業(yè)工資并不低于爪哇。因此,從語言的角度來看,golang優(yōu)于Java,生態(tài)上低于Java,理論上也比Java有著光明的前景,這要看國(guó)內(nèi)的發(fā)展趨勢(shì),所以我建議大家學(xué)習(xí)
謝謝
!如果你是零基,將來想從事嵌入式系統(tǒng)軟件編程,可以學(xué)C,因?yàn)榍度胧杰浖目傮w結(jié)構(gòu)并不復(fù)雜(注意,不復(fù)雜并不意味著不難,復(fù)雜度和難度不一定聯(lián)系在一起),主要考慮的是軟件的實(shí)時(shí)性,而且硬件資源有限,使用C語言就足夠了,而且C語言的編譯器比C語言的編譯器要簡(jiǎn)單得多。如果你將來想從事非嵌入式系統(tǒng)軟件編程,最好學(xué)習(xí)C語言,C語言比C語言復(fù)雜得多,當(dāng)然它的功能也要強(qiáng)大得多。這是我自己的經(jīng)歷,希望能對(duì)你有所幫助。