最近大家都在問我這樣一個問題,如果兩者必學,先學Java還是先學python。對于這樣的提問,我想問大家一個問題一個跑馬拉松的人去跑5000很容易,而跑5000米的人去跑馬拉松一定會感到非常痛苦。為什么會這樣呢?原因很簡單,若果我們學會了一門技術難度比較高的技能的時候,再去學習簡單的技能是比較容易的事情,反之就會比較困難。
這樣的道理同樣適合我們今天的話題,小編本人對Java和python都有一定的經驗,當然因為我是做Java的,所以本身Java經驗更多一些,后來在學習python的時候,小編發現使用python是一件很容易的事情,因為解決問題的方法,算法,思路,編程思想和我所熟悉的Java并沒有什么不同,只需要關注我們在學的與我們所熟知的編程語言在語法和使用上面有哪些不同即可。這也是我們學習一門新的編程語言很容易入門的原因。
有一個讀者和Runsen說,他在百度上搜了一下,學Java還是學python,得到的結果是有人說學Java好,有人說學python好,更有甚者說語言都是相同的,不要糾結。每種回答都好有道理的樣子,讓你無從選擇。
接下來我們我們要明白Java和python的個子定位。Java源自C和C++的技術體系,于1995年推出,定位于給專門的程序員設計大型的復雜分布式應用而設計。而Python是1991年推出(比Java還早)主要面向于系統管理,科研,教育和非程序員群體等。大家一定要理解清楚一個現實,這個世界上并不是只有程序員才需要寫程序,還有很多群體需要寫程序。一般軟件測試的要學習python。而軟件測試方向下屬的自動化測試開發,是Java/Python兩個方向同時存在。那你說你覺得哪個更好呢?
Python比Java早4年出身,但是在國內為什么幾乎到2010年之后,Python才逐漸火起來呢?原因很簡單,因為我們都太現實了。由于大數據的盛行,由于自動化測試方面的人才需求,以及對于互聯網的一些基礎應用系統的的開發,企業加大了對Python人才的招聘力度(當然,與Java比還有較大的差距),由于有一門感覺很簡單又能賺大錢的編程語言出現了,簡直是人類的福音啊,所以火起來了。這一點與近幾年虛火很旺的Web前端開發很像,其實絕大部分人沒什么技術能力,但是工資卻拿得不錯。這不是個人的原因,企業也很浮躁,僅此而已,一旦虛火泄了,誰能撐到最后?請各位自行腦補。
現在人們經常會聽到一些關于Java和python的誤導,都會覺得python簡單而Java很難,就我個人經驗來講,我認為學習python確實要比Java容易入門但是也僅此而已了。在解決問題是,最難的不是所使用的編程語言,而是要解決問題的算法與思路上,另外一方面,由于Python近幾年的火爆,不排除一些人故意散播一些言論,來誤導大家使用Python。這件事情就像這么多年,一直有人覺得學習軟件測試要容易一些一樣,很多人也是報著通過軟件測試進入這個行業,選擇了一個自己認為沒有難度的領域進入。但是,當3,5年過去了,很多測試人員目前最焦慮的就是,自己技術不夠深,在企業當中越來越沒有競爭力了。所以最終,還是得硬著頭皮研究深層次的測試技術,無論是編程,網絡,數據庫,協議,還是自動化測試,性能測試等。但是這個過程非常痛苦,就像我說的那樣,這個世界上99%的人都會選擇一條容易走的大路,因為懶惰,因為恐懼。而成功是屬于那1%的人一樣。這句話同樣適用于編程語言或者技術功底的訓練上。
其實大家如果有過實際的編程經驗,我們不妨認真想想,當我們研發一個系統的時候,究竟會用到哪些技術?那些什么需求分析,跟測試撕逼,跟客戶撕逼,跟老板撕逼的那些爛事我們就不提了。我們就來看看純技術層面的一些基本要求:數據庫,Linux命令,網絡協議,接口設計,算法思路,框架,改BUG,編程,前端交互。你應該懂我,利用不同的編程語言編寫程序只是研發過程中眾多你需要掌握的技術當中的一塊而已。其它,與你用哪們編程語言無關,這一點如果你都理解不了,覺得在忽悠你的話,那請自便吧。或者換一個角度,會一門編程語言,而不是完整技術體系,就能當技術大牛的情況,我覺得可能只有在你們家村里可以行得通,因為就你一個人懂。當然,以上我們討論是的純粹的基于技術定位,你也許可以反駁我說,難道做測試的都得懂編程,難道做Python的都不行?這當然不是這樣的,任何一個領域都有大神,隨著經驗的豐富都能夠解決很多難題。但是,那是很久以后的事了,我們現在討論的是,你還在糾結Java還是Python的這件事,毫無疑問,這個時候,你仍然還是一個菜鳥,甚至連門都沒入。建議大家,不要因為什么事情簡單,所以我要去做,無論是學習編程語言,還是其它,這是最要命的一個出發點,會毀了你的未來。
讓我們單純從事實出發,Python簡單的原因只是因為,我們使用Python時,我們可能跟個傻子一樣,在直接調用別人給我們寫好的代碼接口而已,而Java的很多處理相對要原生一點,我們寫的代碼要稍微多一點。但是只要完成封裝,代碼就很難說誰更簡單了。而這個封裝的過程,其實才是編程最重要的部分,如果這一部分我們都不愿意親自參與,也不想知道個中實現原理,你想想,你怎么可能成長為一個優秀的程序員,還有天理嗎?讓那些勤奮的人,情何以堪!
這一點就像C語言,由于C語言更原生,更底層,幾乎沒有提供太多封裝好的代碼接口,很多問題的解決都需要我們自己寫代碼,所以這也是為什么很多人覺得C語言很難,道理是一樣的。但是,牛逼的人,都更喜歡自己創造。相比起C語言來說,Java和C#之類的,為我們提供的代碼接口要豐富得多,我們使用起來其實也要容易得多,結論就是,在C語言面前,其它高級語言都太簡單了,因為封裝了太多可以直接用的類庫和接口。所以,要成長為一個高級程序員,一定不是寫寫簡單的應用而已,比如Java的源代碼是必須要去學習的,我們一定要知道這些封裝好的代碼接口的實現細節。否則,跟使用Python封裝好的東西,又有何本質區別呢?所以,請不要再糾結了。
如果你把Java作為你的人生的第一門用心學習的語言,那么你只需要花極短的時間,就可以基本學會C++,JavaScript,PHP,Python,R,C#,Objective-C,Swift,Go(是的,每一門語言都可以在極短的時間學會,只是具體的問題解決和一些坑需要多積累一些實戰經驗而已)。但是反過來,如果你把Python作為你的第一門語言,問題就回到跑5000米的人跑馬拉松這件事情上了,答案不言而喻。所以,你未來如果要立志成為一個專業的程序員,建議先學習Java(或者C#也行,兩者有很多原理上很像,實在不行,C/C++也可以哦),那是給程序員的專屬語言,是有門檻的,所以你才能夠建立自己的競爭力。如果你只是想玩玩,感受一下,或者是把編程語言作為一個工作中的工具而已,Python是個不錯的選擇。這是面向學習的建議,如果是在企業中真實做項目,那就不要糾結了,項目需要什么,咱們就學什么,不需要那么多理由,干,才是真理。