回覆列表
  • 1 # Iloveprogramming

    C/C++是系統級語言,Go是應用級語言,正常情況下,是轉不過去的,除非之前就是在用C/C++寫應用,那不是自找沒趣麼,轉Go當然會爽,Go太簡單了。但如果之前是在用C/C++寫作業系統底層,或者做嵌入式開發,想換一種21世紀的新語言,只能換成Rust,而Go是不行的,因為Go有執行時,有GC。所以如果是從C/C++轉Go,從此不再碰C/C++,那就是自廢武功了。至於Java轉Go,我一直認為Java語言本身非常優雅,而Go非常粗陋,轉過去不爽很正常。另外再談談我對Go的看法,它雖然也算是21世紀誕生的語言,而且出身名門,但是它本身毛病也特別多,發明它的那幾個大神絕對是老頑固不聽勸,社群那麼多呼聲完全聽不見,他們的原則就是夠用就好!他們痛恨各類新特性和語法糖。所以說Go語言是21世紀最簡陋的計算機語言一點不為過,另外再附帶了一個史上最爛的包管理,沒有之一,原因也很正常,人家被髮明出來,主要是Google內部自用的,順帶便放出來讓大家一起找找Bug。千萬別去和pip比,和npm比,和cargo比,會被活活氣死。所以,如果你是老闆,未來想做一些平臺,Go語言是首選,因為Go非常容易學,所以程式設計師好招。如果你是程式設計師,想透過換個語言提升一下自己,對不起,Go不適合,它太舒適了,要提升自己一定要挑戰自己的非舒適區,譬如Rust,那貨非常不舒適,以學習曲線陡峭著稱

  • 2 # 緊緊跟著哥

    go的層次介與c和java之間甚至更接近c。優點很多,博採眾長,規避了c的許多不足,還實現了跨平臺。以下主要說說不足:

    1、大工程編譯產物巨大,300m的exe檔案,有點嚇人。

    2、沒有象樣的框架、象樣的類庫也少,達到go官方的程式碼質量的,太少太少。

    3、ide沒有太好的。官方就搞好了命令列,別的都不管了

  • 3 # Go語言中文網

    Go 和 Java 都是 C 系語言,語法方面,存在很多相似的地方。Go 語言從 C 語言繼承了很多,同時也拋棄了不少,改進了不少。

    Go 從 C 繼承了哪些重要特性,同時改進了哪些?Go 跟 C 語言一樣,語法足夠簡單。一些基礎的語法,跟其他 C 系語言類似,從 C 繼承了下來。和其他很多 C 系語言不一樣的地方是,Go 繼承了 struct,而且,不像 C++/Java,還額外提供 class。所以 C 語言的人,寫 Go 會有很親切感。更重要的是,Go 對於 C 語言做了很多改進,而且這些改進很多由於歷史原因導致的,作為一門全新的語言,沒有歷史包袱,完全可以在設計上做出改進。主要的改進有:1. 跟 C 一樣有指標,但不允許進行指標運算,提升了安全性和易用性,很多 C 語言的開發者,對指標是有點頭疼的,但接觸 Go,會發現很容易使用指標;2. 有垃圾回收機制,從繁瑣易錯的記憶體分配和釋放中解脫出來;3. 在 struct(型別)的基礎上,引入方法的概念,相比 C 語言更利於結構化和管理;4. 更高階的資料結構原始支援,比如動態陣列(slice)、string、map 等;5. 豐富的標準庫支援,比如 Go 對於網路程式設計,標準庫有了很大的支援,寫起來會很簡單,相對來說 C 使用第三方庫,易用性也差一些;6. 一定程度上支援面向物件程式設計;7. 強大的工具鏈,編譯速度超級快;8. import 機制改進;9. 型別定義避免歧義,比如 `var p, q *int`;10. 更強大的 IDE 支援;11. 更強大、易用的併發支援;...以上種種,會讓 C 語言的開發者愛上 Go 語言。對於 C++,因為其複雜性,我想面對 Go 這樣簡單、效能不錯、C 系的語言,應該沒有免疫力吧~Java 為什麼有時候會覺得 Go 彆扭?Java 雖然也是 C 系語言,但更多是面向物件的功能。很多設計模式的書,都是用 Java 語言來描述的。而 Go 語言,並非純面向物件,只是一定程度上,支援了部分面向物件的特性,不少面向物件的功能缺失,這會讓習慣 Java 的開發者感覺彆扭。1. 沒有型別層次2. 介面隱式實現3. 沒有真正意義的繼承,因此也沒有基於型別繼承的多型4. 沒有方法過載,而且還沒有泛型5. 可見性問題6. 沒有 Spring 這樣一統天下的框架...另外,Go 裡面的一些特性,Java 開發者可能也不太習慣,比如:有指標、型別足夠細分(比如各種 int)等。我認為還有一個很重要的是,Go 相對於 Java,對計算機底層基礎的知識要求會更高,這會讓一些人感覺不適應。

    但我還是要說一句,Java 開發者們,Go 還是值得你學習的。這裡附上之前回復的一個問答:《如何優雅得向Java程式設計師介紹go語言?》

    https://www.wukong.com/question/6681852965965267212/

    總結

    其實很多東西還是習慣問題,但有時候,我們需要嘗試打破習慣,用另外的視角看待這個世界。對於程式語言來說,我們在使用一門語言時,要慢慢學會用該語言的方式來思考、解決問題,雖然這個過程可能是比較痛苦,但這是鍛鍊自己思維、提升自己很好地方式。

  • 4 # 科學教育雲平臺

    關於這個技術性問題,針對樓主問題可以簡單的回答。如果複雜的舉例一一說明就比較繁雜。

    我先舉個例子:

    有兩個人,一個叫小明,一個叫小紅。他們平日上班時,小明騎腳踏車,小紅開私家車。有一天公司提供班車供他們上班。這個時候小明就覺得很方便很好用。小紅就會覺得坐班車還是不如私家車舒服方便(僅僅舉個例子,不考慮綠色出行,不用自己駕駛的情況)。

    這個時候你會發現,換了同樣的交通工具,但是得到的卻是兩個不同的體驗。就是因為他們起點和習慣不同。

    把這個例子搬到技術上是一個道理。都知道C語言是面向過程的,Java是面相物件,裡面包含很多無法,關鍵字,演算法,程式碼結構語塊。使用GO語言對C語言的同學來說從語法和和開發思想上都有一定提升,所以用起來的感覺比較好。而對JAVA語言的同學來說提升的可能不是很多,並且給自己帶來了很大的學習成本和程式設計習慣的改變。所以同為GO語言,但對C語言和JAVA語言的同學會各有不同的程式設計體驗。

  • 5 # 藍鳥啃蘋果

    說Java轉Go難受的肯定不是做Java原生開發的,一定是重度框架依賴症患者,同理C#轉Go還可以但是沒有泛型的支援讓開發起來會麻煩不少,不過基本還可以

  • 6 # 大學生程式設計指南

    先說說go語言的來源,算是程式語言裡面的富二代了,創始團隊本身就是精通多種程式語言的大神,而且背靠著谷歌公司這座大廟,go語言的相比主流的幾種程式語言都有明顯的特點,go語言最大的特點是簡潔明瞭,主要還是為了取代C++語言的繁瑣,主創團隊主要三個人,Rob ike 貝爾實驗室Unix開發團隊人員,Plan9作業系統主要領導人;ken tomption:圖靈獎得主,C語言前身B語言的作者,Unix的發明之人,作業系統Plan 9的作者,共同開發了UTF-8;Robert 為谷歌的V8引擎開發程式碼,這些程式設計領域中頂級的高手了,開發一種新的程式語言主要從專案實戰出發。

    先看看go語言主要能用來做什麼的,go語言主要用在中央伺服器上處理多核問題,儲存叢集等等應用方式,對於開發高效能的併發處理有著極大的好處,對於開發遊戲伺服器是一種極大的好處,都有哪些公司在使用go語言,Google,Facebook國內的阿里巴巴,百度,京東都在部署這方面的研發人員,畢竟還屬於剛發展階段,還在為生態鏈建設而努力的一種程式語言。

    go語言都有哪些特性讓這麼多的程式設計師著迷?效能上就有著非常獨特的優勢,這點主要針是現在的python和java語言中間還需要做解釋轉化用的,對於接近C語言執行效率的程式語言一般都會受到程式設計師的青睞,畢竟程式執行的效率一直貫穿整個程式的生涯,所以看到效率高的程式語言程式設計師都會有一種莫名的親切感;go語言集成了很多優秀的工具,像告訴的GC工具,對於傳統的GC有了極大的提升,本身在設計之處就是未來遮蔽很多的弊端,並且針對弊端整合開發了很多有用的工具包,開始的時候這些技術大牛隻是花費工作時間的百分20去做這件事,但時間長了谷歌公司發現這種程式語言的有點,就開始讓他們轉為全職開發這門程式語言。

    go語言還有一個非常明顯的特點,語法簡潔,有點類似於C語言的開發,但是又有很多工具可以使用,能夠提升很多程式設計的效率,接近現在程式語言的發展趨勢,快讀的開發迭代,因為歷史淵源的問題,很多C/C++的程式設計人員看到這門程式語言,覺得用起來特別的清爽,因為這些大牛在設計之初就是為了破除C++語法的繁瑣,給大家開發一個效率高並且簡潔的開發語言,主要設計的方向是針對伺服器端的開發,所以C++程式設計師覺得是一種為自己開發的程式語言,所以會覺得特別的清爽,畢竟同樣是在服務端開發換成這種程式語言能很快的解決問題何樂而不為的事情。

    相比之下java開發者轉化成go語言就會覺得有點不適應,雖然同樣是服務端的開發,但看看go語言的締造者更加接近於底層的開發並且更加註重效率,難免和java的距離有點遠,透過java開發者可以看到go語言本身的很多不足之處,比如框架不夠豐富,類支援的種類不夠多,不支援函式式的程式設計等等,這也是go語言後續需要改進的地方,畢竟一個語言的生態鏈的建設需要一個一個很長的積累期。

  • 7 # 粒子214836194

    一天看完go入門語法,己轉go半年,新專案也進入內測。從c++轉erlang再轉golang,真是越來越輕鬆,感覺生命無限拉長了好多。本來erlang就很舒服了,go的輪子更多用起來更方便。

  • 8 # 現在也不快

    就一群沙雕事兒事兒的…正經程式設計師不咋挑語言,有偏愛,但是不踩其他語言。就這幫沙雕引戰、無腦鼓吹,瘋狂踩其他語言。為啥java程式設計師事兒多,跟java沒關係,是用這個語言的程式設計師多,新手多。大學畢業就能java開發,正好年少輕狂。其實沒啥,改改習慣就好。要說rust感覺麻煩還行,畢竟所有權就是難搞。其他的,呵呵了…

  • 中秋節和大豐收的關聯?
  • 稻城亞丁究竟怎麼樣?有《從你的全世界路過》的那部電影裡那麼好看嗎?