大家好,又見面了,我是你們的朋友全棧君。
首先我簡單的說下目前的市場發展行情,Java和Python發行時間都有很多年了,但是或許你自己也應該清楚,Python是什麼時候開始步入我們的生活,步入我們的眼線的,對,就是近幾年,這幾年随着教育訓練機構的不斷興起,網際網路的快速發展,就我自己處在這個圈子來看,Python炒的有點兇了,大家都說Python是一膠水程式設計語言,意思就是說他可以做很多方面的工作,可以做:web開發,網絡爬蟲,資料分析,機器學習,量化教育,人工智能。但是說到底,Python真正比較好學的就隻有web開發和網絡爬蟲,那既然是寫web的話,那我為什麼不學Java呢,現在的教育訓練機構都把Python炒的很兇,都說Python學出來能拿到多高多高的工資,你自己去各大招聘網站看,現在你要是想做Python方面的工作基本上隻能在一線城市工作,而且這些招聘裡面占比40%的還是教育訓練機構。而Java就不一樣,你學好Java,在一線,二線,甚至三線都好找工作,隻不過是三線城市和二線,一線相比,薪資待遇稍微要差一點,下面我再來講下兩者具體的差別。
語言的優劣之争是個永恒的話題,有時候一次偶然地”擦槍走火”甚至可能會引發一場鐵杆粉絲之間的”戰争”。
也經常有人問我:”戰老師,到底是Java好還是Python好? 我應該學習哪個語言?”
我也挺為難的,隻好說道:
Python挺适合入門的,看起來很簡單,适合創業團隊,可以快速開發,快速上線,快速疊代。适合特種部隊的突襲。等到發展到一定規模,動态語言的劣勢就會展現出來,維護/重構難度高,特别是我覺得動态語言寫的代碼腐化速度要比靜态的Java要快一些。
Java呢,文法相對Python啰嗦,表達力要弱一些,開發起來一闆一眼,有很多規範,适合集團軍的大規模協同作戰;有很多著名的架構和類庫,性能不錯,系統穩定而成熟,是開發大型系統的極好選擇。
他說:”戰老師你這是在和稀泥嘛,我到底應該學啥?”
我說:”你應該把注意力放到那些和Java無關,和Python無關,能反映一個程式員水準高低的程式設計的共性問題。”
舉個非常簡單的例子,開發中需要實作一個定制的、簡單的緩存,如果使用ehcache ,memcached, redis這樣的開源系統就太重量級了,經理要求你新寫一個,可以支援(key,value)存儲,設定過期時間,過期的可以自動清理掉,你能不能快速地實作一個高品質的版本?
這其中涉及到的就是資料結構和算法、以及線程的知識,和具體的語言關聯度很小。
再比如給你一個需求,你能不能找出其中”概念”,進而設計出類?能不能做好資訊的封裝和隐藏,定義出良好的接口,讓每個類的職責單一而準确?
Python中有class , Java 中也有class, 但是上述工作卻和具體語言沒什麼關系。你需要做的是利用你的經驗,在腦海中做一次思維體操,然後用某個語言工具把他們表達出來。
有些”概念”比較容易發現,有些”概念”和現實沒有直接的對應關系,需要抽象一下才能找到,這就比較考驗抽象的能力了。
可能有人說,我們Web開發都是”面向資料庫”程式設計的,都是基于資料庫的增删改查,用不上你說的這些東西。 那如果經理給你一個項目需求,讓你完整地設計出表結構來,要求友善後續的程式開發,又要考慮到靈活性和擴充性,你能不能搞定呢?
在程式設計中,你發現了重複的代碼,那能不能找到一個概念(最終可能由一個類或者函數來表達),來表示這個重複的模式,進而極大地消除重複代碼?
你能否區分哪些是不變的部分,哪些是變化的部分,把他們區分開來,”發現變化,并且封裝變化。”
說到底,本質上還是那個抽象的能力, 這樣的例子有很多,這裡不再一一列舉了。
作為一個程式員要發展,要成長,不可能一直增删改查,不可能一直停留在程式設計語言的特性上面,争論孰優孰劣。
對于做技術的人來說,總有一天,眼光和視野要超越程式設計語言,進行設計和架構的工作,停止無謂的争論,開始紮紮實實地學習吧。
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/156776.html原文連結:https://javaforall.cn