不知道瞧不起Java和Python的同學看到這篇文章後會不會哭暈在廁所。 本篇, 我們僅討論Java和Python之爭。
“Java是不可動搖的老大, 而Python勢頭正猛”, 直到現在,
翻遍知乎與Quora, 許多已經成為或者想要成為程式師的網友們圍繞這一主題, 進行了深入探討。
簡單總結一下, 贊同Java的網友認為:
“如果你是0基礎並且從來沒有體系地學習過程式設計,
“初學者一旦理解這些細節, 後面只需要花極少的時間, 就可以基本學會C++、JavaScript、PHP、Python、R、C#、Objective-C、Swift、Go。 ”
“當我們學會了一門技術難度要求更高的技能以後, 再去降級學習難度更低的技能是非常容易的一件事情, 反之則不然。 ”
而讚賞Python的同學@changjiz則表示:
“首先Python作為一門指令碼語言, 很容易入門。 程式設計並不是說掌握一門或幾門語言就足夠了, 重在提高思維能力。 而Python容易入門, 工具多, 短短數行代碼就可以實現一個強大的功能, 增強初學者的信心, 另一方面讓初學者有一個對程式設計思維的初步理解。
在這之後再學習Java, 首先語法很容易入門, 再者對程式設計有一定理解後, 才更能體會到類、繼承、介面, 甚至之後接觸各種框架, 這些內容對於大型專案帶來的優勢。 ”
誠然, 從Python和Java二者的學習難度上講, 後者的難度不言而喻。 如上圖所示,
不過, 就實際情況來講, 初學者學習任何一種語言都需要綜合考慮是否適合自己。 在此筆者先拋給大家一個問題:如果給你機會嘗試學習一門人類語言(例如法語和日語), 你會選擇哪個?雖然多數同學嘴上說要跟著興趣選擇初級難度較大的法語, 但身體還是很誠實地擁抱了容易上手的日語, 到最後則因缺乏興趣和明確的目標而不了了之。 這樣的場景是不是似曾相識?
因此, 科學判斷和選擇你的第一個程式設計語言更為重要。
▌使用情況:
與Java相比, Python擁有不斷被增強的資料分析工具包, 能與各種語言進行協作,
例如, 在開發效率上, Python所需要編寫的代碼量比Java所需的代碼量更短。 在Java環境中, 只有變數名稱與變數類型和物件本身相關;而在Python環境中, 每個變數都與該物件相關聯, 使用者在創建變數時不必聲明變數類型。
不過, 在執行時間上, Python在程式執行時間上比Java慢三到五倍。
此外, 與靜態類型的語言Java相比, Python屬於動態類型。 這也就意味著:同一件事情可能取決於上下文而發生改變不同。 隨著Python應用程式變得越來越大, 越來越複雜, 可能未來因為錯誤難以追蹤和修復而很難進行維護。 因此, 也更加需要從業者的相關經驗和洞察力知道如何設計代碼或編寫單元測試, 以簡化可維護性。
通過以上對比可以發現,從開發效率上講,Python語法簡潔、容易上手,從執行時間和運行效率上講,Java則更勝一籌。
▌趨勢:
近段時間以來,在各大權威榜單上,Java仍霸佔榜首,但Python的勢頭也很強勁,甚至有後來居上的意味。在GitHub 2017年度報告中,Python 超越 Java 成第二受歡迎語言。
在 ranked.com 的排名中,Python 是 2017 年最受歡迎人工智慧程式設計語言。根據 Stack Overflow 流量統計,2017 年 6 月,Python 第一次成為高收入國家 Stack Overflow 訪問量最大的標籤。
在 TIOBE 2018 年 4 月程式設計語言排行榜前 20 名中,Python 已躍居到第四位,前三分別為 Java 、C、C++。
根據CSDN公佈的中國軟體發展者調研資料顯示,儘管Java依然是開發者使用最多的程式設計語言,Python成為越來越多的開發者未來計畫學習的程式設計語言首位。
▌頂層建設:
2014年,據電腦協會(ACM)發佈的一項調查表明,Python已經超過Java作為向美國學生介紹程式設計和電腦科學的頂尖語言,十大電腦科學部門中有八個使用Python來教授程式設計。這表明Python已是教授電腦科學入門課程最流行的語言。
回到國內,隨著Python 進入小學課本、Python 進入浙江省高考、國務院發佈《新一代人工智慧發展規劃的通知》等頂層建設的不斷完善,全民學習Python的熱潮正不斷升溫。
▌應用範圍:
基於人工智慧和機器學習的熱潮,很多科技公司都在應用 Python 語言。如在谷歌,有穀歌爬蟲、穀歌廣告、Google App Engine、Google earth 等;在騰訊,有基於 Python 開發的藍鯨遊戲運維平臺;而 YouTube也同樣使用 Python 語言開發;在 Facebook,有大量的基礎庫均是通過 Python 實現.....
此外,還有諸多通過Python 實現的功能應用,比如利用 Python 爬取網頁製作電子書、用 Python 編寫 Face ID 破解 iPhone X、用 Python 快速實現區塊鏈、用Python寫小遊戲、甚至用Python寫一個自動搶票的腳本。
而Java的應用範圍更為廣泛,並壟斷了企業級應用的開發。
總的來說,這兩種語言對開發人員和最終用戶來說都具有獨特的優勢。
▌薪資水準:
根據100Offer 1月發佈的一項調研報告顯示:2017是十大互聯網熱門崗位中,Java仍是需求量最大的崗位,而Python的需求量相對靠後。然而,從薪資水準上講,Java崗位薪資水準稍遜於Python。
1995年,Java1.0版本發佈。直到最近,Java 10正式版發佈(Java11也正在行走的路上……),如今,它被廣泛應用于智慧手機和平板電腦的關鍵程式設計平臺。而Python則於1989年首次發佈,作為一種高級程式設計語言,它為可讀代碼提供了強有力的支援。
總的來講,無論選擇哪種語言,對於走上技術之路的程式師都會有各自不同的優勢。而對於初學者而言,更重要是如何將不同語言之間的相似之處關聯起來,去不斷領悟各種不同的語言、不同的平臺的的相似點。
畢竟,重要的是程式設計能力,而非僅僅某一種語言。
奉上近段時間在YouTube上火爆一時的“Which Programming Language Should I Learn First?”視頻,主講人Craig Dennis給出了自己的見解,希望給予你更多的思考。
通過以上對比可以發現,從開發效率上講,Python語法簡潔、容易上手,從執行時間和運行效率上講,Java則更勝一籌。
▌趨勢:
近段時間以來,在各大權威榜單上,Java仍霸佔榜首,但Python的勢頭也很強勁,甚至有後來居上的意味。在GitHub 2017年度報告中,Python 超越 Java 成第二受歡迎語言。
在 ranked.com 的排名中,Python 是 2017 年最受歡迎人工智慧程式設計語言。根據 Stack Overflow 流量統計,2017 年 6 月,Python 第一次成為高收入國家 Stack Overflow 訪問量最大的標籤。
在 TIOBE 2018 年 4 月程式設計語言排行榜前 20 名中,Python 已躍居到第四位,前三分別為 Java 、C、C++。
根據CSDN公佈的中國軟體發展者調研資料顯示,儘管Java依然是開發者使用最多的程式設計語言,Python成為越來越多的開發者未來計畫學習的程式設計語言首位。
▌頂層建設:
2014年,據電腦協會(ACM)發佈的一項調查表明,Python已經超過Java作為向美國學生介紹程式設計和電腦科學的頂尖語言,十大電腦科學部門中有八個使用Python來教授程式設計。這表明Python已是教授電腦科學入門課程最流行的語言。
回到國內,隨著Python 進入小學課本、Python 進入浙江省高考、國務院發佈《新一代人工智慧發展規劃的通知》等頂層建設的不斷完善,全民學習Python的熱潮正不斷升溫。
▌應用範圍:
基於人工智慧和機器學習的熱潮,很多科技公司都在應用 Python 語言。如在谷歌,有穀歌爬蟲、穀歌廣告、Google App Engine、Google earth 等;在騰訊,有基於 Python 開發的藍鯨遊戲運維平臺;而 YouTube也同樣使用 Python 語言開發;在 Facebook,有大量的基礎庫均是通過 Python 實現.....
此外,還有諸多通過Python 實現的功能應用,比如利用 Python 爬取網頁製作電子書、用 Python 編寫 Face ID 破解 iPhone X、用 Python 快速實現區塊鏈、用Python寫小遊戲、甚至用Python寫一個自動搶票的腳本。
而Java的應用範圍更為廣泛,並壟斷了企業級應用的開發。
總的來說,這兩種語言對開發人員和最終用戶來說都具有獨特的優勢。
▌薪資水準:
根據100Offer 1月發佈的一項調研報告顯示:2017是十大互聯網熱門崗位中,Java仍是需求量最大的崗位,而Python的需求量相對靠後。然而,從薪資水準上講,Java崗位薪資水準稍遜於Python。
1995年,Java1.0版本發佈。直到最近,Java 10正式版發佈(Java11也正在行走的路上……),如今,它被廣泛應用于智慧手機和平板電腦的關鍵程式設計平臺。而Python則於1989年首次發佈,作為一種高級程式設計語言,它為可讀代碼提供了強有力的支援。
總的來講,無論選擇哪種語言,對於走上技術之路的程式師都會有各自不同的優勢。而對於初學者而言,更重要是如何將不同語言之間的相似之處關聯起來,去不斷領悟各種不同的語言、不同的平臺的的相似點。
畢竟,重要的是程式設計能力,而非僅僅某一種語言。
奉上近段時間在YouTube上火爆一時的“Which Programming Language Should I Learn First?”視頻,主講人Craig Dennis給出了自己的見解,希望給予你更多的思考。