2018年12月25日 星期二

未完待續的JavaScript

昨天結束了兩個多月的 JavaScript 課程,完成網頁前端頁面初探。

整體來說,一開始接觸前端,覺得是工匠式的工作,網頁設計師給個樣版,工程師盡可能仿做出100%的相似度;但後期發現前端要做得好,重點還是在於「動態」的設計,而動態設計就需要很好的程式語言邏輯,如何將想呈現的效果拆解為電腦運作的語法,這才是一決高下的關鍵。

綜合來說,我個人覺得一個好的JavaScript程式設計師,要具備清晰的邏輯、創意的思考方式、以及不錯的美學基底。不是一份簡單的工作。

而此次課程的小插曲是,申請了AppWorks School的課程。儘管最後仍是婉謝了校方的邀請,但也幸虧有這個插曲,讓我完成了個人網頁 ,並好好檢視這半年來的學習歷程,覺得自己真的是對程式語言這個領域頗有興趣,未來也希望繼續朝此方向前進。

寫程式語言的過程著實很燒腦,自己也不是那種半夜想到一個idea就跳起來coding的狂人,但寫程式一直給我一種安穩合理的感覺,而且常常讓我寫到忘了時間流逝。

辦理這次的課程,其實是個任性的決定,卻讓我有滿滿的收穫。很謝謝這次邀請的彭彭老師,不只指導我程式語言的撰寫、也像是個有歷練的好朋友,給了我很多想法和建議,未來希望也能再跟著老師學習。


2018年11月23日 星期五

關於語法的兩個新體悟

學了一個月的 JavaScript,可能因為有 Python 的底子,整體而言還算能上手。彭彭老師在教課時提到兩件事,我漸漸可以體會。

第一件事,程式語言要能上手,就是要學著用簡單的方式想事情。人腦很聰明、直覺的運作很快,但電腦的做法是把事情拆解成小塊小塊,再用土法煉鋼但飛快的速度組裝起來。

以某次課堂的作業為例:「給定一個正整數,求出最接近其平方根的整數。」以 23 這個正整數為例,直接用大腦想的話,答案轉瞬就跑出來了。但電腦就是要求你一步一步地將腦中瞬間浮現答案的過程好好寫下來,個人覺得非常接近建構式數學的邏輯。所以程式語言的解法就是,先從 1 開始做平方,逐步檢視哪 2 個數字的平方數值剛好把 23 夾住,再計算出 23 跟這 2 個數字平方哪一邊的差距較小,答案就是那個數字(以這題為例,23 會落在 4 的平方 16和 5 的平方 25 之間,而 23 較接近 25,因此答案就是 5 )

不知道為甚麼,我自己很欣賞這種樸實的推論過程,用簡單清楚的邏輯想事情,這樣很好。附上解題的程式語言如下:


第二件事情是,寫程式語言到後來,其實比較像寫作文。

這件事聽起來有點詭異,我最初在刷題庫時覺得程式語言就是不斷計算各種數學題目,但後來真的開始寫自己的個人網站,寫到第 500 行以後,才發現任何修改和增刪都宛如大海撈針,命名、順序、架構的重要從此浮現出來。在各種功能函式已經臻於成熟的今天,一般工程師最需具備的並非頂尖演算法邏輯,而是「讓別人甚至是明天的自己看懂現在寫的 code」。

養成良好的 coding 習慣,就從今天開始,尤其是命名。

(下方是幾個這次寫個人網站的 class 範例,我總共開了 26 個 class,無法想像專業商用網站的數量有多驚人)





2018年11月5日 星期一

JavaScript 菜鳥課程1&2: HTML&CSS

自學 Python 一陣子,也自己在外頭上了不少課,感到程式語言是一種重要且也用的工具,很希望自己的學生們也有機會接觸,於是我在自己可動用的經費項目下,籌辦了一堂程式語言課程入門班,從基本的語法開始教起。

一開始原本想教 Python,但跟授課老師深入討論後,決定以 JavaScript 做為教學語言。選擇 JavaScript 做為入門語言有幾個因素:
  1. 門檻較低,語法和 Python 一樣相對平易(相較於難度極高的 C家族)
  2. JavaScript 是專寫前端網頁,可以直接看到成果,對初學者來說成就感較高
  3. 個人基於私心想了解前端語法 (因為之前已學過後端的 Python XD)

這門課重質不重量,總共只收了 8 位學生。

--

第一堂課,從基礎的 HTML 和 CSS 開始說起。這堂課補足了很多我先前上爬蟲專班時的基本知識,上起來是津津有味。補記幾個課堂筆記如下:
  1. 網頁的 HTML 結構必然包含html、head、body 這3項大標籤,head 決定網頁的編碼和頁面名稱,body 則是主要內容+結構。
  2.  html 就可做到基本的網頁編排,但現在大多會搭配CSS做美編和各種調整。
  3. 所有的標籤都是 1 組 2 個,前後包夾,一層又一層,通常是外層標籤決定內容呈現的大方向,內層標籤再做各種微調。
  4. 早期網頁都是用 table(表格) 來做排版。table 的寫法是用 tr(列) 包住 td (欄),不是很直觀的概念,結構非常制式化、沒有彈性,稍有修改就會牽一髮動全身
    範例:
  5. 現在排版多習慣用 div,類似區塊的概念,div 裡面再放 div,形成一層層的巢狀結構。
  6. 在過去,並排且左右置中是一項非常挑戰工程師的任務,但現在用CSS 的 display flex 功能就可以很輕鬆解決這個難題。
  7. 「換行」在程式語言中沒有意義,但用某些語法(例如div)後會有自動換行的功能。
  8. class是一套屬性設定,可以預先設好特定的字體、顏色、排列方式、預留空間等等項目,並為之命名,套用到某些div上,這些div就會呈現出同樣的編排模式,是一種非常方便且聰明的做法。

關於網頁的基本排版html 和css 大概上了兩堂課,回家作業是要摹寫出 Facebook 的登入頁面,就是下方這個大家都很熟悉的畫面,頗有挑戰性,寫好之後再與大家分享。






2018年11月1日 星期四

[補記]:8月份臺大資工訓練班「Python網路爬蟲實戰」

繼 6 月時上過用 Python 撈資料的課程後,8 月份又報名了臺大資工訓練班的「Python網路爬蟲實戰」,想了解更多 Python 的實際運用方式。

實際上了第一堂課,發現課程其實很需要 HTML 和 CSS 的基礎,但這兩項我都沒有學過,只好硬著頭皮記下那些標籤。(事後補學了 HTML 和 CSS,才更清楚爬蟲的原理)

上了一陣子,課程內容大致可歸類成 4 個部分:

  1. 網頁原始碼的判讀與搜尋關鍵標籤
    決定要爬的資料並找出其所在位置,這也是為何要理解 HTML 和 CSS 的原因。另外還有各種「選擇器」的運用,可以協助使用者做各種類別的選擇。(但選擇器的部分我其實學得不好,大部分還是直接複製網頁原始碼的選擇路徑)
  2. Python 套件:PyQuery 的教學與運用
    聽老師的介紹,應該是目前滿熱門的爬蟲套件,主要做靜態網頁的資料抓取和解譯。
  3. Python 爬蟲套件:Selenium 的教學與運用
    有很多小功能,能做動態網頁的資料擷取,缺點是沒辦法做解譯,還是得靠 PyQuery。
  4. 爬蟲程式的延伸應用
    除了把資料爬下來之外,老師也另外講授爬蟲的一些應用,例如網路機器人的原理、破解網路驗證碼的方式。

整體而言,上完 10 個小時的課後,我對爬蟲的原理確實有所了解。由於老師在課堂上示範的頁面是他特製的,結構簡單嚴謹、也沒有複雜的呈現、動畫、廣告、嵌入等等,所以在課堂上大家都爬得相當順利。只是,現實世界的網頁技術日新月異,不但頁面結構更複雜多層、變化更多,甚至也有不少反爬蟲的機制,例如 Cookie(不過,道高一尺、魔高一丈,老師也有教大家怎麼破解Cookie XD)所以認真要爬下自己想要且有用的資料,並不輕鬆。

這次課程最後,我也自製了一個小專案「電影爬爬看」,主要是將當期播映的所有電影名稱、評分、簡介、場次等內容都抓下來,看到資料跑出來的那一刻著實滿有成就感的~





2018年7月15日 星期日

開始刷題庫

一陣子沒來更新,並不是因為荒廢,而是發現電腦程式語言的世界太廣大,摸索的有點暈頭轉向。

6月時報名了資工系開設的python應用課程「Python 與資料分析」,課程內容以教授 Python 大量運用於商管領域的幾種重要函式庫- Numpy, Pandas,也有帶到一點資料視覺化的部份。開課老師是商管背景,程設底子明顯不夠紮實,上課內容偏向資料統計和處理,解題的方式也不是引導如何去拆解一個問題,而是不斷的上網估狗各種函式。整體來說我並不是太喜歡這堂課,但對於python在資料統計與篩選的實際應用方面有了基本的概念。

總之,發現去資工系補習班上應用課程,並不是我喜歡的學習方式。

正在苦惱下一步怎麼走之際,剛好有機會和資工的學生接觸,閒聊之際講到我自學程式語言的瓶頸,同學很熱心的給予我幾個建議,大致可分為兩個方向:1. 多刷題庫 2. 學習資料結構與演算法。

這兩個建議看來很籠統,說穿了就是程式設計的基本功訓練。學生推薦了我幾個知名的題庫網站,加上我後來查到的幾個:
(1)UVA
自學程式的人都會知道的題海庫,成千上萬的習題大概沒有練完的一天,各種難度應有盡有,還有線上批改系統幫忙,唯一的缺點是全英文介面。

(2) Lucky貓的UVA
國內善心人士製作的 UVA 中文化網站,題目都有題號,可以一邊看一邊去對照原本的UVA內容,促進對英文題式的理解,缺點是畢竟是挑題翻譯的,題庫不全,而且可能有翻譯不到位的問題。

(3) 高中生程式解題系統
國內自行開發的題庫,也有線上批改(但為了配合系統需求,答題前都得先帶入一個前提迴圈語法),題目分等級,也有競賽型的題目,題目設計感不如 UVA 巧妙,但對初學者來說算是不錯的入門。(目前我自己正在刷這個部份,覺的雖然名為給高中生的,實際上難度也是很高)

先講完刷題庫的部份,資料結構和演算法的學習,留到下一篇再作分享。






2018年5月11日 星期五

第一個作品:工讀時數產生器

自學 Python 兩個月,寫出了人生中的第一個小作品,是個可以亂數跑出時數的小程式.

這個程式的功能,是幫助我填寫每個月的工讀生時數表.每個月我都需要幫工讀生填報工讀時數,工讀生人數眾多,一筆一筆 key in,每次也得花上不少時間.所以我寫了這個可以隨機跑出每月日期和打卡時間的程式,只要輸入幾個關鍵資料,就可以自動帶出一個月的工讀時間表,並算好時數和薪資總額.

先來看看整個程式長什麼樣子:


介紹一下,這個是用 Sublime 文字編輯器寫的,好處是用顏色提示各種語法功能,對我這種初學者而言很方便.


接下來一段一段說明我的編寫邏輯:

首先,引入 random 模組,也是這個程式的重點--讓後面可以隨機跑數字出來.接著,我們必須決定要做哪個月份的薪資表,一年裡面分成大月31天,小月30天,2月28天,所以我用 if 來篩出大月小月和2月(當然你也可以都用30天就好,但這樣就永遠不會有31號),最後用 mon-days 代表這個月份的總天數.

















再來,由於我的工讀生們週末都不會上班,所以我得先刪掉每個月份的星期六和星期日.目前想到的做法是先輸入該月的第一個週六和週日各是幾號,然後分別加上7的倍數,就是當月所有的週六(f6)、週日(f7)日期,再用 if + continue 的方式跳掉這幾天,最後重新產出一個只有一到五週間的新日期清單 d_list.










上面這一段完全是徒法煉鋼,也花了我最多的時間,但目前尚未想到更好的做法,希望日後能改得更精簡.


ok,確定了可以挑選的日期清單之後,接下來步驟就相對簡單,只要用 random 隨機挑出想要的日期就好.一開始先輸入這個月份工讀生們來工作的「天數」workday,再用 random.sample 的功能隨機挑出日期,建立 date_list,照順序排好,就成為待會兒會看到的工讀生上班日.











日期都選定了,接著要填入上下班的打卡時間.工讀生原則上都是 09:25 - 09:30之間打卡上班,17:00 - 17:10之間打卡下班,小時的時間都已固定,只要用 random.choice 去亂數選出分鐘的部分就可以.
另外,要特別注意,我是直接把演算式包在 print 裡面,所以看起來有點雜亂,請包涵.













最後,算出總時數和總薪資.這部分基本上和上面語法不太有關係,我的工讀生就是每天工作 6.5 小時,所以只要用 6.5 * 工作天數就可以,薪資則是總時數 *140 元時薪.









實際跑程式的狀況是這樣的:
一開始先問你要做幾月份? (Mon: )
接著問你這月份的第一個星期六是幾號?(First Saturday? )
第一個星期天是幾號?(First Sunday? )
這個月工作幾天?(How many days do you work? )
都填入資訊之後,就會跑出這樣子的清單:























日期和時間分布得非常自然,都避開週末,還幫你把總時數和薪資都算好,更不用擔心會被會計阿姨抓包是捏造出來的工讀時數表呢 XD

當然他還是有非常多我沒有辦法解決的小問題,例如亂數跑出來的個位數前面沒辦法自動產生"0",所以只能我自己先在前面加字串"0"... 這類細節問題不勝枚舉,只能說表面上看起來平凡無奇的訊息背後,或許都有著龐大複雜的語法運算.


總而言之,這是一個非常簡單、非常限定、徒法煉鋼的一個程式,是我的第一個小作品.儘管簡陋又雜亂,但剛完成時還是頗為感動.附帶一提,這個小東西花了我一個下午的時間,也算是我初學 Python 的自我驗收吧.




2018年3月27日 星期二

Coursera NTU:用 Python 做商管程式設計/孔令傑

爬完 Codecademy 一輪後,大概掌握了 Python 的幾大基本概念,但仍覺不太踏實。

這禮拜開始看台大資管系 孔令傑老師在 Coursera 上開的 Python 入門課程-- 「用python 做商管程式設計」,老師上課方式深入淺出,教學進度也大致依循 Codecademy 的方式。目前覺得孔老師的教學有幾個值得推薦的地方:

1. 孔老師完全明白初學者的窘境 -例如我們的電腦裡連最基本的 python 操作環境都還沒建立起來 - 因此老師會從安裝 python、叫出 python 的操作介面等基本步驟開始,一步一步帶你入門。

2. 我先前在做  Codecademy 時,有許多觀念在練習時搞不太懂(畢竟是全英文介面),像是int、float、stream 等等的意涵 ,基本上只是大概知道是甚麼但總之先照抄再說,現在經由孔老師解說後才豁然開朗,對初學者的觀念建立而言是一門值得推薦的課程。

3. 孔老師在實際示範程式寫法時,會同時列出多種寫法,並分析哪種寫法較好、哪種較不推薦,身為菜鳥的我們儘管無法立刻就寫出最簡潔優雅的語法,但也漸漸能用一些大原則判斷出程式語言的優劣。

4. 除了程式語言的邏輯教學,孔老師也會教導學生們建立起「良好的寫程式語言習慣」,例如習慣加括弧、分段、妥善利用熱鍵等等。老師最常說的就是:「這個動作在初學時看起來是小事,但寫久了之後你就會知道這樣做的好處」我個人滿欣賞這種注重細節和培養好習慣的教學模式。

5. 每一堂課都有作業,作業往往就是要你徒手寫出一個簡單的小程式,這跟先前 Codecademy 一步一步引導的方式不太相同,因此剛開始試寫時會有點心慌,但只要仔細思考,就發現作業其實都是運用該堂課上到的概念,無須過於緊張。


現在課程才上到第四週,整體 loading 比先前寫 Codecademy 時輕鬆很多,但也很令人害怕會忘記「把手弄髒」也就是寫程式的感覺,一直聽課終究是不行啊...寫程式還是得實際動手操作才是。工程師同事建議可找尋網路上的一些實際應用來觀摩,例如圖像化介面、小型遊戲等等,自己照著寫寫看,可迅速累積寫程式的手感。


大致是這樣,繼續上課、繼續 coding~!


2018年3月21日 星期三

Codecademy Python 100% 成就達成!

終於完成 Codecademy Python 100% 的進度了!!
算是自學程式語言的小小里程碑!

不過,最後幾個階段進入到 class 和 object 的部分,自己其實學得有點含糊,尤其是 class 中各種功能的運用 (ex: super, inheritance, open...) 真的就是照表操課,能寫出來,但無法完全理解這些功能的用途和使用時機,看來只能繼續追問工程師同事們。

另外是,完成的同時也產生新的危機感。

摸完一輪練習,大致知道python的基本架構,但是...目前仍停留在很簡單的計算和幼稚園等級的class 和 object 範例練習,離實際運用還差的遠遠低。同時也深覺,程式語言一定要持續接觸,熟悉思考邏輯。因此下一步,應該會採取線上課程與實體工作坊同時進行的方式:

1. 線上影片
(1) 臺大孔令傑老師的 Coursera 課程「用 Python 做商管程式設計」,目前只看了第一週的課程,算是對資訊管理的定義和運用做了清楚易懂的介紹。預計用 1-2 週時間完成。

(2) 考慮重新 做一遍 Codecademy python 課程,想再把一些基本觀念強化,同時保持實際動手寫 code 的感覺,希望能在 1 週左右完成。另外,希望好好記錄練習心得。

(3) 再請資工友人推薦其他可以練習寫 code 的平臺。


2. 實體工作坊
Pyladies 將在 4 月以後開設讀書會和分享活動,相關資訊如下:

讀書會:[生活中的程式 - Python 自動化]

適合對象:有 Python 基礎者 或 熟悉其他語言能快速自學 Python 者

時間:每個月最後一個禮拜日早上 10:00~12:00

地點:台北市婦女館 (108台北市萬華區艋舺大道101號3樓)

書本:Python 自動化的樂趣:搞定重複瑣碎&單調無聊的工作

詳細內容:
4/29 處理 Excel 試算表  講師: 龜珍
5/27 處理 CSV 檔和 JSON 資料 講師: Amber
6/24 保持時間、工作排程和程式啟動 講師: Jamie
7/29 發送 Email 和文字簡訊 講師: Jamie
8/26 以 GUI 自動化來控制鍵盤和滑鼠 講師: Jamie


分享活動:[Python 女性工程師業界分享]

適合對象:對於 Python 的工作內容/環境 有興趣者皆可參與

4/22(日) 14:00~16:00 Pinkoi Data Scientist 
@台北市婦女館

5/26(六) 14:00~16:00 Django Girls社群主辦人 
@台北市婦女館

6/09(六) 14:00~16:00 阿諾標記工程師 
場地未定

7/17(二) 19:30~21:30 趨勢科技 QA 
場地未定

8/25(六) 10:00~12:00 Oath(Yahoo!)工程師 

@台北市婦女館


以上大致是未來幾個月預定的方向,希望能夠確實達成,繼續累積 python 經驗值。



2018年3月15日 星期四

卡關與小確幸

玩 python 兩個多禮拜,Codecademy 已完成 75 %。

聽起來似乎進展不錯,但事實上,我在第一週就完成60%以上的進度,第二週的線上課程開始進入應用習題,我也開始了各種嚴重卡關,有時一天還解不了 2 題,極度苦惱焦慮下只好忍不住偷看解答,看到解答的瞬間才脫口而出:「啊!怎麼這麼簡單!」

是啊,解法其實很簡單,但我就是想不到。

這樣子反覆來回幾回,逐漸發現,學習python,除了是在學程式語言,更是在學一種新的思考模式。其實也不算完全新,就是邏輯思考,讓我想起高中苦讀數學的歲月。

這一切跟我上大學以後所受的人文訓練非常不同。大學所學的人文思考,就是要考量到各方各面的因素,簡言之----- 要想得夠多夠廣泛。但邏輯推論相對沒那麼複雜,設了幾個前提條件,就可以一路往下推論。現在的我得訓練大腦嘗試一種不熟悉的思考模式,因此每天都在燒腦、每天都覺得筋疲力盡。

但是,我知道自己開始改變,也漸漸熟悉程式語言的思考方式。許多時候,解python練習題時雖然未必解得出來,但大致知道這個題目要用甚麼方式處理,而當我試著寫出解答,再對照codecademy提供的解法時,發現自己只是一些細節有誤或對某個符號理解不夠,思考的方向確實都沒有錯,這時會令我感到非常興奮。

今天總算靠自己的思考,以及python提供的一點小提醒,解開了2道題目,解開瞬間真讓人開心到想跳起來大叫。其中1題是要求一個數字串的中間值(median),寫成白話文看起來真是簡單到不行,但也是花了我兩個多小時的時間.... 我的解法如下:

Codecademy: median

def median(lst):
  List = sorted(lst)
  L = len(lst)
  res = 0

  while L > 0:
    if L % 2 == 0:
      res += (List[L/2] + (List[L/2 - 1])) / 2.0
    else:
      res += List[(L-1)/2]
    return res


雖然我試圖用一些代數來簡化畫面,但不得不說看起來還是很雜亂.... 希望往後可以寫得更簡潔。這題比較難的部分應該是,要思考怎麼挑出偶數字串和奇數字串的那個中間數... 我自己抽象思考的能力沒那麼好,必須實際用好幾個範例來算,才能抓出中間數的規則。

附帶一提,我剛寫完時覺得邏輯完全沒錯,為何就是一直跑出錯誤訊息??!! debug到我頭髮都要花白了,最後瞄到Codecademy的小提示,要除以 2.0 而不是 2!! 恍然大悟! 一改之下立刻正確了,這也是我最佩服這個線上課程的地方,它總是知道新手會在哪裡犯錯 : )

然後,下面也順便看看Codecademy的答案:



科科,乍看到 Codecademy 的答案,我也是暈了,字好多@@ 不過老實說,它的解答是冗在那些代數的名稱(可能很希望讓菜鳥們看懂在幹嘛 XD),基本架構是非常清楚簡潔的,邏輯也很通順。

最重要的是,我的邏輯思考和Codecademy一致,這點頗振奮人心~!!



未來幾個禮拜、幾個月、甚至幾年,都得讓自己更沉浸在程式語言和邏輯的世界裡,就像英文一樣,程式語言也是需要訓練語感的,再接再厲吧!


2018年3月7日 星期三

學Python 的目的?

摸了Python一個禮拜,漸漸感受到難度。

當只有一兩個函數、代數時,還可以掌握,當程式幾十行甚至百行起跳後,就好像鑽進層層疊疊的叢林裡,不知道自己在哪裡。這時候就會覺得疲累和心灰。

跟一個工程師同事聊了這件事,順便請教他python的學習技巧,他說,他認為多數人學了一陣子就放棄的關鍵元素,是缺乏學習的目標。「不知道自己學這個是為了幹嘛的話,真的就很容易放棄」

 仔細想想,一直以來,我自己教學生如何自主學習,不都最強調設定目標嗎?先給自己一個小小的、簡單的 target,達到後再設下一個,一步一步完成自己想做的事情,即使要花上不少時間,但明確的目標、具體的步驟、有效的檢討、尋找志同道合的夥伴,絕對是是學習的不二法門,而最重要的,當然還有持之以恆了,這是能否成功學習的關鍵所在。

2018年3月5日 星期一

2018.03.05 複習布林邏輯和一些數學觀念

初學 Python 幾天,發現數學運算佔了 70 %以上。偏偏甚麼函數、代數這些觀念,我考上大學以後就再也沒碰了,只能憑藉一些殘存的印象,實在很吃虧。

這邊就遇到了幾個數學基本問題,有的還可以靠自己查資料解決,有的似乎就必須請教理工達人,列出如下:

(1) Slice[]

Slice 在 Python 裡可用來截取某英文單字的其中一段,而 Python的字母算法,第一位都是從 0 開始,以範例 "Charlie" 的 s[1:4] 來說,指的是從排序第 1 位的字母(h) 截取到排序的第 4 位的字母(l) 之前! 所以是截取字面上第 2 個字母(h) 到第 4 個字母(r),所以答案是 "har"

這個 Slice 的觀念很妙,我花了一點時間才能試著接受它,為什麼是到第4位排序之前,而不是正好就是第4位排序呢? 可能要詢問數學相關的專家吧。 



 (2) total = 0

在計算總額時,似乎習慣先預設一個值 = 0,然後用那個值加上其他計算出來的數值,才能算出總額,而不是直接就計算出總額,這也讓我覺得相當有趣,應該是數學的基本原理?



(3) "+="   "-="



一開始看不懂 +=、-= 的意思,查了資料才明白,以範例圖的 cost -= 20 為例:
cost -= 20  ------>  cost = cost - 20
同理,若看到 cost += 50 ------> cost = cost + 50
其實就是縮寫而以啦~ 之前還讓我大費腦筋....




另外還有一些很基本的數學邏輯問題,看到較有趣的是「布林邏輯」,其實高中就學過這觀念了,簡單講包括 not、and、or 這三種:

not  否定
not True = False
not False = True

and 兩者皆為真才為真,其他都是錯的
True and True = True
True and False = False
False and True = False
False and False = False

or 其中一者為真即為真
True and True = True
True and False = True
False and True = True
False and False = False

然後,當一個算式裡面三者都存在時,處理順序依序為:not、and、or



這樣看一看,突然發現數學也是滿有趣的,不少觸類旁通的觀念,覺得當初真是太早放棄數學,若再認真接觸,或許也大有可為呀~~


今天大致心得是這樣~ 繼續努力,coding人生~!!


2018年3月4日 星期日

2018.03.01 新的起點:Python

自己是念文科多年的人,從沒想過有一天也會來摸程式語言。過去每每聽到旁人說起軟體工程師這行,心中總隱隱覺得羨慕,但總覺得時機已經過了,都超過30歲了還跟人家學什麼coding? 因此學程式語言也就變成一個遙遠的美夢。

豈知,今年過年期間,偶然地看到學弟轉貼一篇文章,作者是史地學系畢業的,畢業後投入旅遊業多年,但在2年前毅然決然離開本行,學習coding,歷經諸多困難後終於得以踏上工程師一途。這個故事對我有如當頭棒喝:別人做得到,我為什麼作不到?於是要學coding的念頭又在我心中爆發開來。

但程式語言基礎為0,又離開數學邏輯已經10幾年了,要學coding還真不知道如何下手。

所幸現在網路資源很多,身邊亦不乏工程師朋友們,在查了一些資料、諮詢過後,獲得了幾個結論:
1. 30歲後學coding依舊大有可為
2. 可以先透過線上免費資源做入門訓練,例如 Codecademy
3. Python 簡潔明瞭,適合初學者入手

這樣歸結下來,學習程式語言這件事,是個成本不高但相當有用的技能,至少在初學的階段,有免費資源、身邊也有很多高手可以問,就來試試看吧!

就這樣,踏上了我的coding 之路...(誠摯希望一年後,這個blog還繼續更新)