古詩詞大全網 - 成語經典 - python背後是壹項科技運動

python背後是壹項科技運動

比較官方的說法,python是壹種解釋型語言,解釋型語言是指代碼壹行壹行的解釋執行,就好像有個 同聲傳譯 ,妳每說壹句話,他都能不間斷地給妳翻譯,把妳說的話(意指寫好的代碼)翻譯成機器能夠理解的語言。對於機器來說,這些翻譯後的語言就是機器語言,就是指令,機器收到指令後,就會根據指令執行對應的操作。

與解釋型語言相對的,有編譯型語言,編譯型語言則通過編譯器先將代碼翻譯成機器語言,再交給機器去執行。舉個例子,我方主持了壹個會議,參會的分別有英國人、俄國人和西班牙人,他們三方都帶了自己的同聲傳譯。假如是解釋型語言呢,我在開會的時候用壹種每個同聲傳譯都聽得懂的的語言,也就是壹種官方用語。這樣我可以不間斷地用這種語言來做交流,因為這些翻譯人員都會為這三國參會人員同步翻譯成目標語言,妳應該也註意到了,解釋型語言類似於壹種通用的語言。而如果是編譯型語言呢,我會讓我這邊的3個翻譯人員將我的壹份中文演講稿,分別翻譯成英文版的、俄文版的和西班牙語版的,在開會的時候,我只要交給參會的國際友人去翻閱就好了。解釋型語言側重的是壹種通用的、能夠實時解釋翻譯的特性,而編譯型語言側重的是有針對性、提前準備的特性。然而,在開會的時候,解釋型效率是沒有那麽高的,因為需要同聲傳譯消耗時間去做翻譯,而編譯型的效率會高些,因為翻譯工作已經在開會前做好了,只需要參會人員理解並且執行就好。

1989年的聖誕節,荷蘭程序員Guido van Rossum( 吉多·範羅蘇姆 ,以下簡稱吉多)在家休假無聊,為了打發時間,他開發了壹種新的解釋型語言。可見,該程序員無聊的時候,就是寫代碼。因為作者非常喜歡 Monty Python's Flying Circus (巨蟒劇團之飛翔的馬戲團,這是英國的壹個電視喜劇),就拿python作為這個新語言的名字。我想大家不壹定都知道這部喜劇,但是可能都聽說過python,可能微信在幾天前給妳推過python相關的培訓廣告,可能壹些學校已經將掌握python基礎概念作為壹門選修課,可能妳的智能家居裏的操作系統有壹部分核心代碼是用python實現的,可能妳的手機裏有壹個插件也是用python實現的,python現在的應用範圍非常廣泛,功能也非常強大。

吉多之前在 荷蘭數學和計算機科學研究學會 上班,在那裏,他為ABC編程語言工作了好多年。 ABC語言長這樣的

這是壹個函數,妳也許看不懂,根據英文單詞,或許可以大概猜出點什麽。這裏只想讓妳知道,python也差不多長這樣,相比較會更容易理解些。

ABC雖然是壹門編程語言,它的定位是作為教學或原型設計的工具,是專門為學校老師或者科研人員設計的。ABC的定位決定了它受眾不是很廣泛,並且它也有使用門檻,對計算機不了解的人,沒有經過壹段時間的學習,可能根本就上不了手。所以,ABC並不能作為壹門通用的編程語言,在業內也無法獲得成功。雖然說ABC沒有python那麽成功,但是ABC可以說是"the mother of python",作者在很多地方都借鑒了ABC,取其精華、取其糟粕。現如今,python是長這樣的

可能對於沒接觸過編程的人來說,它們兩不都是壹樣的,不都是壹堆英文字母麽,我都看不懂。但是對於初學計算機課程,那些需要學習C語言的人來說,python相比較算是更容易理解了。python非常簡短,壹些復雜的流程,在C語言中,可能需要幾十行代碼,但是在python中,可能就只需要幾行代碼。當然不同的業務場景,可能不是這樣的,但是普遍情況下,用python的開發效率是非常高的。python適合快速開發,適合產品快速叠代出新。

1999年1月,也就是語言面世的10年後, 吉多 向DARPA(Defense Advanced Research Projects Agency,美國國防部壹個負責科研的下屬機構)申請資金。我去翻了下該申請的修訂版,修訂版在1999年8月份提交,修訂版比第壹版內容更具有概括性,並且內容翔實,條理清晰,值得翻閱。

該修訂版叫 Computer Programming for Everybody ,直譯過來,就是針對每個人的計算機編程,翻譯為通俗易懂的詞——人人編程,人人編程是壹種 社會 現象,每個人都有壹定的編程能力,並且對計算機有壹定的認識,了解軟硬件是怎麽運轉起來的,了解壹些軟硬件的設計規範,能夠通過編程來表達自己的想法,能夠通過編程來配置自己的軟件,通過編程來控制自己的機器,以改善自己的生活。舉個例子,妳在某寶買了壹個掃地機器人,該機器人支持定義打掃路線,支持設置掃地機器人在需要更換掃把的時候,指示燈顯示指定的顏色。妳知道掃地機器人可以做什麽,有什麽操作習慣,這是基於妳對壹些機器的理解,如果妳用過很多軟件,或者參與過軟件的設計,妳大概都知道壹些軟件可能都有“設置”、“編輯”或“幫助”等菜單鍵。這種設計思維,或者操作習慣,都是很多軟件都有的,有了這種認識之後,妳面對很多同類型的軟件、或者同類型的產品,就大概能夠知道從那裏入手,以及對它有什麽功能,都有壹個初步的期待或者認識。既然大家都了解計算機了,那麽計算機的壹些概念或者說是理念,可以說是屬於常識的壹部分,面對壹些計算機或者說智能設備,也大概知道從哪裏上手使用。我覺得這就是作者要達到的願景。

該修訂版主要有幾個目的:

在這裏,他想從推廣python開始,因為python作為壹門適合快速開發的工具,既適合專家,也適合初學者,同時python有壹個活躍的且不斷增長的用戶群體,這個用戶群體對他這個申請也非常感興趣,願意為之努力。python的用戶數多,說明已經在市場得到了壹定的認可,並且這個用戶群體也願意為python的發展做貢獻,這對於壹門編程語言來說,最好不過了。

該提案的 基本論點 部分寫得很好,他說他想普及計算機應用,但並非通過介紹新的硬件,或者新軟件這種形式,而是通過賦予每個人編程能力來實現。信息技術的發展給了人們各種強大的計算機,它們以桌面電腦、筆記本電腦或者嵌入式系統的形式存在,如果用戶在軟件設計和實現上有壹個通用的認知,那將會極大地促進生產和創造,並且對未來有深遠的影響。試想壹下,如果妳有壹種修改和配置軟件的能力,並且妳可以把妳的修改通過社區網站分享其他人,其他人碰到同樣的問題的話,就可以參照妳的方法。這種能力在緊急的情況下是很重要的,妳不必等專家來給妳解決問題,妳自己就可以嘗試解決這些問題。說到這裏,妳有沒有想起貼吧,或者論壇,論壇有很多個板塊,不同的領域分不同的板塊,假如妳想root手機(手機越獄,指解除手機廠商的限制,獲取手機的用戶最高權限,以實現對手機的某種控制),妳可以到論壇上root板塊找答案,這種形式可謂跟吉多提到的是壹樣的。如果妳對妳的手機或者電腦有更深入的了解,妳可以通過編程改善妳的輸入法,或者改變妳的顯示器冷暖色等等,這些都是對妳生活有幫助的。吉多在這裏就是想達到這種狀態,簡單點說,人人都對計算機有壹定的了解,且都有處理計算機問題的能力。

為了實現這個目標,作者制定了5年計劃,這個5年計劃如下:

5年計劃循序漸進,由淺入深。1999年3月,美國國防部對此進行了回應,同意撥款給他。作者的5年計劃在1999年底開始實施,雖然想推進5年,但是只收到1年的資金支持。不過,作者還是沒有放棄這個項目,壹直推進,直到他不再參與python的工作。當時美國國防部對他們提供了多少資金呢,我沒看到官方公開的數據。2013年有報道稱,DARPA向Continuum Analytics提供3百萬美元的支持,讓該公司給python開發數據處理以及數據可視化工具。具體數字是否可靠,這個尚不清楚,但管中窺豹,可見美國國防部對該項目表示認可,並提供了資金支持。Continuum Analytics有壹個比較有名的工具,叫Anaconda,Anaconda可以理解為是python + 各種科學計算庫的工具箱,Anaconda官網有這麽壹句話

翻譯為“Continuum Analytics的Anaconda是使用python的、領先的開源科學計算平臺,我們賦予那些正在改變世界的人超能力。”

在查資料的時候,我發現了壹個wiki論壇, 該論壇對該項目進行了評價,論壇列出了該項目成功的地方和失敗的地方,以及壹些 社會 人士的看法。論壇這樣總結道,這個項目成功的地方在於:

這個項目失敗的地方在於:

回想自己初學python的時候,我覺得這個總結是很公正的。python確實容易入門,有編程基礎的人可能只需要壹個星期就能掌握python的壹些基本語法。相比C語言,python對於初學者是很友好的,很容易讓人上手。但是,要深入理解python,並沒有這麽簡單,需要花很多時間去磨練。接手壹個使用python的項目,妳需要花壹些時間精力去熟悉,去摸透裏面的邏輯,這對於初學者來說,是無法避免的。 對於壹個程序員來說,作者能想象到以後計算機的普及應用,以及用戶的認知水平,還有他能夠做什麽,通過什麽來實現,能有這些遠大的抱負,這是非常不容易的。西方世界經常說到“change the world,make the world a better place”,作者也確實做到了,他設計的python在計算機世界裏扮演者壹個非常重要的角色。如果通過 科技 能夠改變世界,那麽python就是改變世界的其中壹步。1980-2000年,美國對 科技 公司是政策扶持、技術擴散,這期間湧現了如IBM、HP、思科等 科技 公司,大家熟知的微軟和蘋果都是在這期間上市的。python可以說是這個 科技 運動的壹個縮影,在 科技 浪潮的推動下,python得到了長足的發展。

很多 科技 或工業相關的網站會根據當年編程語言的流行度做下排名,它們會列出當年在業界最受歡迎的編程語言。其中,IEEE Spectrum 和 TIOBE 的2021年度編程語言是python,如果我還沒記錯的話,TIOBE的2020年度編程語言也是python。可見python是非常受歡迎的,用現在的話講,就是“網紅”編程語言。現在,很多計算設備上都有python的身影,小到智能家居、手機、智能手表,大到鋰電車、工控車床、甚至航天飛機都有python的身影。妳可能在瀏覽網頁的時候,右下角彈出壹個“7天python入門”的廣告,可見python現在還是有很多需求,因為有需求,所以才有人去投廣告,才會有人去找培訓機構。

作者在給美國國防部的提案中寫到,他想跟高中或大學展開合作,設計壹些python的課程,針對不同年級,設計不同水平的課程。現在來看,他確實是做到了,現在哈佛、密歇根大學等排名靠前的大學,都有python課程,python在這些大學的CS(計算機科學)課程中應用非常廣泛,可以說是作為CS導論的壹個教學工具。在壹些比較高級的課程,比如數據科學、人工智能等都可以看到python的身影,這是因為學術界以及工業界為python提供了壹些處理科學計算和大數據的工具,這也歸功於美國國防部的支持。美國有許多編程夏令營,針對不同年齡段有不同的課程,並且也有許多支持python代碼的編程競賽。Google在coursera上有壹個面向初學者的課程,該課程叫 Google IT Automation with Python,完成課程大約需要 8 個月,課程建議每周花5小時學習,課程結束後就可以獲得Google頒發的證書。可見,不管是工業界,還是教育界,都對python有不同程度的支持。這裏打個岔,第壹版的Google搜索引擎還是用python寫的,作者也在Google工作了壹段時間。

現如今,每隔壹段時間,就有壹個PyCon活動,這個活動匯聚世界各地的開發者,每年都有開發者來展示他們使用python的成功案例,或者表達自己對python的新功能或者缺陷的看法。可見,python用戶社區壹直都是很活躍的。這讓我想到了某新能源 汽車 ,該 汽車 用戶有很高的粘性,有壹位車主跟我說過,他們有壹個微信群,裏面有該新能源 汽車 的高管,很多車主樂意在裏面指出問題,或者提建議,因為這些高管會對問題或者建議做出相應的反饋。用戶願意提意見,產品經理願意廣開言路,采納多方建議,實屬不易。python社區也差不多如此。

幾年前,妳是否看過壹個新聞,《人工智能“網紅”編程語言Python進入山東小學課本》,這是2017年澎湃網的壹則新聞,裏面講了python進入了山東省小學六年級教材,作為壹門“網紅”編程語言,它是否適合低齡學生,這個倒是沒細說,但是可見國內有些地方是把編程作為壹種比較基礎的能力來考量。python往低齡階段滲透是否合適呢,我在翻資料的時候瞥到韓國高麗大學的壹篇論文,論文講述小學生在學習python的過程中會碰到壹些困難,比如經常少打了壹些括號,經常拼錯單詞,經常碰到語法錯誤,以及對這些現象的看法。還有,南京師範大學有壹篇報道,講述了中學生學習在學習python時,采用面向問題的學習模式,我理解是case by case的教學模式,這種模式有利於學生培養學生的計算機思維,以及幫助他們理解壹些計算機相關的概念,解決計算機相關的問題。

python是否適合低齡學生呢,我覺得這個是值得討論的話題。最後還要問妳壹句,妳會讓妳的小孩學習python麽,從什麽時候開始學呢?妳的娃因為不知道打多少個括號嚎啕大哭時,妳能幫得上忙麽?妳到時候需要專門請壹個程序員來給妳的娃做家教麽?

puterworld.com/article/2711690/python-gets-a-big-data-boost-from-darpa.html

/?ComputerProgrammingForEverybody

/en/publications/an-analysis-of-the-difficulties-of-elementary-school-students-in-

/2016/04/kings-day-speech.html

/intv/guido.html

/jfimg/colimg/upload/20200113/68981578882847978.pdf