我是一個.net一線開發,今年6月份離開帝都來到魔都,後入職於莫江互聯網在線教育公司。現剛剛轉正,在這短短的三個月的時間,莫江給個人是職業路上顛覆性變化。html
.net技術迷 => nodejs/java/golangjava
在此以前,我認爲我會在.net平臺堅決不移的走下,由於我是如此的喜歡C#語言,認爲它是那麼優美簡介,vs ide號稱宇宙神器,coding如此happy,but 當咱們每週技術討論例會上,我才真正的認識到我本身原來就是井底之蛙node
網上關於C#和java的大戰從未中止,我也常常想起大約6年前我上大學的時候,某些無良的培訓機構去咱們系招人的時候,大量的貶低C#的時候,我在力排衆議。然而時間在變,以我這3月多月接觸其餘語言的同時,也在反思,c#/.net真的有如此之好嗎?程序員
如下僅表明我的觀點,若有不對歡迎來噴。golang
C#的優點: 神通常的IDE,大量的語法糖,強類型語言支持var聲明,良好的錯誤輸出和debug,天生的windows平臺支持,兼容性良好的第三方或微軟框架,代碼提示、跳轉、可閱讀...web
劣勢:開源框架太少,跨平臺費勁,語法冗餘,依賴.net framework,執行效率堪憂sql
java語言自己和C#語言80%類型,學起來很輕鬆,可真的去寫java代碼的時候,就會感受徹底從天堂掉進了地獄。npm
ide難用,不論是eclipse 仍是 IntelliJ IDEA ,太痛苦了ubuntu
代碼提示功能能用,但不強大,調試功能通常,寫屬性不習慣,沒有C#語法糖,依賴jvmc#
這些都不足以讓人感受在地獄行走,最難的是。。。。 使用框架。 因爲是自學,沒人教,視頻、貼吧、blog 跟着別人作依然搞不通,框架太多,兼容性卻不怎麼好。一度懷疑本身懷疑人生
但是雖然java的框架我不會配置,但我不會否認,java就是那麼牛逼,只是我笨,不會用,如山如海的開源項目,讓任何一個.net程序員目瞪口呆。
nodejs呢也是在咱們架構會上才知道的(之前的知識面好淺薄。。。),不看不知道,一看嚇一跳啊,沒想到JavaScript語言也能作後端了,還能夠達到這麼高的併發。ok then 學習之~
nodejs學習簡單(web開發人員都會把~),配置簡單(npm),依賴少,框架很是很是多,編寫web服務器簡單,執行效率不錯,高併發處理很好...
最直觀的,搞一個web站點,秒刷有木有,按着F5不放刷刷的有木有。好吧原諒我沒見過世面,和asp.net 對比一下,以爲弱爆了有木有,不須要通過asp.net管道,不須要asp.net頁面生命週期,不須要mvc控制流程。。。不須要,全部都本身寫,想怎麼寫怎麼寫
異步回調,單線程處理,很吊很新穎。缺點也很明顯,同步執行困難,代碼檢錯麻煩,調試不友好,單線程,作cpu運算可能會形成異步沒法回調...
學習golang語言是如此的痛苦,類C的語法,不徹底的面向對象,每次要檢查的錯誤機制,指針(高級語言裏面沒有用過),環境配置死麻煩,初學很難理解語法。。。
我曾發過一句牢騷,寫半個小時的golang簡直比寫一上午的C#都累
然而並不能打消個人激情,由於它的優點太明顯了, 比C語法簡單卻有堪比C的性能,去除了面向對象複雜的語法和限制,使用指針能夠根據本身須要操做內存或引用,優美的協程,不須要鎖...
寫了這麼多,或許有不少地方是不對的是片面的,我也會慢慢完善本身
最近準備開發一個消息型項目,預計的是一天的消息量達到百萬級別,近實時的到達率,最後肯定下來肯定爲採用rabbitmq作消息中轉,確保api到sql層數據併發量控制以及防丟失。 原本說打算用windows server來作,但是呢windows server有個缺陷卻沒法處理,就是它會假死,並且很難去監控,so 我想能不能這層使用golang 來寫服務。 結果技術評審下來,因有較大的風險,暫時不採用,能夠作一個輔助進程來跑。 我也但願我手裏的現有項目能使用go來處理,好比apppush
這些項目都是用的rabbitmq作消息分發,以前的分發客戶端是用C#寫的,那我的已經離職,因此我決定用go寫一個
因沒有用過rabbitmq,也不知道會有什麼的結果,花多少精力。因非工做內容,也不會佔用工做的時間,so 完成時間也是不肯定的。博客園我應該是一週回更新一次或兩次進度,僅作爲這次行程的記錄
我但願我寫完的項目,能提供一套完整的穩定的rabbitmq 調度系統的 golang驅動
begin!~~~~~