欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
90后“老頭兒”和00后Go小子的硬盤(pán)夜話(huà)
1
初次見(jiàn)面

雖然這個(gè)目錄中各種編程語(yǔ)言寫(xiě)的程序層出不窮,但Java還是懷念不幸罹難的C老頭兒。他經(jīng)常給同一目錄中的Python ,Ruby說(shuō)C老頭兒知識多么淵博,貼近硬件運行,速度飛快,能從他身上學(xué)到很多東西等等。


(老劉注:參加《C老頭兒和Java小子的硬盤(pán)夜話(huà)》)


今天目錄里入駐了一個(gè)新家伙,Java一看文件名'hello.go'就知道這是一門(mén)新的語(yǔ)言,難道這們語(yǔ)言叫做Go嗎? 用一個(gè)動(dòng)詞作為語(yǔ)言名稱(chēng),挺少見(jiàn)的??!


Java趕緊上網(wǎng)搜索,我賽,這個(gè)小伙子是2009年出生的,都快10后了,太年輕了。我們這些90后真的成為老家伙了!


一群90后的老家伙們Java, Python, Ruby.....把00后的Go程序團團圍住,仔細地打量:“新來(lái)的,你有什么本事?”


Go 有點(diǎn)害怕:“你們要干嘛, Ken Thompson, Rob Pike是我親爹 ,你們小心點(diǎn)兒!”


Python悄悄地問(wèn)Java :“這倆人是什么鬼?”


“孤陋寡聞了吧”  Java 其實(shí)也是剛剛上網(wǎng)搜過(guò),現學(xué)現賣(mài):“ Ken Thompson是Unix 和C的創(chuàng )始人,Rob Pike是 UTF-8的設計者! 這不是主要的,關(guān)鍵是Google在為這小子站臺背書(shū)?!?/p>


大家聽(tīng)到這小子背景如此深厚,不由得怯了下來(lái)。


“按照慣例,新人都要來(lái)一個(gè)Hello World,交個(gè)投名狀吧!”



'又來(lái)了一個(gè)把類(lèi)型放到變量名后邊的!'  Java一看到這種語(yǔ)法就氣不打一處來(lái)!


“Java先生,您JVM平臺上的Scala和Kotlin不都是如此嗎?” 00后Go小伙兒所知甚多,以己之道還治彼身。


“那倆小子敢到這兒來(lái),我一定把他們痛打一頓,你們的這種語(yǔ)法,總是讓老夫感到真氣逆行!” Java竟然自稱(chēng)老夫,真是老了。


“好了,消消氣吧,年齡大了,真氣逆行,走火入魔了可不好??!” Python 安慰到。


“不過(guò)這小子的變量都得指定類(lèi)型,看起來(lái)也是個(gè)靜態(tài)類(lèi)型的語(yǔ)言,是我輩中人?!?Java感到了一絲安慰。


“誰(shuí)是你輩中人? 你仔細再看看這個(gè)變量聲明,根本沒(méi)有指定類(lèi)型,語(yǔ)句后邊連分號都沒(méi)有,和我們Python 才是一家人?!?Python 開(kāi)始和Go 套近乎。



Java “老頭兒”不屑地說(shuō):“這點(diǎn)兒小把戲你都不懂? 這是自動(dòng)類(lèi)型推斷,我們家Kotlin早就玩爛了! 就說(shuō)那個(gè)name吧,已經(jīng)被聲明為字符串類(lèi)型了,不能再改動(dòng)了,你把它賦值為一個(gè)整數試試? 我打賭編譯器一定報錯!”


2
盤(pán)問(wèn)

由于來(lái)了一個(gè)靜態(tài)類(lèi)型同盟軍,Java 對Go建立了一點(diǎn)好感,他問(wèn)道:“小伙子,對于一門(mén)語(yǔ)言來(lái)說(shuō),肯定得有幾種最基本的數據結構,例如數組了,列表了,HashMap了,你應該內置的都有吧?”


“那是自然,現在不是C語(yǔ)言時(shí)代了,語(yǔ)言中都得內置常用的數據類(lèi)型,沒(méi)有它們怎么混江湖??!” Go馬上回復。


“流程控制語(yǔ)句估計差不多,我也不想看了, 你怎么實(shí)現用戶(hù)自定義的類(lèi)???” Java自居為這個(gè)目錄的老大,代表大家繼續盤(pán)問(wèn)。


Go說(shuō):“很簡(jiǎn)單,我們從C老頭兒那里學(xué)了一個(gè)struct 過(guò)來(lái)”



一聽(tīng)說(shuō)偶像C老頭兒,Java的眼睛就亮了,這語(yǔ)法果然和C差不多。


“嗯? 這只是屬性數據啊, 沒(méi)有相關(guān)的方法嗎?” Python 不讓Java獨大,急忙追問(wèn)。


“簡(jiǎn)單,寫(xiě)個(gè)方法就行了!”



“方法和屬性分開(kāi)了,不在一起,好古怪??!”  大家紛紛叫道。


“我們都有public, private 這樣的權限限定符,你那里怎么處理?” Ruby 問(wèn)道。


“我這里很簡(jiǎn)單,如果一個(gè)標識符(如方法,變量等)以大寫(xiě)字母開(kāi)頭,就意味著(zhù)是公開(kāi)的,別的包的代碼就可以訪(fǎng)問(wèn),否則就是私有的!”


大家紛紛驚嘆, 這...這也有點(diǎn)太天馬行空了吧! 


“你怎么處理繼承?”


“我這里其實(shí)并沒(méi)有繼承,我這里只有組合:”



又是一片驚嘆聲, 大家紛紛拿這種方法和自己的實(shí)現做比較,Java老頭兒想起了面向對象設計的一個(gè)重要原則:“優(yōu)先使用組合而不是繼承”, 心里覺(jué)得Go的這種思路還是挺不錯的。


“那你能實(shí)現多態(tài)嗎?”


“那還用說(shuō), 我實(shí)現的方式也很簡(jiǎn)單,不用強制一個(gè)類(lèi)去實(shí)現一個(gè)接口,只要你擁有和接口一樣的方法就可以當做那個(gè)接口來(lái)使用!”



“這不就是和我們的Duck Typing 一樣嘛!” Python和Ruby 異口同聲地說(shuō),“只要你看起來(lái)鴨子,走起路來(lái)?yè)u搖晃晃像鴨子,那不管你是否實(shí)現了鴨子的接口,我們就會(huì )認為你是個(gè)鴨子!”


3
goroutine

Java不支持Duck Typing , 心里略微不爽,他撇撇嘴說(shuō): “這有什么啊,都是一些奇技淫巧。 我問(wèn)你,你的多線(xiàn)程編程實(shí)現得怎么樣?這才是你能不能在服務(wù)器端,在高并發(fā)的苛刻環(huán)境中活下來(lái)的關(guān)鍵!”


Go說(shuō):“我沒(méi)有多線(xiàn)程!”


沒(méi)有線(xiàn)程? 大家都瞪大了眼睛,那你怎么支持并發(fā)???


“可是我有g(shù)oroutine, 可以認為是一種輕量級的線(xiàn)程?!?/p>


“我說(shuō)嘛,現代語(yǔ)言怎么可能不支持并發(fā)? 你這個(gè)goroutine有什么特點(diǎn)?” Java問(wèn)道。


“goroutine和線(xiàn)程很像,就是一段可以運行的代碼,你在一個(gè)函數調用之前加上關(guān)鍵字go 就啟動(dòng)了一個(gè)goroutine,簡(jiǎn)單不?“



“說(shuō)說(shuō)你具體是怎么實(shí)現的?”


“當你創(chuàng )建一個(gè)goroutine,它會(huì )被加入到一個(gè)全局的運行隊列當中, 然后調度器會(huì )把他們分配給某個(gè)邏輯處理器,這個(gè)邏輯處理器會(huì )被綁定到唯一的操作系統線(xiàn)程,在上面真正地運行g(shù)oroutine,如果一個(gè)邏輯處理器有多個(gè)goroutine要運行,那也要就形成隊列,讓邏輯處理器來(lái)調度執行?!?/p>


(邏輯處理器可以有多個(gè))


“要是某個(gè)goroutine需要讀寫(xiě)文件,阻塞了怎么辦?” Java 很關(guān)心這個(gè)問(wèn)題。


“簡(jiǎn)單,就讓這個(gè)goroutine和邏輯處理器解脫關(guān)聯(lián),直接和系統線(xiàn)程綁定,等到讀寫(xiě)文件完成以后,在回到某個(gè)邏輯處理器的隊列去?!?/p>



“那你相當于自己實(shí)現了一個(gè)線(xiàn)程的調度器啊” Python 感嘆到。


“是啊,你們不是這么玩的嗎?” Go 反問(wèn)道。


Java , Python,Ruby 自然不是這么玩的,根本沒(méi)有邏輯處理器這個(gè)東西,像Java,會(huì )把用戶(hù)空間的線(xiàn)程直接映射到系統的核心線(xiàn)程去執行。


“goroutine 雖說(shuō)是輕量級的線(xiàn)程,他們之間怎么通信?” Java問(wèn)道。


“我的創(chuàng )始人發(fā)明了一個(gè)叫做Channel的東西,你可以理解為一個(gè)通道,通過(guò)它各個(gè)goroutine就可以發(fā)送、接收數據了!”


goroutine其實(shí)就像在程序在用戶(hù)空間實(shí)現的線(xiàn)程, 非常地輕量級,所需的空間非常小,切換也發(fā)生在用戶(hù)空間,開(kāi)銷(xiāo)極小。所以非常適合創(chuàng )建大量的goroutine去并發(fā)地執行請求。


4
EXE 文件

“咦,這小子生成了一個(gè)hello.exe來(lái)運行啊?!?nbsp; Ruby觀(guān)察得挺仔細。


原來(lái)的C老頭兒也是編譯成exe執行的, Ruby的這個(gè)發(fā)現一下子激起了大家的妒忌,因為這里的90后們,無(wú)論是Java, Python, Ruby, PHP其實(shí)都有一個(gè)虛擬機幫他們執行程序, 他們都想體驗下當個(gè)exe,直接在硬件上執行那如飛的感覺(jué),奈何是沒(méi)有機會(huì )啊。


Java 有個(gè)好處是Hotspot的虛擬機,能把部分熱點(diǎn)代碼變成機器指令,在硬件CPU上執行,這已經(jīng)讓Java吹噓很多天了,沒(méi)想到又來(lái)了一個(gè)直接生成exe執行的。 


Java 想起之前C老頭兒說(shuō)的指針和內存管理的地獄,馬上拋出一個(gè)撒手锏:“你有自動(dòng)內存管理嗎?”


這目錄里邊的大部分語(yǔ)言都是由虛擬機自動(dòng)管理內存, 聽(tīng)到Java這么問(wèn),心里又來(lái)了一些優(yōu)越感。


“當然有了!你只管創(chuàng )建對象,分配內存,垃圾回收Go會(huì )自己做的,我親爹說(shuō)過(guò),一定要把C語(yǔ)言不好用的地方改進(jìn)了!”


這些把大家震住了,一個(gè)exe程序,又能自動(dòng)管理內存,以后我們還有活路嗎?


“你們看,這個(gè)exe文件好大啊?!?有人叫道。


果真如此,一個(gè)小小的hello.exe竟然有1M多,怎么回事?


“我們Go語(yǔ)言默認是靜態(tài)鏈接的,那個(gè)exe會(huì )把運行時(shí)所需要的所有東西都加進(jìn)去,這樣你就可以把exe復制到任何地方去運行了,多方便! 再說(shuō)了我們那個(gè)exe文件還包含著(zhù)垃圾回收不是?”


Java說(shuō):“啊,我明白了,其實(shí)你的每個(gè)exe文件當中已經(jīng)包含了一個(gè)類(lèi)似于虛擬機的runtime對不對? 要不然你怎么去自動(dòng)地回收垃圾,進(jìn)行g(shù)oroutine的調度啊?!?/p>


大家伙的優(yōu)越感又恢復了一點(diǎn)點(diǎn),至少不會(huì )望人項背了。 


夜已深,Java做了個(gè)最后的總結:“新來(lái)的Go小子代碼寫(xiě)起來(lái)有點(diǎn)Python的感覺(jué),簡(jiǎn)潔干練,但骨子中去卻流淌著(zhù)靜態(tài)類(lèi)型的血液。他的封裝、繼承、多態(tài)還有g(shù)oroutine都顯得如此與眾不同,但是總能在某個(gè)語(yǔ)言中找到一點(diǎn)影子,雖然能編譯成EXE,性能不錯,但實(shí)際上也有runtime ??磥?lái)是吸收了不少語(yǔ)言的特點(diǎn)啊?!?/p>


大伙紛紛表示贊同,然后就鳥(niǎo)獸散了。

(完)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Python并非為AI而生,Golang將統治人工智能的下一個(gè)十年?
IT技術(shù)棧:誰(shuí)替代誰(shuí)?爆肝整理,萬(wàn)字總結保姆級Java與Golang的PK
服務(wù)端 I/O 性能大比拼:Node、PHP、Java 和 Go
使用Go語(yǔ)言一段時(shí)間的感受
下個(gè)10年,Go能取代Python成為開(kāi)發(fā)者的首選語(yǔ)言嗎?
Groovy JSR 04 發(fā)布,=JAVA+Ruby+Python?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久