學了兩門編程語言后才知道的一些事
曾經聽大佬說:作為軟件從業人員,至少每年學一門新的編程語言。但事實往往是知易行難,工作了十多年,除非實踐中用到了,才會去學習和運用一些。
但最近兩個月換了新工作,連續學了兩門新的編程語言:Python和Golang。本身自己做了十多年的Java開發,從比較復雜的面向對象語言向Python和Golang轉型,學習曲線還是非常平滑的。兩周左右一個Python項目已經上線,不到一周的時間已經可以寫Golang代碼。
曾經對全棧工程師很是羨慕,沒想到自己也慢慢成為了他們??赡苁窃袐D效應吧,當學習和關注全棧開發(多門編程語言)之后,發現有很多事已經存在很久。
下面分享一些關于學習全棧之后才關注的人、事、思考:
一、超哥之前也是搞Java的,突然有一天看到他在朋友圈虎虎生風地敲Golang代碼,一問才知道,他已經成功轉型全棧工程師,Java、Golang、Python都搞了起來。當時那是非常羨慕,沒想到兩個月后,自己也成為了他。有一次技術峰會遇到,沒想到他也轉到教育相關領域,也在玩GPT。
二、最近在大量看Golang的簡歷,發現大量PHP從業人員開始轉Golang。雖然說PHP是世界上最好的語言,但的確有些老了,也有一些沒落了。無論是大廠,還是中小企業,要么直接以Java開始,要么開始重構為Golang。據百度的同事說,百度的某些業務板塊已經開始著力將PHP的項目重構為Golang。同時也得知,從PHP到Golang的學習曲線要比從Java到Golang的學習曲線稍微陡峭一些。
三、自己的親身感受:學習Python和Golang并不難,從語言本身來講它們比Java簡化了許多語法,只需要幾天時間熟悉它們的編碼風格和語法差不多就能上手了,不要怕。
四、看到一份簡歷,原本是PHP工程師,但在簡歷中明確注明:可轉其他語言。從大量的簡歷看來,如果是PHP工程師,那么轉Golang好像是PHP從業者的大趨勢。當然,如果你能夠超越語言本身,可隨便轉,那就更好了。
五、Python在數據計算、圖表展示、人工智能方面,簡直不要太便利。一行命令,一個復雜的數學函數便實現了;幾行命令一個圖標便出現了;幾行命令,一個人工智能的算法便驗證了……當用于各類腳本編寫,Python太方便了。
六、Golang在云原生、高并發方面應用的比較廣。我們知道的k8s和docker都是基于Golang編寫的。但Golang的精專人員并不多,大多數是其他編程語言轉過來的,或者在寫主業務的同時,用它來寫一些輔助功能??赡軜颖居姓`,但相對來說應該沒偏差太多。
七、昨晚一朋友打電話,詢問.net是否要轉Java,我說,還猶豫啥,必須轉,即便不轉,多學一門語言也多了一些生存的空間。
八、學習了Python之后,才了解原來靜態語言(Java)和動態語言(Python)在發布流程上有很大的區別。像Java和Golang,強類型,在編譯期即可發現一些錯誤,但Python就不一樣了,不運行,你可能不知道它有錯。當對照學習時,才發現之前以為正確的,完美的流程,可能并不適合另外一門語言。當時還有一段感想:當我們固執的堅持這是最好的時候,往往是受到思維、認知和水平等限制,找不到看問題或解決問題更多維度的外在表現。
九、在學習Golang時,發現Golang的結構體(struct)與Java的類(class)很像,但又不一樣;Golang的切片(slice)和Java的ArrayList很像;Golang的指針(point)類型與Java的引用類型很像,但又不一樣,但對于方法(或函數)參數來說,它們本質上都是值傳遞。Java基礎類型是直接復制值,引用類型復制引用,而Golang的值類型直接復制一份當前值,指針類型復制指針指向的地址。還有其他很多可對照的。
十、當學習了多門語言之后,會發現沒有十全十美的語言,只有最適合某一場景的語言。
曾經有人說,當你學習一門外語之后,便擁有了他們的思考方式。對于編程語言來說,也同樣如此。曾經以為程序就應該這么寫,這發布,這么運維……但當學習一門新的語言之后,你會發現,還有一群人,在用著另外一種方式改造著世界。
現在該我對大家說了:沒事多學一門編程語言吧,即使做不到一年新學一門。學習一門新的語言,它能讓你的編程思想更加抽象和豐富,它能給你提供一種全新的思維方式,它能促進對原有語言的對照理解,它也能夠給你更多的求職機會,它也能讓你結識另外一群不一樣的人。
另外,告訴大家一個可怕的事實:Java語言的排行逐年在下滑。