成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

90后“老頭兒”和00后Go小子的硬盤夜話

開發 后端
一群90后的老家伙們Java, Python, Ruby.....把00后的Go程序團團圍住,仔細地打量:“新來的,你有什么本事?”Go 有點害怕:“你們要干嘛, Ken Thompson, Rob Pike是我親爹 ,你們小心點兒!”

90后“老頭兒”和00后Go小子的硬盤夜話

1、初次見面

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

今天目錄里入駐了一個新家伙,Java一看文件名"hello.go"就知道這是一門新的語言,難道這們語言叫做Go嗎? 用一個動詞作為語言名稱,挺少見的啊!

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

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

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

Python悄悄地問Java :“這倆人是什么鬼?”

“孤陋寡聞了吧”  Java 其實也是剛剛上網搜過,現學現賣:“ Ken Thompson是Unix 和C的創始人,Rob Pike是 UTF-8的設計者! 這不是主要的,關鍵是Google在為這小子站臺背書。”

大家聽到這小子背景如此深厚,不由得怯了下來。

“按照慣例,新人都要來一個Hello World,交個投名狀吧!”

"又來了一個把類型放到變量名后邊的!"  Java一看到這種語法就氣不打一處來!

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

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

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

“不過這小子的變量都得指定類型,看起來也是個靜態類型的語言,是我輩中人。” Java感到了一絲安慰。

“誰是你輩中人? 你仔細再看看這個變量聲明,根本沒有指定類型,語句后邊連分號都沒有,和我們Python 才是一家人。” Python 開始和Go 套近乎。

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

2、盤問

由于來了一個靜態類型同盟軍,Java 對Go建立了一點好感,他問道:“小伙子,對于一門語言來說,肯定得有幾種最基本的數據結構,例如數組了,列表了,HashMap了,你應該內置的都有吧?”

“那是自然,現在不是C語言時代了,語言中都得內置常用的數據類型,沒有它們怎么混江湖啊!” Go馬上回復。

“流程控制語句估計差不多,我也不想看了, 你怎么實現用戶自定義的類啊?” Java自居為這個目錄的老大,代表大家繼續盤問。

Go說:“很簡單,我們從C老頭兒那里學了一個struct 過來”

一聽說偶像C老頭兒,Java的眼睛就亮了,這語法果然和C差不多。

“嗯? 這只是屬性數據啊, 沒有相關的方法嗎?” Python 不讓Java獨大,急忙追問。

“簡單,寫個方法就行了!”

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

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

“我這里很簡單,如果一個標識符(如方法,變量等)以大寫字母開頭,就意味著是公開的,別的包的代碼就可以訪問,否則就是私有的!”

大家紛紛驚嘆, 這...這也有點太天馬行空了吧! 

“你怎么處理繼承?”

“我這里其實并沒有繼承,我這里只有組合:”

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

“那你能實現多態嗎?”

“那還用說, 我實現的方式也很簡單,不用強制一個類去實現一個接口,只要你擁有和接口一樣的方法就可以當做那個接口來使用!”

“這不就是和我們的Duck Typing 一樣嘛!” Python和Ruby 異口同聲地說,“只要你看起來鴨子,走起路來搖搖晃晃像鴨子,那不管你是否實現了鴨子的接口,我們就會認為你是個鴨子!”

3、goroutine

Java不支持Duck Typing , 心里略微不爽,他撇撇嘴說: “這有什么啊,都是一些奇技淫巧。 我問你,你的多線程編程實現得怎么樣?這才是你能不能在服務器端,在高并發的苛刻環境中活下來的關鍵!”

Go說:“我沒有多線程!”

沒有線程? 大家都瞪大了眼睛,那你怎么支持并發啊?

“可是我有goroutine, 可以認為是一種輕量級的線程。”

“我說嘛,現代語言怎么可能不支持并發? 你這個goroutine有什么特點?” Java問道。

“goroutine和線程很像,就是一段可以運行的代碼,你在一個函數調用之前加上關鍵字go 就啟動了一個goroutine,簡單不?“

“說說你具體是怎么實現的?”

“當你創建一個goroutine,它會被加入到一個全局的運行隊列當中, 然后調度器會把他們分配給某個邏輯處理器,這個邏輯處理器會被綁定到唯一的操作系統線程,在上面真正地運行goroutine,如果一個邏輯處理器有多個goroutine要運行,那也要就形成隊列,讓邏輯處理器來調度執行。”

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

“要是某個goroutine需要讀寫文件,阻塞了怎么辦?” Java 很關心這個問題。

“簡單,就讓這個goroutine和邏輯處理器解脫關聯,直接和系統線程綁定,等到讀寫文件完成以后,在回到某個邏輯處理器的隊列去。”

“那你相當于自己實現了一個線程的調度器啊” Python 感嘆到。

“是啊,你們不是這么玩的嗎?” Go 反問道。

Java , Python,Ruby 自然不是這么玩的,根本沒有邏輯處理器這個東西,像Java,會把用戶空間的線程直接映射到系統的核心線程去執行。

“goroutine 雖說是輕量級的線程,他們之間怎么通信?” Java問道。

“我的創始人發明了一個叫做Channel的東西,你可以理解為一個通道,通過它各個goroutine就可以發送、接收數據了!”

goroutine其實就像在程序在用戶空間實現的線程, 非常地輕量級,所需的空間非常小,切換也發生在用戶空間,開銷極小。所以非常適合創建大量的goroutine去并發地執行請求。

4、EXE 文件

“咦,這小子生成了一個hello.exe來運行啊。”  Ruby觀察得挺仔細。

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

Java 有個好處是Hotspot的虛擬機,能把部分熱點代碼變成機器指令,在硬件CPU上執行,這已經讓Java吹噓很多天了,沒想到又來了一個直接生成exe執行的。 

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

這目錄里邊的大部分語言都是由虛擬機自動管理內存, 聽到Java這么問,心里又來了一些優越感。

“當然有了!你只管創建對象,分配內存,垃圾回收Go會自己做的,我親爹說過,一定要把C語言不好用的地方改進了!”

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

“你們看,這個exe文件好大啊。” 有人叫道。

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

“我們Go語言默認是靜態鏈接的,那個exe會把運行時所需要的所有東西都加進去,這樣你就可以把exe復制到任何地方去運行了,多方便! 再說了我們那個exe文件還包含著垃圾回收不是?”

Java說:“啊,我明白了,其實你的每個exe文件當中已經包含了一個類似于虛擬機的runtime對不對? 要不然你怎么去自動地回收垃圾,進行goroutine的調度啊。”

大家伙的優越感又恢復了一點點,至少不會望人項背了。 

夜已深,Java做了個***的總結:“新來的Go小子代碼寫起來有點Python的感覺,簡潔干練,但骨子中去卻流淌著靜態類型的血液。他的封裝、繼承、多態還有goroutine都顯得如此與眾不同,但是總能在某個語言中找到一點影子,雖然能編譯成EXE,性能不錯,但實際上也有runtime ??磥硎俏樟瞬簧僬Z言的特點啊。”

 

大伙紛紛表示贊同,然后就鳥獸散了。 

責任編輯:龐桂玉 來源: 碼農翻身
相關推薦

2017-11-28 16:31:32

硬盤PythonJava

2017-09-27 15:13:22

Hello.javahello.c硬盤

2017-11-07 16:39:32

數據庫事務內存

2019-05-08 14:46:15

QQ90后00后

2021-12-24 10:40:15

數字化

2019-12-30 12:15:53

戴爾

2017-07-19 09:54:31

數據CIO

2015-07-23 15:25:26

90后態度

2018-09-04 09:42:01

編程語言Python數據分析

2018-09-18 15:58:46

硬盤JVMPython

2013-05-31 13:40:45

程序員年齡

2018-12-29 14:12:33

FTPRMIXML-RPC

2018-11-12 12:50:30

C語言編程匯編

2019-10-24 08:56:38

語言代碼Java

2014-06-11 09:04:32

游戲化管理

2017-08-04 15:00:59

2019-08-22 10:07:33

程序員開發危機

2010-07-16 16:06:11

求職

2015-02-10 13:09:05

00后移動互聯網

2015-02-09 13:23:17

創業
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天草视频| 9191av | 精品成人在线视频 | av电影手机版 | 天堂网色 | 成人免费在线播放视频 | 午夜一区| 久久久久国产一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久久久久www | 中文字幕在线视频观看 | 精品欧美一区免费观看α√ | 黑人精品欧美一区二区蜜桃 | 精品欧美一区二区在线观看视频 | 国产在线一区二区三区 | 干干干操操操 | 四虎永久影院 | 国产精品久久久久久久久久久久久 | 99久久婷婷国产综合精品 | 色资源站 | 久久久久国产一区二区三区四区 | av国产精品毛片一区二区小说 | 久久精品成人 | 亚洲日日 | 在线观看日韩精品视频 | 中文久久| 黄色高清视频 | 国产一区二区久久久 | 日韩欧美视频网站 | 日韩精品一区二区三区在线观看 | 成人av网站在线观看 | 久久久久一区二区三区 | 日韩一区二区免费视频 | 成人毛片视频免费 | 国产视频1 | 精品网站999www | 欧美精品一区二区免费 | 8x国产精品视频一区二区 | 免费h在线 | 精品美女久久久久久免费 | 国产精品亚洲精品日韩已方 |