Introduction
2022/08/18
說明:
本文首先介紹了 Python 得名的由來 [1] - [5]。其次依序介紹 Python 的三大特色(慢、膠水語言、大量的函式庫)[6] - [19]。最後是結論 [20] - [22]。
-----
https://pixabay.com/zh/photos/snake-python-serpent-scales-543243/
-----
◎ Monty Python's Flying Circus
一、Slow
二、Glue Language
三、Libraries
◎ Conclusion
-----
◎ Monty Python's Flying Circus
Python 的設計者 Guido van Rossum 說,他選 Python 為名是因為有點想搞笑,因為他是 Monty Python's Flying Circus 的鐵粉 [1]。Monty Python's Flying Circus,是一系列的 BBC 喜劇節目,也是團體的名字 [2]。
最早 BBC 的主管視他們六人為馬戲團,不過他們加了飛行,變的像是第一次世界大戰的飛行中隊。然後是 Python、一種黏黏的、滑滑的東西。蒙提派森(美式發音的話要讀成派三)聽起來像是消遣蒙哥馬利將軍。所以,Monty Python's Flying Circus 並不是一個「馬戲團」,而 Python 確實暗指大蟒蛇(黏黏的、滑滑的)。
程式語言或許可以被視為正式的、重要的、神聖的事物。但 Guido van Rossum 特地把它跟 Python「黏黏的、滑滑的」聯想在一起,顯的不大莊重 [3] - [5]。我不知道你會想到什麼,不過我是想到膠水就是了。嗯,Python 會在全球持續大受歡迎,很大的一個原因,就是膠水語言。當然,膠水語言不是只有 Python 一個,不過 Python 是一個「簡明」的膠水語言。
-----
Python 有好的跟不好的特性 [6]。其中最突出的三點是:慢、膠水語言、與大量的函式庫。 [7]。
一、Slow
Python 慢 [8] 的原因主要是「運算」[8] 與「記憶體的運用」[9] 都沒有效率。更深層的原因,則是 Interpreter 與 Compiler 基本上的不同 [10], [11]。
以簡單的加法為例,C 只需要 4 個步驟,Python 則需要 12 個步驟 [8]。
再以同一筆資料 [0, 1, 2],Numpy 的 array 只需要 4 位元組,Python 的 list 則需要 80 位元組 [9]。
-----
Fig. 1. 運算與記憶體的運用。
-----
Fig. 2. Interpreter 與 Compiler 基本上的不同。
-----
二、Glue Language
[12] - [15]。
-----
三、Libraries
Python 擁有大量的函式庫,最基本的有 Numpy(SciPy)、Matplotlib、Pandas、scikit-learn 這四種,可以號稱四大天王。在學習的順序上,Matplotlib 可以先學,畫圖出來,比較容易有成就感。其次是 Numpy 的陣列與 Pandas 較複雜的資料結構。最後是 scikit-learn 的機器學習 [17]。參考圖三。
若要進一步,還有與 Pandas 同樣歸類於統計的 statsmodels,影像處理的 scikit-image,自然語言處理的 NLTK 等等 [16]。參考圖四。
如果還想瞭解更多,有 30 個跟 347 個,兩篇文章,可以參考 [18], [19]。
-----
Fig. 3. Connections between Python, Numpy, Scipy, Matplotlib, Pandas and scikit-learn [17].
-----
Fig. 4. Connections between Python, Numpy, and other libraries [16].
-----
◎ Conclusion
Fig. 5. Success of Python.
Python 是簡明的膠水語言。
一、Python 雖然慢,但因為它簡明,以及易與 C/C++、Fortran 整合的膠水語言特性,經由 Numpy 大致解決了「慢」的問題,是 Python 成功的第一步。
二、Python 與 Perl 同為膠水語言,但由於 Python 簡明的特性,比起不易閱讀的 Perl 來說,更容易開發函式庫。Python 在 Numpy 的基礎上,加上 Scipy、以及 Matplotlib,已經快可以與 MATLAB 並駕齊驅了。
三、Python 與 Julia、Lua 等同為膠水語言,但 Python 在 Numpy、Scipy、Matplotlib 的基礎上,又開發了 Pandas、scikit-learn、以及非常非常多的函式庫。在「擁有大量函式庫支援」這一點上,Python 又勝於 Python 以外的膠水語言。
以上三點,大致說明了 Python 在一堆膠水語言中,勝出的理由 [20], [21]。
-----
Appendix. A. Python
「I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).」[1]。
-----
Appendix. B. Monty Python's Flying Circus
「The words "Monty Python" were added because they claimed it sounded like a really bad theatrical agent, the sort of person who would have brought them together, with John Cleese suggesting "Python" as something slimy and slithery, and Eric Idle suggesting "Monty". They later explained that the name Monty "...made us laugh because Monty to us means Lord Montgomery, our great general of the Second World War".」[2]。
-----
Appendix. C. Irreverent
「not showing the expected respect for official, important, or holy things」[3]。
「The meaning of IRREVERENT is lacking proper respect or seriousness; also : satiric.」[4]。
「If you describe someone as irreverent, you mean that they do not show respect for people or things that are generally respected.」[5]。
-----
References
# Python
[1] Foreword for "Programming Python" (1st ed.) | Python.org
https://www.python.org/doc/essays/foreword/
# Monty Python's Flying Circus
[2] Monty Python's Flying Circus - Wikipedia
https://en.wikipedia.org/wiki/Monty_Python%27s_Flying_Circus
# irreverent
[3] irreverent中文(繁體)翻譯:劍橋詞典
# irreverent
[4] Irreverent Definition & Meaning - Merriam-Webster
https://www.merriam-webster.com/dictionary/irreverent
# irreverent
[5] Irreverent definition and meaning | Collins English Dictionary
https://www.collinsdictionary.com/dictionary/english/irreverent
# What is Python (slow、glue language、libraries)
[6] What is Python? Powerful, intuitive programming | InfoWorld
https://www.infoworld.com/article/3204016/what-is-python-powerful-intuitive-programming.html
# slow、glue language、libraries
[7] 利用 Dask 讓 Python 資料科學進入企業就緒狀態 - NVIDIA 台灣官方部落格
https://blogs.nvidia.com.tw/2021/01/19/making-python-data-science-enterprise-ready-with-dask/
# slow
[8] Why Python is Slow: Looking Under the Hood | Pythonic Perambulations
http://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/
# memory
[9] Difference Between Python List and NumPy Array | by Leonie M Windari | Python in Plain English
https://python.plainenglish.io/python-list-vs-numpy-array-whats-the-difference-7308cd4b52f6
# Compiler vs Interpreter
[10] Language Processors: Assembler, Compiler and Interpreter - GeeksforGeeks
https://www.geeksforgeeks.org/language-processors-assembler-compiler-and-interpreter/
# Compiler vs Interpreter
[11] Compiler vs Interpreter vs Assembler - IP With Ease
https://ipwithease.com/compiler-vs-interpreter-vs-assembler/
# glue language
[12] programiz: Glue Language
http://thissa1982.blogspot.com/2014/06/glue-language.html
# glue language
[13] Babel Facilitates Language Interoperability
https://software.llnl.gov/Babel/docs/users_guide/index003.html
# glue language example
[14] Why call python a glue language
https://sourceexample.com/article/en/0fa39fb4a46470d3be4c5e011f71af03/
# glue language example
[15] python膠水語言實例_膠水語言概述(以Python為例)_weixin_39672680的博客-CSDN博客
https://blog.csdn.net/weixin_39672680/article/details/110398447
# libraries
[16] 15年! NumPy論文終出爐,還登上了Nature | 機器之心
https://www.jiqizhixin.com/articles/2020-09-17-13
# libraries
[17] Numerical Programming with Python | Numerical Programming
https://python-course.eu/numerical-programming/
# libraries
[18] 年度盤點,30個開創性的Python開源項目-你都用過哪些?
https://twgreatdaily.com/A1v0728BjYh_GJGVuKuo.html
# libraries
[19] 資源推薦|347個Python開發經典資源推薦(42類) - 每日頭條
https://kknews.cc/zh-tw/code/kyaxror.html
# 總結
[20] 為什麼只有python成了膠水語言?
https://www.juduo.cc/club/1107574.html
# 總結
[21] Python是唯一被稱為“膠水語言”的編程語言? 事實並非如此! _騰訊新聞
https://new.qq.com/rain/a/20200721A0M5V300
# 總結
[22] Advantages of Python over Other Programming Languages | Vilmate
https://vilmate.com/blog/python-vs-other-programming-languages/
-----
Python Machine Learning(目錄)
https://mandhistory.blogspot.com/2022/05/python.html
-----
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。