近年爆紅的程式語言之一 Python 程式語言,每個人對它的認識與憧憬,以及學習或開發目標皆不盡相同,坊間無論是線上線下都出現了許多學習資源,往往造成真正想學習的人迷失了方向,更是有許多半路出家的人多走了許多冤妄路,浪費了許多時間,我們都明白,因此,我們希望透過更直白的方式,讓大家一覽 Python 程式語言的學習藍圖及歷程。
為甚麼要學 Python?自 1994年正式發表至今超過 20多年,已經遍佈各重要科技趨勢當中,如:數據分析、IOT 軟硬整合、人工智慧、機器人開發等重要領域,事個不可或缺的重要語言,如今更是開發出多種資料庫及套件廣泛應用在雲端服務平台上;現今使用 Python 為後端重要程式語言的新創企業如 Pinterest、Uber、instagram、Youtube 等(參考文章),Python 語言近年更是興起成為全球最高薪的程式語言之一(文章:中文 / 英文),透過絕佳的跨平台支援性,在不同尺寸、系統設備上,操作同樣的語言環境,更是普遍使用在大數據與資料分析的領域,在全球軟硬體開發領域具有舉足輕重的地位。
Python 程式語言的特色:
- 數據分析領域通用語言:簡單且強大。
- 語意認識易讀和易撰寫:直白且清楚。
- 各類領域應用功能強大:應用且多元。
- 跨平台應用且容易擴充:易整合學習。
本次課程活動:連結
- Python 可以作甚麼?
- Python 學習地圖是甚麼?
- Python 各階段學習目標與時間性?
以下內容為經由課程隨堂筆記和上課簡報的重點彙整。
- 程式開發常見工作職位:(和 Python 無關,軟體開發領域慨況)
- Front-End Developer(前端開發)
- Backend Developer(後端開發)
- Blockchain
- IOT
- App Developer(App 開發)
- Android
- iOS
- Data Analyst(資料分析)
- A.I. Engineer(人工智慧工程)
- 各領域專業分工解析:會特別解析跟 Python 有關部分。
- Front-End Developer(前端開發):並無與 Python 直接相關。
- 視覺與網頁切版:HTML、CSS
- 互動式網頁:JavaScript
- Backend Developer(後端開發):與 Python 有關,談到後端亂成一團,學 Python 有機會幫公司架設出一個網站,例如:電商網站。具有 Python 初階程度能有基本工作條件,但需要看很多面向,首先會需要考慮你的「程式語言」,Python 是其中一個選擇,選完會有需要學習對應的「框架」,接者是選擇「資料庫」,再來選擇「雲端服務」,如果選擇後端開發就要學習雲端服務。後端工程師需要把這整串學起來,最後才是選擇「延伸性領域」。
- 程式語言:Python、PHP、Java ...
- 框架:Flask、Django、Laravel …
- 資料庫:PostgreSQL、MySQL、MongoDB …
- 雲端服務:AWS、GCP、Azure …
- 延伸領域:Blockchain、IOT
- App Developer(產品開發):並無與 Python 直接相關。
- Android:Java、Kotlin
- iOS:Swift、Object-C
- Data Analyst(資料分析):早期學習資料分析,數學能力非常吃重,如果想要長期發展,遲早都需要具備數學能力,大多數據分析工具都跟 Python 有關,Python 是一個很老的程式語言,但因為近年大數據,使資料分析成為很重點的部分。
- Data Collection:
- Crawler - BeautifulSoup
- Database - SQLite, MySQL
- Data Analysis:
- Pandas
- Data Visualization:
- Matplotlib
- Tkinter
- Data Collection:
- A.I. Engineer(進入人工智慧開發):第一個就是深度學習,人工智慧發展蠻久了,但直到 1998 年,那年發生 IBM 電腦在西洋棋界擊敗世界冠軍,當時是人工智慧的高峰,接著是低谷,研究上幾乎沒有突破,以前當說要走 Ai 領域的人都會被笑,因為根本沒有發展,直到2016年 AlphaGo,在圍棋領域把人類幹掉;AI 這件事情要做的好,需要很多基礎訓練,職位也不多,公司要找工程師都要找資深,薪水十萬以上的價碼都有可能,學習歷程相對較長,要有心理準備,但在 AI 領域 Python 是大家較長使用的語言。
- Math
- Linear Algebra
- Statistics
- A.I. Fundamental
- Artificial Neural Network
- Convolutional Neural Network
- Python based A.I. Library
- TensorFlow
- Keras
- Math
- Front-End Developer(前端開發):並無與 Python 直接相關。
- Python 學習方式建議:
- 基礎語法與套件使用:*實體課程、線上課程
- 專案練習:*跟著老師完成微小專案
- 獨立完成可用的專案:*最關鍵點是沒人幫得了你,老師也幫不了,重點在於你的解決能力,你必須練習解決問題的能力。這是很難去訓練學生,前半年我感受最深的事情,每周花費40-70小時,一到兩個月完成。學生在這種環境中是能練得起來,有很好的環境跟同儕,去年我去Appworks School,學生一個星期要花70小時,真的是這樣,我進去半年真的是這樣,從早上寫到晚上,寫不完週末繼續,這是一個過程,這樣的訓練很難去實現它在於我收費,如果我收了錢就很難堅持我的立場,但這樣的操作模式資金的投入很大,公司不在乎賠錢,但實際是有效果的!各位如果有機會這個點上有人推你前進,但在商業上很難像Appworks School 不收費這樣做,覺悟很重要,你要花很多時間投入進去。
- 當你卡死的時候,是多數人遇到的狀況,一開始好像會了,真正的難的是後面遇到困難很容易放棄。
- 如何成為一名 Python 軟體工程師:
- 程式語言:入門第一站。
- 熟稔基本語法和運作邏輯:能正確追蹤程式。
- 能解決定義明確的問題: 例如,給一個數字,判斷是否為質數;從檔案中讀取商品資料,並計算平均售價。
- 能寫出乾淨的程式碼(請參考底下:本次課程資源)
- 軟體架構:此階段重視模組化、重構程式的能力。
- 能應用第三方套件或框架:BeautifulSoup、Pandas、TensorFlow。
- 深入理解第三方套件或框架:類神經網路。
- 能開發客製化的套件或框架。
- 電腦科學:軟體工程師共同的核心能力
- 數學:離散數學、線性代數、統計
- 系統架構:作業系統、計算機組織、網路概論
- 資料結構與演算法。
- 完整發展視野:(請參考底下:本次課程資源 -> 完整簡報)
- 程式語言:入門第一站。
- 當初階工程師面試時需要在意的事:
- 技術能力:*履歷與作品集或經歷,技術是需要被證明,薪資也是從上面有定論。
- 誠實與自覺:*聊天的形式,面試完立刻打分數,分三種:錄取、可以走了、放中間之後回來看。誠心誠意很重要,不希望裝出來。
- 溝通能力與適性:*面試官在找未來的同事。
- 現場問與答
- Q:資料分析上使用 R 跟 Python 的差異: A:R 只用在資料分析上,Python 有很多應用。
- Q:Python 跟 SQL 有啥關係? A:兩者都是一個獨立的東西,程式語言挑一種搭配 SQL,Python 是把 SQL 命令下給資料庫。
- Q:什麼是資料分析? A:你如果學了 Python,就可以撈取資料與分析,甚至可以做成圖表。把關鍵字都學到一個程度,可以把整套做出來。
- Q:坊間有相關 Python 金融預測分析預測實作類似課程,我是不是學這個就夠了,因為我之後也並不會做這相關我只是需要知道此功能。 A:如果就只需要使用在某領域而已,是可以的,但是要更多發展學習 Python 是不夠的。
- Q:Python近幾年很紅是為什麼? A:最近因為大數據領域的崛起,導致 Python 開始紅起來,因為都跟 Python 有關。
- Q:我不是技術背景,感覺自己要寫一個網站是非常困難,當想要解決問題去用 Excel,光學 Python 是可以解決這個耗時耗工的方式? A:團隊的員工會寫一點程式,手上其實有很多Excel資料,用 Python 就可以分析,用程式自動化展現出來就是個有用的事情,但可能不會是像學習 Excel 這麼容易就是了。
彭兆蔚 - 彭彭:台大心理系、台大資工所畢業、美商昇陽 (Sun Microsystems) 校園大使、資策會軟體工程師、Tomofun 網站工程師、網頁多人線上遊戲開發、Piconion 影像處理軟體開發、類神經網路、人工智慧教學展示、COSCUP 2010、JSDC 2017 講師、iThome Modern Web 2016 - 2018 講師、世新大學、十年創業經驗;講師相關學習資源。
- 完整簡報:連結
- 閱讀書籍:如何寫出乾淨的程式碼 Clean Code
- 課程照片:連結