「進階電腦系統理論與實作」
課程說明 (2017 Fall)
Jim Huang (黃敬群) <jserv.tw@gmail.com>
台灣國立成功大學資訊工程系
有了Wikipedia後,文組和理工
人之間的距離縮減
Source: https://www.facebook.com/marieclaire.tw/posts/10154530051917744
駕馭資訊科技的門檻大幅降低,你的價值呢?
Source: https://qz.com/889668/actress-kristen-stewart-yes-that-kristen-stewart-just-released-a-research-paper-on-artificial-intelligence/
教學目標
讓學生有能力、有勇氣面對資訊科技種種挑戰
測驗自己的C語言能力
誠實面對自己
從Data到Information,報告結束後,還剩下什麼呢?
沒有動手實踐的話,連簡單的C程式都無法開發出來!
這樣你憑什麼做研究呢?
就算讓你接受正規資訊教育,但最終成果毫無強度可言,憑什麼要求企業老闆給你較高的薪資呢?
Source: https://twitter.com/TheSmartJokes/status/896884082809819137
「證書」的思考
「書寫者最困難的地方在於你寫了一輩子,但你不知道自己是誰,你寫了一輩子卻沒有一句話被人記住。」
—— 霍俊明
隱性的「戒嚴」
再過一週,台灣解嚴就滿三十年了。但是人心還在戒嚴。
不是政治,而是人們不去探索與創造新機會。
仍舊期待被提供工作,被教導生活,被國家照顧。
Source:
https://www.gvm.com.tw/Boardcontent_32033.html
紙上得來終覺淺,絕知此事要躬行
白話文:書本上得來的知識感到膚淺,要透徹地了解某事物就一定要親身實踐
出處:南宋 陸游《冬夜讀書示子聿》
Marvin Minsky (1927-2016)
麻省理工學院人工智慧實驗室的創始人
誠實面對自己
「不懂不可恥,不學才內疚」 --〈30秒過後〉
很多人耳聞「世界上可以分成10種人:懂二進位的人,以及不懂二進位的人」這笑話時,都會認為自己是前者,但在大學囫圇吞棗,就能夠理解二進位,得以和電腦對話嗎?
Source:
https://twitter.com/omgthatspunny/status/755719954507370496
檢驗自己對二進位的認知: Count Leading Zero (clz)
以下C程式可計算一個32-bit數值,二進位值開頭有幾個零
int clz(uint32_t x) {
int n = 32, c = 16;
do {
uint32_t y = x >> c;
if (y) { n -= c; x = y; }
c >>= 1;
} while (c);
return (n - x);
}
能否改寫以避免迴圈?又,這樣的clz運算有何應用?
https://twitter.com/ProductHunt/status/745051306386202624
我們關注什麼?
著重於21世紀對於大規模應用、大量資料分析,以及各式高效能系統的設計,並從小處著手
本學期嘗試回顧電腦科學軟體、硬體,及數學等基礎知識,帶領學生以專業解決真實世界的各項難題。
光是Linked List就充斥著大量你未曾思考過的議題
過去concurrency(並行)和parallelism(平行)議題歸類於分散式運算,相當「高大上」,現在完全不是這麼一回事。
在軟硬體技術高速發展的今日,哪裡有異質多核心的環境呢?有,就在你我每天使用的智慧型手機中。
我們將思考concurrent資料結構操作,這是許多雲端運算背後的原理。
Scalability: 當服務規模(設備數量、自動化操作次數)的負載增長時,系統能被擴展來滿足需求(彈性擴展服務能力),且不降低服務品質
不用急著搜尋關鍵字,你可能沒學會C語言
考慮以下程式碼:
#include <stdio.h>
int main() { return (*******puts)("Hello"); }
能否編譯並執行呢?若可,為什麼呢?
為了解釋前述程式,我們需要重新學習C99規格!
從第一手資料學習:大文豪寫作都不免要查字典,庸俗的軟體開發者如我們,難道不需要翻閱語言規格書嗎?難道不需要搞懂術語定義和規範嗎?
Source:
https://twitter.com/Hahapoem/status/877562031741607936
誠實面對自己,從現代C語言開始學
但許多人往往不談object,而急著談論pointer,殊不知,這兩者其實是一體兩面。
依據C99 [6.2.5] Types
“Array, function, and pointer types are collectively called derived declarator types. “
什麼?!array, function, pointer這三者竟有關連?
如果凡事僅是走馬看花,那根本
不會有深度可言,自然不可能
培養出任何核心競爭力,
當然在職場沒有話語權。
有能力才會被人尊重!
Source:
https://twitter.com/FreeMemesKids/status/883071762304512000
編譯器最佳化
告知gcc編譯器採用C11標準,用預設編譯組態,看得到輸出有abcde字串 ☞
命令列的-O3表示開啟編譯器最佳化,結果abcde字串連同89離奇消失?! ☞
memcpy of a string literal is converted to store of a long double value. long double has 4 bytes of padding and the corresponding chars are lost. Plus this particular long double value is abnormal and gets munged by gcc losing 2 more chars.
這世界不會等你
最初由英國遊戲公司Core Design開發的一款冒險遊戲「古墓奇兵」(Tomb Raider),現已發展為跨媒體品牌,這20年間見證了軟硬體技術驚人的進展
可是你就算到了資訊工程系就讀,還是不懂箇中原理呀 (*茶*)
Source:
https://twitter.com/9GAGTweets/status/903925521536385024
這世界不會等你
iPhone X在單核心效能評比已超越內建Intel Core-i5的MacBook Pro (2017)
iPhone 7單核效能和內建Intel Core-i7的MacBook Pro只差8%
可是你連處理器都不懂呀!究竟要拿什麼東西來戰文組呢?
承認吧,你只是當年數學考試分數較高,對電腦的認知仍非常有限
https://thenextweb.com/apple/2017/09/12/apples-new-iphone-x-already-destroying-android-devices-g/
誠實面對自己!
理論和實做本來就是一體兩面
不要再說「學校只教理論」這種鬼話,你可能連是否理解理論都說不清楚
https://twitter.com/StoryInPicture/status/680983964094300160
25年始終默默支持你我生活的ARM
ARM公司授權給全球各式廠商的ARM處理器出貨量達到860億。
以年份對應的出貨量來說,1997年約為900萬,而2014年則是120億,隔年則持續成長到150億。
https://yourstory.com/2016/07/arm-holdings-story/
還有無所不在的Linux,也屆滿25歲
1991年8月25日,當時年僅21歲的赫爾辛基大學學生Linus Torvalds在新聞組貼出訊息,表示自己正在開發一款免費的作業系統,同年9 月17日發布Linux核心的0.01 版Linux。
Linux 源自80386個人電腦,扣除桌面系統以外的領域,幾乎都獲得巨大成功,舉凡手機、伺服器、超級電腦、防火牆、路由器、火星探測器、娛樂影音設備,甚至ARRC也採用Linux作為火箭控制系統的基礎。
據Linux Foundation統計,Linux核心程式碼超過2千2百萬行,每日新增4600多行,每小時收錄7.8個程式修補,9到10 周即推出新版作業系統核心。全球有來自1300多家公司、超過13500名開發人員貢獻Linux核心開發。
https://www.facebook.com/itsfoss/photos/a.182637675210341.43761.115098615297581/
758109827663120/
我們該做什麼?
蔡志浩博士:
回顧資訊科技產業
Source:
https://twitter.com/iingwen/status/900711672733507585
策略:擁抱開放原始碼技術和積極展現實力
實際產出
胡適:「發表是最好的記憶」
(下方為參與過系列課程的學生,其中6人在大學畢業前就躍上國際舞臺)
只是出賣勞務來
支撐自己生活,
可以過多久?
你真以為學長姊去XX電工作,主要以智慧財產來盈利嗎?
用生命和健康換來房🚗地位,然後呢?人生真有選擇嗎?
你我在21世紀都該以專業獲利(技術授權、商業模式、顧問諮詢),並非一味出賣勞務
Source:
https://twitter.com/andyyeung12/status/893640794464071681
本課程可解讀為電腦科學「總複習」
回顧(或說「重新學習」)電腦科學背景知識
只有耐心圓滿完成簡單工作的人,才得以習得輕易完成困難工作的技巧。
Only those who have the patience to do simple things perfectly ever acquire the skill to do difficult things easily.
18世紀德語劇作家兼詩人 Friedrich Schiller
Source: https://twitter.com/WarrenWhitlock/status/876025077178957824
基礎穩固後,我們也會探討加密貨幣、區塊鏈、JavaScript / WebAssembly、物聯網等熱門主題,屆時大家會發現穩固基礎的重要
Source: https://twitter.com/CryptKeeperBTT/status/887310320745803776
數學的魅力,點亮每個人的生命
「我們當中的絕大多數人花了人生的十二年時光 —— 六年小學、六年中學 —— 被數學摧殘。我們只知道數學是敲開大學校門的一個敲門磚,自打上了大學之後,這個東西就被我們當作人生當中最痛苦的經驗,被刪除了。我們這一代人也想吶喊:「數學滾出高考,好不好?」,但是,直到我讀了《費瑪大定理》這本書,我才知道,原來數學是如此有魅力,它的魅力是光芒萬丈,吸引那麼多智力卓絕的人,把自己的性命獻奉上去。整個數學史,就是一曲波瀾壯闊的史詩,這個時候我才知道數學的好,讀完這本書我才知道,人類知識領域、智力領域的任何豐碑,從來都不是用強烈的目的性才創造出來的,它的每一塊磚、每一塊瓦,都是由興趣堆積出來的。興趣不僅導致了最後的成功,而且點亮了其中每一塊磚、每一塊瓦,每一個人的生命。」
2014年第27集〈費馬大定理〉
不能掌握數學原理者,就是新的文盲
「過去說寫程式用不到數學的這些人看到 Machine Learning 都後悔了」 —— c9s
未來學趨勢大師Alvin Toffler 曾說:「在第三波中,文盲並非不識字的人,而是不能再學習的人」
具體來說,我們引導學生理解並「體驗」以下:
PEN = Portability, Efficiency, Negotiation
Source: https://twitter.com/9GAGTweets/status/787689996539027456
特別聲明(1)
我的教學技能只有兩個,請不要期待太高:
基礎知識你本該知道,我當然不會教你,但我會指出不足和認知錯誤之處:
特別聲明(2)
https://www.facebook.com/5iakuei/photos/a.138450382892440.25394.134451469958998/916128038458000/
課程期待的學生特質
任何人都可選修/旁聽,但請尊重授課要求,需要「課堂互動」,敬請配合
我不是妙X,但可以叫我「腦禪」,請用大量的作業供養我 -- jserv
不建議選修的學生族群
Source: https://twitter.com/TweetMe4Moji/status/777333082839842816
課程密度
還是你想說:「我這輩子從來沒輸過棋,因為我從來不下棋」
踏實
I'm now a 10X programmer.
Source: https://twitter.com/RichRogersIoT/status/807644258165395457
時間和地點
「幸福」�「這邊不能進去」
Source: https://twitter.com/Leto19871987/status/792060971644624896
評分方式
一旦經授課教師認可,最多加總分30分
Source: https://twitter.com/HistoricalPics/status/844164254093770755
課程資料
開始挑戰前,請思考這席話
「夢想到底是什麼?有的時候,我覺得夢想遭到濫用。而夢想和白日夢的差別又在哪裡?對我來說,夢想,缺乏一個步步為營、量力而為的態度,以至於夢想一直都像夢一樣,你實在說不出一個所以然,也不知道如何實現他,你也沒有實際的目標,遇到抉擇的時候,你還是選擇玩樂,以至於,夢想就真的成為了一個夢想」 -- c9s