在介紹 Python 之前,我們可以瞭解為什麼要學程式,這將有助於初學者在學習過程上多瞭解自己的學習目標。現在就讓我們一起進入有趣的 Python 之旅吧!

為什麼要學程式

在我們的⽇常⽣活中電腦無所不在,小到手機,⼤到筆記型電腦。這些電腦都可以當作是幫我們打理日常事務的“私人助理”,並且不斷地詢問我們⼀個問題,就是“你(使用者)想讓我(電腦)下⼀步做什麼?”。而我們就會利用電腦懂的語言來撰寫”指示”,讓電腦來幫我們做事,簡單來說這就是程式設計的基本概念。

程式設計是一項極具創造性和有益社會的活動。為什麼這麼說,小到因為幫助別⼈或自己解決⼀個問題而獲得快樂,⼤到為客戶或公司解決⼀個困難的資料分析問題所獲得工作成就。無論原因是什麼,整個運算思維的過程都可以幫助你我解決日常生活非常多的事。

也因為如此,我們可以看到世界上許多有影響力的人都在倡導學寫程式的重要性。

讓我們來聽聽看美國歐巴馬總統及其它人世界名人為什麼重視要學寫程式。

President Obama asks America to learn computer science
What Most Schools Don’t Teach

如果你想學積木型程式設計,可以考慮 Scratch。如果你想要學習文字型程式設計,那你可以考慮 Python

什麼是 Python

Python 是全球最受歡迎的程式設計語言之一。在 1990 年代初期由 Guido van Rossum 建立,是一種流行而且功能強大的通用程式語言(非限定於特殊用途而設計),並且享有各種不同用途。從自動化重複工作、撰寫 Web 應用程式到建置機器學習模型並實作神經網路。其豐富且容易瞭解的語法,以及各種可用的開放原始碼套件 (常用的共用程式碼程式庫)供任何人使用,因此近幾年成為數據科學家人工智慧專家首選的程式語言。

Python 設計哲學非常強調程式碼的可讀性與簡潔的語法。我們可以從 Google Colab 或其他任何 Python 開發環境當中鍵入import this 並執行。

你將可以在輸出中看到下面內容,充分了解當初 Python 設計的哲學與定位內容。

The Zen of Python, by Tim PetersBeautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

什麼是程式語言呢?你可以將它視為是一種語言也是一種表達方式,主要用來和電腦溝通用。人類彼此溝通時講的叫做「自然語言」,例如中文、英文、日文等等。而我們要精確的跟電腦溝通則需要用「程式語言」

與電腦溝通的程式語言非常多種,除了 Python 外,像是 Java、C/C++、JavaScript、R、Go….等等都是各類型的程式語言。而 Python 優雅語法和動態類型,是大多數平台上不同領域程式編寫者和應用程序開發時的理想程式語言,也因此 Python 成為這幾年程式語言各類評比中的最佳選擇。

IEEE Spectrum 以及 TIOBE Index 程式語言排名

應該先學 Python 嗎?

如果你是程式設計初學者,或是想探究人工智慧、資料科學的愛好者,基於下面幾個原因,筆者會推薦學 Python:

  • 簡單易學
  • 大量框架
  • 大社群
  • 人工智慧、機器學習及資料科學選擇的語言
  • 高比例需求
  • 支援創客

除此之外,Python 的應用範圍也很廣,除了 AI 及資料科學外,網路爬蟲更是常見應用。

全球許多知名企業及資料科學家,也都紛紛投入開發。下圖簡單列出一些知名企業使用 Python 來擴大營運規模及競爭力。

在接下來的系列文章中,筆者將介紹 Python 的強大功能以及如何將這些功能組合在一起建立有用的程式。文章中將使用下面一些基本概念模式來建立程式。而這些結構不僅適用於 Python 程式,從低階的機器語言到高階程式語言也都適用。

  • 輸入(input):從“外部世界”獲取資料。例如從文件中或是某種傳感器(如麥克風或 GPS)讀取你要的資料。而筆者要介紹給初學者的輸入是來自使用者在鍵盤上輸入的資料。
  • 輸出(output)常見的是在螢幕上顯示程式結果或將結果儲存在文件中,亦或是將它們寫入揚聲器等設備來播放音樂或朗讀文字。
  • 順序執行(sequential execution)依照程式中的順序,依序執行相關語句。
  • 條件執行(conditional execution)根據某些條件,執行或跳過一系列語句。
  • 重複執行(repeated execution)重複執行一組語句。
  • 重複使用(reuse)編寫一組指令並為其命名,然後在整個程序中根據需要重複使用這些指令。

機器學習及資科學的最佳選擇

如前面所提,Python 是機器學習及資料科學家的首選。由於有非常多的函式庫 (libraries) 及模組 (modules)可以提供 Python 使用,因此在使用 Python 編寫你的機器學習演算法時,效果很好也特別輕鬆。

用於機器學習的 Python 函式庫

筆者簡單介紹一下這些重要的 Python 函式庫,做為未來學習的基礎:

  • Numpy:它是一個處理 n 維陣列的數學函式庫。在 Python 中。它具有驚人的功能,使您能夠有效地進行計算,例如,對於處理陣列(array)、字典(dictionary)、函數(function)、資料型態(datatype)和處理圖像(image)。
  • SciPy:SciPy 是數值演算法和特定領域工具箱的集合,包括訊號處理、優化及統計等等。SciPy 是一個在科學及高效能計算很棒的函式庫。
  • Matplotlib:Matplotlib 則是一個非常流行的繪圖函式庫,它提供 2D 繪圖和 3D 繪圖。建立在 Python 之上的這 3 個函式庫(Numpy、SciPy、Matplotlib)基本知識,適用於想要解決現實世界問題的數據科學家,或是進入資料科學領域的初學者,都會是一個很好的資產。
  • PandasPandas 是一個提供高效能且易於使用資料結構的高級 Python 函式庫。它具有許多用於數據導入、操作和分析的功能。特別是提供了用於數值表及時間序列上的資料結構與操作。
  • Scikit-learn:Scikit-learn 是 Python 程式語言的免費機器學習函式庫。它擁有大部分的分類、回歸和聚類演算法,而且它的設計可以使用 Python 數值和科學函式庫 (NumPy 和 SciPy)。使用 Scikit-learn 實現機器學習模型非常簡單。大多數需要在機器學習中完成的任務,通常幾行 Python 程式碼就可以實現。
  • TensorFlow:用於機器學習的端對端開放原始碼平台,由各種工具、程式庫和社群資源所組成,功能完善且彈性,可讓研究人員進一步發展機器學習技術,並讓開發人員輕鬆建構及部署模型。此機器學習框架,可以讓您在各種設備訓練和執行模型 (Model)。
  • Keras:使用 Python 編寫的深度學習 (Deep Learning) API ,可以在 TensorFlow 上面運行。Keras 是為人類而非機器設計的 API,其廣闊的生態系統是緊密連接 TensorFlow 2 生態系統的核心部分,涵蓋了機器學習工作流程的每一步。

Python 開發環境簡介

工欲善其事,必先利其器。開始進入 Python 之旅前,需要先了解一下常用的 Python 開發工具有哪些,然後挑選一個自己習慣或喜歡的開發工具。其實好用的工具蠻多,端看初學者的用途,這裡筆者先根據雲端開發環境與本機端開發環境介紹幾種常見的開發工具作為初學者的參考:

雲端開發環境:

如果你不想在自己的機器上安裝任何開發工具及套件,或是因為自己電腦運算效能不夠,那你可以考慮使用雲端開發環境。尤其是你可以將檔案存在雲端,只要電腦能上網,隨時隨地都可以學習與開發。

其中 Repl.it 是一種 IDE (Integrated Development Environment)的整合開發環境,不限定只有使用 Python,其它像是網頁開發(HTML/CSS)、 Java、C++等許多程式語言都可以在其環境上使用。

Google Colab 則是基於 Jupyter Notebook 的雲端開發環境,可以讓你透過瀏覽器編寫及執行 Python 程式碼,也可以進行資料分析及機器學習的工具,無須任何設定即可使用,並免費存取 GPU 等運算資源,是筆者非常推薦的開發環境,此「Python for Beginners」系列文章也將以 Google Colab 做為範例及專案說明環境,相關介紹可參考下面文章。

本機端開發環境:

本機端的開發工具非常多,其中 Jupyter Notebook 蠻適合初學者做為學習使用。Jupyter Notebook 是一個以 Web 為基礎的互動式程式開發環境,可支援各種程式設計語言,包括 Python。 Jupyter Notebook 廣泛用於許多數學模型、機器學習及統計分析,對於學習 Python 之後要朝向機器學習之路的學習者說,是一個很好入門的開發環境。

其它像是微軟的VS Code、PyCharm 及 Python IDLE 也都是安裝在自己本機端,並且可以根據自己需要來安裝相關套件,相關介紹會在後續文章與大家分享。讀者如果想要動手玩一玩這些開發環境,可參考下面文章,文中都有非常詳細的介紹。

經由本文介紹後,相信初學者對 Python 及開發環境應該有了基本認識,接下來我們將介紹一系列 Python 學習文章給有所有對 Python 有興趣的初學者。

如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s