編程愛好者學vb還是python-編程語言Java和Python對比哪個比較好

語言的優劣之爭是個永恆的話題,有時候一次偶然地「擦槍走火」甚至可能會引發一場鐵桿粉絲之間的「戰爭」。

也經常有人問我:「老劉,到底是Java好還是Python好? 我應該學習哪個語言?」

我也挺爲難的,只好說道:

Python挺適合入門的,看起來很簡單,適合創業團隊,可以快速開發,快速上線,快速迭代。適合特種部隊的突襲。等到發展到一定規模,動態語言的劣勢就會體現出來,維護/重構難度高,特別是我覺得動態語言寫的代碼腐化速度要比靜態的Java要快一些。

Java呢,語法相對Python囉嗦,表達力要弱一些,開發起來一板一眼,有很多規範,適合集團軍的大規模協同作戰;有很多著名的框架和類庫,性能不錯,系統穩定而成熟,是開發大型系統的極好選擇。

他說:「老劉你這是在和稀泥嘛,我到底應該學啥?」

o4YBAFushnaAKq9ZAABYGGusMy8822.jpg

我說:「你應該把注意力放到那些和Java無關,和Python無關,能反映一個程序員水平高低的編程的共性問題。」

舉個非常簡單的例子,開發中需要實現一個定製的、簡單的緩存,如果使用ehcache ,memcached, redis這樣的開源系統就太重量級了,經理要求你新寫一個,可以支持(key,value)存儲,設置過期時間,過期的可以自動清理掉,你能不能快速地實現一個高質量的版本?

這其中涉及到的就是數據結構和算法、以及線程的知識,和具體的語言關聯度很小。

再比如給你一個需求,你能不能找出其中「概念」,從而設計出類?能不能做好信息的封裝和隱藏,定義出良好的接口,讓每個類的職責單一而準確?

Python中有class , Java 中也有class, 但是上述工作卻和具體語言沒什麼關係。你需要做的是利用你的經驗,在腦海中做一次思維體操,然後用某個語言工具把他們表達出來。

有些「概念」比較容易發現,有些「概念」和現實沒有直接的對應關係,需要抽象一下才能找到,這就比較考驗抽象的能力了。

可能有人說,我們Web開發都是「面向數據庫」編程的,都是基於數據庫的增刪改查,用不上你說的這些東西。 那如果經理給你一個項目需求,讓你完整地設計出表結構來,要求方便後續的程序開發,又要考慮到靈活性和擴展性,你能不能搞定呢?

在編程中,你發現了重複的代碼,那能不能找到一個概念(最終可能由一個類或者函數來表達),來表示這個重複的模式,從而極大地消除重複代碼?

你能否區分哪些是不變的部分,哪些是變化的部分,把他們區分開來,「發現變化,並且封裝變化。」

說到底,本質上還是那個抽象的能力, 這樣的例子有很多,這裏不再一一列舉了。

作爲一個程序員要發展,要成長,不可能一直增刪改查,不可能一直停留在編程語言的特性上面,爭論孰優孰劣。

對於做技術的人來說,總有一天,眼光和視野要超越編程語言,進行設計和架構的工作,停止無謂的爭論,開始紮紮實實地學習吧。

打開APP閱讀更多精彩內容

點擊閱讀全文