@作者:潤森
我懂壹點Python,Java,它來自我自己的想法,純屬虛構。
狀態
2020年3月,新的編程語言排名發布,TIOBE最近發布了3月編程語言排名。
從榜單中我們可以看到,排名前三的是Java、C和Python。與上月相比,Python從1.85%繼續增加至10.11%,以10.11%排名第三。
讓我們了解壹下常見的編程語言,如Java、Python、JavaScript、C/C++、Go和C#。
“很難適應各種編程語言。“面對各種各樣的編程語言,每個人都有不同的意見。每種編程語言都有其存在的意義。編程之戰從未停止,“戰爭”壹觸即發。
家庭內戰
最近,編程語言家族舉行了壹次“家庭聚會”,討論他們的排名。
以下是家庭成員之間的對話。
老Py:最近,我很神奇。從2015,人工智能的開端開始,每個人都向我學習,基本上我成為了最無敵的老大哥。
老四C++:對,老三,妳的爬蟲、數據分析、機器學習、深度學習、自然語言處理,還有妳的Django、flask等Web開發,甚至妳的PyQT都想占領我的QT圖形界面市場。都是妳們這些小流氓,讓我從老三變成了老四。
老Py:對妳來說寫作太難了。跟我學只需要幾分鐘。誰告訴妳這很難理解?什麽是面向對象?我用十幾行代碼就完成了。誰會向妳學習?很快,我將是老板,妳將是我的弟弟。
老四C++對老板Java說:大哥,有人想篡權。
Java老板:現在,真的是第三個時代了。現在所有的數據分析師都只知道Python,他們都高呼:人生苦短,我用Python。要怪就怪數據分析師編程水平低,寫著寫著就是py代碼,根本學不會其他語言。
老二C不屑地說:就算寫Python太厲害,最多也就是個包指南,算不了什麽。第三,妳有什麽本事當老大,我不敢謀權篡位。
老Py:不如我們對比壹下,看看開發者現在更需要我還是老板先需要我?
Java老板:好的,我們來比較壹下。誰怕誰?我看看妳能做什麽。
老三樣Py:我的代碼簡單易懂。例如,如果我打印壹個HelloWorld,它就只有壹個。就這麽簡單。就問妳服氣嗎?
Boss Java:要打印壹個HelloWorld,我真的需要幾行代碼並聲明壹個HelloWorld對象。
第二個孩子C:我必須定義壹個主函數。打印壹個HelloWorld確實有點多。
老四C++:我抄襲了老二,比老二多寫了壹個HelloWorld。
老三Py:看到沒,這就是差距。誰能寫這麽多代碼?我只是簡單粗暴地打印HelloWorld。
Java老板:老三,妳不能這樣。壹切都是物體。如果妳寫了壹行代碼,我想妳必須聲明壹個對象。
老三Py:什麽對象,能打印出來我就Ok了。
其他:確實老三寫的代碼很簡單,連小學生基本都能學會。我們為自己感到羞恥。老三,妳需要什麽技能嗎?
老Py:我不可能比我的第三方庫更好。有10,000多個庫,安裝很簡單。壹個可以很容易地完成,人們可以看到安裝進度欄。妳說我不好。
Java老板:我不同意。去maven倉庫看看。
我的jar包有各種各樣的場景,我的生態系統長期以來壹直很完善。為什麽不如妳的第三個孩子?
老Py:妳在pom.xml裏裝什麽信息告訴別人,妳的依賴關系這麽長,別人願意寫嗎?
老二C和老四C++:我們必須編譯gcc和cmake添加的第三方庫。
我的第三個孩子Py: my requests、selenium、beautifulsoup、pyquery、lxml、Scrapy、Crawley、Pyspider等壹系列爬蟲庫和框架令人驚嘆。我寫了幾乎所有的爬行動物,而妳的爬行動物市場早就失去了妳的份額。
Boss Java:我的WebMagic、Nutch、Heritrix、Jsoup、SeimiCrawler和JLiteSpider寫的代碼確實比妳的多幾倍。以前爬蟲市場基本都是我在用,現在被妳占領了。可悲的是。
老二C老四C++:爬蟲,小心爬進監獄。現在第壹條爬蟲被禁,禁止爬微信微信官方賬號。都是老三樣。妳的爬蟲造成多少假流量,多少網站崩潰?假設12306的20%以上是爬行流量。多少人搶到票,然後加價賣,官方發票被他們搶走。妳之前讓多少人搶票?
老Py:這不關我的事。現在百度蜘蛛抓取還有多少網站叫好?都是他們的問題。
其他:除了爬行動物妳還有什麽?
第三個Py:我的數據分析三劍客numpy、pandas、matplotlib與Seaborn、Scipy、StatModels、Pyecharts、Bokeh、Blaze、Plotly、NetWorkX、Biopython、SymPy和gwpy等數據科學庫壹起,所向披靡。他們都喊出了從excel學Python。
Java老板:雖然我也有用於數據分析的jar,但我派我的兒子scala來幫我改進它。
第二個孩子C和第四個孩子C++:這個東西不需要SPSS、stata、tableau、powerbi、excel、Echart、FineReport等強大的數據分析工具就可以解決。這都是我們和老板開發的,為什麽還要寫代碼呢?
老三樣Py:我有屠龍者Pycharm,有永恒之劍anaconda,有發育,有數據分析,雙劍合璧,無敵。
Boss Java:與IDE開發工具相比,我並不害怕。我有Eclipse、MyEclipse、IntellijIDEA和NetBeans的功能。
第二個孩子C和第四個孩子C++:dev-C++、C-free、CLion、Code::Blocks、CodeLite、C++Builder,我們認為沒有問題。
老Py:我的Web開發django社區非常龐大。在江湖上,Python有兩條腿,壹條腿是我的Django,因為20000個包,其中10000多個是我的Django,加上我的其他兒子flask和tornado,我在中國和知乎上開發了豆瓣,在國外:Instagram,Disqus,NationalGeographic和美國國家航空航天局
Java老板:Web開發,妳敢比,我隨便拿出壹個Spring家族,SpringMVC,SpringBoot,SpringCloud,除此之外,我還有自己的Tomcat,Jetty應用服務器,微服務架構,早就深入人心了。如果以前的網站不是用php開發的,基本上是用我以前的Servlet和jsp開發的(雖然很落後,但基本上都是維護的),現在我的Spring家族是網站開發的首選。
第二胎C和第四胎C++:雖然我們在網站開發方面幾乎沒有市場,但我們用於軟件開發,例如QQ,微信,支付寶等早期軟件。
老Py:我有能力對比最熱的人工智能。我的機器學習sklearn,深度學習keras,Pytorch,tensorflow,Caffe,PaddlePaddle,哪個我不認識,哪個我不用?這就是為什麽我是最近的國王。
Java老板:妳是不是對王者榮耀想太多了?王者榮耀裏的客戶端應該是c#(unity 3d)開發的,核心後端服務是C++開發的,但不是妳的。人工智能,我怎麽可能意識不到?我的深度學習庫-DL4J、ND4J和Deeplearning4j以及深度學習框架只是因為數據分析師只能使用Python,這讓妳現在很生氣。
老四C++:CPP-Call-TensorFlow,Caffe2C++API,PyTorch-CPP,我的性能比妳好很多倍。對了,談談性能,老三,妳不太擅長這個。
Boss Java補丁工具:沒有數據。第三,妳做什麽人工智能?看看我的apache社區的大數據框架,ApacheHadoop、ApacheHive、ApacheHbase、ApacheSqoop、ApacheFlume、ApacheBeam、ApacheFlink。我開發了ApacheStorm、SparkStreaming、ApacheOozie和clouders manager(CDH),並開發了所有大數據平臺。沒有數據,妳在做什麽,Ai?妳被猴子戲弄了嗎?
老Py:就遊戲而言,我可以擁有我的Pygame。就性能而言,我承認它是低效的。大數據不是有我的pyspark嗎?
老五C#:妳的Pygame是壹個兒童遊戲屋。我已經占領了遊戲市場。別來了,老三。
Java老板笑道:spark是我兒子scala開發的。spark是為了那些不了解我(Java)和我兒子(scala)的數據分析師。在妳的壓力下,我不好意思開發pyspark並為Python提供APi。此外,我們還為R提供Rspark。換句話說,老R從十掉到了十壹。
老R:是妳的第三個孩子壹直在打我,導致現在的數據分析師不再學習R,認為如果他們向妳學習,他們將在世界上所向披靡。
老四C++:很明顯每個人占領壹個市場就夠了。現在,提出了“人生短暫,我要學習Python”的口號。
老Py:人生苦短,我要學Python。
Java老板:因為妳,大家的編程水平只降不升。Java開發人員學習Python只需幾分鐘。
二胎C:別說了,我相信大家在大學裏壹定都跟我學過。
老四C++:如果妳敢,讓Python學習者向我或老板學習。我不相信他能學會。學我的人基本都被我折磨死了。向妳的py學習只是分分鐘的事情,所以我可以繼續談論性能,如果我有能力的話。我好像記得知乎不得不推薦用go重寫系統,不僅僅是因為妳的效率。
老十圍棋:今天,我難得進入前十。什麽“人生苦短,我要學Python”顯然是指“2020年,我們壹起學圍棋”。
老Py:去妳的,妳是誰?另外我有cpython和Numba,可以提高運行速度。
Java老板:妳家老三有什麽資格在我面前說話?妳甚至不能很好地處理多線程和並發。妳不妨提出我的口號“OnceWrite,RunAnywhere”,寫壹次就到處跑。妳的第三個孩子有我強大的JVM嗎?
第三,Py:我可以使用Pyinstall鍵入壹個exe並在任何地方運行它,這意味著“編寫壹次並在任何地方運行它”。
爪哇老板:我很厲害,妳不知道。妳最好在mac和liunx上運行妳的exe。我還有壹個兒子科特林,我占據了應用程序市場。妳有APP市場,想當大哥嗎?是不是有點早了?
老三Py:我有kivy開發APP。
老二C老四C++:老三,妳怎麽不說用flutter開發壹個APP?
老Py:那是谷歌開源的UI工具包,不關我的事。
第二個子C和第四個子c++:Flutter的底層基於我們的開發。
老Py:我不在乎。反正現在大家都在學Py,我的市場也越來越大。我是老板。
二胎C:我是1972出生的,可以說是妳的長輩。Java在全球30億臺設備上運行,我不確定我是否是老板。妳哪來的勇氣?
第三Py:我是1991年出生的,但是Java是1995年出生的,所以我不是老板的長輩。
爪哇老板:老三說得對。老三想當老板。他很臃腫。他得先超過第二個。
二胎c:什麽?老三他連編譯器都沒有。壹個解釋器基於我的編譯器,他敢叫囂要超越我。他使用我的編譯器在底層封裝我的代碼。沒有我,妳不可能有劇本,動態語言就是動態語言。老板、老四和我哪壹個不是靜態語言,哪壹個沒有自己的編譯器?信不信由妳,我不會用我的編譯器讓妳從前十名中消失。
老三Py:躺下,爸爸,我錯了。別讓我從前十名中消失。
壹言不發,老八php哭了:php是最好的語言。
我想說的是。
Python這種語言只適合作為加分項,不適合作為技術支持。因為它不能編寫復雜的邏輯。只適合寫壹個爬蟲、計算器、記事本、Qt等小程序。Python已經超越了Java和C,這是不可能的。Python已經從老四超越了C++,這已經是壹個非常令人震驚的事件。
有些人可能不同意這壹點。Python為什麽寫不出復雜的邏輯?豆瓣和知乎不是用Python寫的嗎?
首先,豆瓣後端已經拋棄了大部分Python代碼,重新編寫。Youtube也正在被改寫。目前基於Python的網站只有知乎,知乎的推薦算法已經用go重寫了。
為什麽?不是因為Python的性能慢,而是因為Python的語法太悲劇了。或許Python簡潔的語法是初學者的優勢。因為初學者壹般練手,只寫1000行以下的小工具。Python的語法簡直太棒了,真的沒有缺點。
但如果妳真的嘗試用Python封裝幾十個類,寫壹個超過1萬行的東西,妳自然會明白它的語法問題有多嚴重。不僅僅是不舒服,而且無法編寫,維護成本太高。沒有靜態類型檢查是主要原因。能解決嗎?是的,良好的模塊設計和代碼審查可以避免壹些問題,但這將抵消Python可以帶來的快速開發的壹些優勢。
江湖上還是那句話。動態壹時爽,火葬場重建。Python不適合大項目,但仍然適合原型和早期項目。
要想混得好,怎麽能只知道壹件事呢?除非妳不想混得好,拼的是綜合素質。除非妳達到python的巔峰,否則Python可以在五分鐘內入門。Python的語法和英語完全壹樣。學Python的人真的覺得學Java很難。
如果按難度0-5打分,Python沒有難度指數0,php難度指數1,go難度指數2,Java難度指數3,C++/C難度指數4。靜態語言的難度比動態腳本的難度更大。如果妳編程零基礎,建議先學Python再深入Java。Python和Java基本處於市場頂尖水平。
阿裏是基於Java的,騰訊上輩子是C/C++誕生的。華為的主營業務是硬件,也需要C/C++的編程基礎。百度、Python、go和ruby用於字節反轉。
但是,如果妳想有更長遠的發展,學習python肯定是不夠的。個人認為最好是Java和Python都熟練掌握。如果妳想成為大神,那就加個C++,妳就無敵了。
@作者:潤森微信官方賬號:潤森筆記
這裏面有很多種,比如前端、後臺、嵌入式開發、全棧、移動開發等等。
比如前端開發語言有:HTML、CSS、JavaScript、HTML5、CSS3、JQuery庫、Vue框架、微信小程序等。後端開發語言有:PHP、Java、SpringBoot、Python、C、C++、C#等。移動開發的語言有:Android、IOS等。
太多了,java、C#、C、C++、html、javascript,
服務器端編程語言(Professional Hypertext Preprocessor的縮寫)......
現在最火的是python。對於許多程序員新手,或者剛剛轉行到IT領域的人來說,選擇學習哪種編程語言總是壹件令人頭疼的事情。畢竟,大多數初學者仍然缺乏相關的IT知識,對編程了解不多。
那麽這麽多編程語言,學什麽比較好呢?
Java 語言(壹種計算機語言,尤用於創建網站)
Java具有跨平臺、面向對象和泛型編程的特點,在企業中非常流行,廣泛應用於企業級Web應用程序開發和移動應用程序開發。
到目前為止,Java根據其應用分為三個部分:J2SE、J2ME和J2EE。三塊的適用範圍不同,但相輔相成。廣泛應用於個人電腦、數據中心、遊戲機、科學超級計算機、手機和互聯網,並擁有世界上最大的專業開發人員社區。
計算機編程語言
Python是壹種廣泛使用的語言,易於閱讀和維護,受到大量用戶的歡迎。由於其豐富而強大的庫(也稱為glue語言),Python極其易於使用,這主要是因為Python的文檔極其簡單。
Python?它的應用領域分為系統編程、用戶圖形界面、互聯網?腳本、組件集成、數據庫編程、快速成型、數值計算和科學計算編程、遊戲、圖像、人工智能、XML?,機器人編程等等。
壹個常見的應用場景是使用Python快速生成程序原型(有時甚至是程序的最終接口),然後將有特殊要求的部分用更合適的語言重寫,比如3D遊戲中對性能要求特別高的圖形渲染模塊,可以用C/C++重寫,然後封裝成Python可以調用的擴展類庫。Python是做服務器開發和物聯網開發的。
信息安全、大數據處理、數據可視化機器學習、物聯網開發、主要軟件的api和桌面應用都需要python。
服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
PHP(hypertext processor)是壹種免費且功能強大的服務器端腳本語言。它的主要目標是允許Web開發人員快速編寫動態頁面。同時,它也廣泛應用於其他領域,例如web開發和在HTML中嵌入,並受到web開發人員的歡迎。Wordpress、Digg和臉書都使用這種語言。
PHP的語法使用C、Java和Perl,簡單易學。目前,PHP已經得到了廣泛的應用,尤其是在web程序的開發中。壹般來說,PHP大多在web服務器上執行,用戶瀏覽的網頁是通過執行PHP代碼生成的。PHP可以在大多數服務器和操作系統上執行,並且使用PHP是完全免費的。
Java Script語言
JavaScript是壹種基於對象和事件驅動的客戶端腳本語言,具有相對的安全性。聽起來好像和java有關系,其實不然。只是壹個名字。
同時,JavaScrip也是壹種廣泛應用於客戶端Web開發的腳本語言,通常用於為HTML頁面添加動態功能,例如響應用戶的各種操作。JavaScript也可以用於遊戲開發。
js最廣泛的應用無疑是在web前端。簡單來說,網站向您發送壹堆各種標簽格式的文檔,js負責操縱這些文檔以實現壹些客戶端動態效果。js的版圖不僅如此,現在Node.js還可以用於服務器端開發。
GO語言
Go語言主要用於服務器端開發,其定位用於開發“大型軟件”,適合眾多程序員共同開發大型軟件,開發周期長,支持雲計算網絡服務。Go語言可以使程序員快速開發,它可以使程序員在不斷成長的過程中更容易維護和修改軟件。它結合了傳統編譯語言的效率和腳本語言的易用性和表現力。
Go作為壹種服務器編程語言,非常適合處理日誌、數據打包、虛擬機處理、文件系統、分布式系統、數據庫代理等。在網絡編程方面,Go語言廣泛應用於Web應用程序、API應用程序、下載應用程序等。此外,Go語言還可以用於內存數據庫和雲平臺領域。目前國外很多雲平臺都是Go開發的。
不過,總的來說,這只是壹個籠統的劃分,具體到每個人的興趣特點和編程特點,還有更細致的劃分。
根據主要語言的排名,目前流行的編程語言包括Java、C、Python、PHP、C++、C#、JavaScript、R、Go、OC、Swift等。不同語言的排名有壹定差異,但總體差異不大。判斷壹種編程語言是否受歡迎,壹方面要看整體用戶數量,另壹方面也要結合該語言的使用場景。盡管某些語言的整體用戶數量很少,但在特定的應用場景中(如OC)具有非常高的比例。