資深C++開發(fā)人員稱:Python是最佳的入門編程語言
譯文譯者 | 布加迪
審校 | 孫淑娟?
Phil Nash是C++測試框架的早期開發(fā)者之一,也是SonarSource的開發(fā)倡導(dǎo)者。他認為,尋找第一語言的新程序員和任何想往工具包添加另一種語言的人都應(yīng)該從Python入手。?
Nash告訴The New Stack :“選擇Python很乏味,但原因令人興奮。Python很容易入手,它正逐漸成為一種真正專業(yè)級的、非常流行的語言。我認為沒有其他語言能像Python滿足所有這些要求。”?
第一語言是Python還是JavaScript ??
那么,JavaScript作為第一語言有什么問題呢?Nash表示,JavaScript是不錯的選擇,但它從來就不是一種對初學(xué)者友好的語言。順帶提一下BASIC:這是80年代一種很流行的編程語言,全稱是“初學(xué)者通用符號指令”。它很簡單,但是它不是一種非常好的語言,所以人們不用它開發(fā)專業(yè)級應(yīng)用程序,直到微軟在90年代推出了Visual Basic。?
Nash表示,流行的Python卻不一樣,因為它用起來簡單,但隨著開發(fā)人員變得更有經(jīng)驗,就可以進而鉆研更復(fù)雜的用途,最終編寫出實際的應(yīng)用程序。Nash認為,JavaScript也相當(dāng)簡單,但更多的是純屬偶然,而非有意設(shè)計。?
他說:“JavaScript原本設(shè)計成另外的用途,無意中成為世界上最流行的語言,就因為它基本上與Web捆綁在一起。因此,JavaScript是一門值得學(xué)習(xí)的出色語言,但它對初學(xué)者來說并不友好。”?
另一方面,Python同時滿足了兩方面:對初學(xué)者友好,又很有用。?
Nash說:“它讀起來更像是寫在紙上的偽代碼,當(dāng)您勾勒出想法,它就會轉(zhuǎn)化成生產(chǎn)代碼庫中的實際工作代碼。沒有比這更適合初學(xué)者的了,它在工業(yè)中也得到了廣泛應(yīng)用。”?
他經(jīng)常在Python和JavaScript之間來回切換,這造成的最大困惑就是搞清楚要不要在行末加分號。?
他說:“這是JavaScript方面的問題之一,許多是可選的。所以分號實際上是可選的,除了在一些情況下它不是可選的。Python的信條之一就是應(yīng)該有一種正確的方式來做事。這并不總是正確的,但總的來說,它試圖設(shè)計事物,以便有明顯的方式來做事,即Python之道。一切看起來都很統(tǒng)一,JavaScript幾乎截然相反。”?
Python作為第二語言:您該費心嗎??
您可能會說,Python無關(guān)緊要。說到Web,如果您是前端/Web開發(fā)人員,JavaScript確實是王者。?
不妨考慮一下:Anaconda的開源PyScript在去年發(fā)布后,現(xiàn)在走向了前端。?
Nash說:“您還可以在后端將Python用作一種出色的Web技術(shù),我經(jīng)常這么做。它還開始顯示出前端語言的一番潛質(zhì),盡管還處于早期階段?,F(xiàn)在判斷它是否會流行起來還為時過早,但它確實存在,如果您已經(jīng)有Python技能,現(xiàn)在可以聲稱或認為自己是前端開發(fā)人員,至少如果您試水過的話。換成其他各種語言,恐怕不能這么說?!?/span>?
但是眼下對您來說太晚了,您已經(jīng)學(xué)過JavaScript或其他語言了。Nash認為,Python還是一種理想的互補語言。?
他說:“Python是一種很棒的腳本語言。它還有這方面的完整功能,因為它針對問題具有可擴展性。”?
Python的另一個差異化優(yōu)勢是,它是一種動態(tài)語言。因此,比如當(dāng)您聲明一個變量時,不必說它是什么類型的變量(數(shù)字、字符串還是布爾)。該語言根據(jù)您的使用方式來推斷,這點酷似JavaScript。對于Java或C++來說不是這樣,它們都是強類型語言。他補充道,動態(tài)語言通常對初學(xué)者來說更容易。?
“Python是一種動態(tài)語言,這意味著您可以在代碼中犯錯誤,這些錯誤只在運行時才被發(fā)現(xiàn),而靜態(tài)類型語言會在編譯時發(fā)現(xiàn)錯誤。許多人包括我自己通常更喜歡靜態(tài)類型語言,尤其是對于更龐大更復(fù)雜的代碼庫。Python現(xiàn)在有可選的類型注釋,帶來了很多好處,但前提是您使用額外的靜態(tài)分析工具。”?
他補充道,Sonar提供了一種靜態(tài)分析工具,可以發(fā)現(xiàn)所使用類型的不匹配之處,甚至在Python中也是如此。?
Python可以用作更復(fù)雜的代碼庫(比如C++)的友好前端。?
他說:“您可以用Python接口來包裝,然后就很容易據(jù)此編寫Python代碼。所以這是大多數(shù)機器學(xué)習(xí)庫所做的,比如它們實際上主要用C++編寫,處理底層的繁重工作,然后是漂亮的相對簡單的Python前端。它其實是優(yōu)秀的第二語言。如果要學(xué)習(xí)另一種語言,大多數(shù)開發(fā)人員在工具包中應(yīng)該有Python。”?
Python以其在機器學(xué)習(xí)中的應(yīng)用而聞名,它也是金融領(lǐng)域的一種流行語言,一方面是由于NumPy和量子計算,它們運用數(shù)學(xué)和統(tǒng)計方法處理金融和風(fēng)險管理問題。?
他說:“量子計算開發(fā)人員過去幾乎完全用C++處理工作,也許用MATLAB來畫草圖,然后他們會把代碼轉(zhuǎn)換成C++以提高性能。但有了Python和NumPy,他們發(fā)現(xiàn)實際上可以在一個軟件包中獲得所有內(nèi)容。他們的代碼看起來就像用MATLAB來編寫,但在底層執(zhí)行起來像C++。”?
開發(fā)人員對于Python需要了解的事情?
Web開發(fā)的后端有兩種主要的Python框架:Django和Flask。Nash使用Flask從事Web開發(fā)。?
他說:“Django更像是傳統(tǒng)的Web框架,您得用Django的方式做所有事。現(xiàn)在您基本上就是Django開發(fā)人員了。Flask在許多方面借鑒了Django,但不那么自成一體。實際上您可以引入其他依賴項,以自己想要的方式做事,我編程時就喜歡這樣。”?
他表示,網(wǎng)上還有無數(shù)教程和資源用于學(xué)習(xí)這些框架或與Python有關(guān)的知識。Python也已經(jīng)與基于Unix的操作系統(tǒng)(比如MacOS或Linux)一同出現(xiàn)在機器上。Windows系統(tǒng)可以添加它,只需簡單安裝。然后只要輸入Python,即可從命令行來訪問它。隨后它進入交互式外殼(shell),開發(fā)人員可以立即開始輸入代碼。它還可以通過IDE來訪問,比如PyCharm(面向Python的IDE),或者通過結(jié)合VS Code的插件。Python不是像C++或Java那樣的高性能語言,不過它也可以在這些編程項目中發(fā)揮作用。?
他說:“在性能不重要的應(yīng)用領(lǐng)域,Python通常是理想的選擇。或者您可以將它與高性能語言結(jié)合使用;很容易將它與C++實現(xiàn)對接,從而實現(xiàn)兩全其美。”?
原文標(biāo)題:??Veteran C++ Developer Says Python Is Best Starter Language??,作者:Loraine Lawson?