長線投資的電腦學習策略



報告人: 洪朝貴 https://www.cyut.edu.tw/~ckhung/
單位:

也請參考 2001 文章版 2016 文章版

有限資源的最大投資報酬率

  1. 有盤子許多個, 硬幣 30 顆, 請任意安排將所有硬幣放入某些盤子當中
  2. 獎金金額 = 各盤硬幣數全部相乘 (空盤不計)
  3. 如何安排可獲得最高額獎金? 例:
30 = 30
20*10 = 200
10*10*10 = 1000
? = ?

電腦知識天生短命?

  1. 您十年前學的電腦知識, 有那些還沒有過時?
  2. 十年後, 打算再重學一遍嗎? 廿年後呢?
  3. 建請資訊教育從業同仁, 以 英文 數學教育為師

CK05 智慧型計算機 (1)

[朝貴牌計算機有許多方便的選單] [例如雞兔同籠問題只要輸入頭與腳的數目...] [就會跳出答案! 不要學線性代數了吧!]

  1. 如果把數學教育與軟體操作混為一談...
  2. 「CK05 智慧型計算機」 不只做四則運算, 它是數學課本!
  3. 親切的 GUI 選單, 簡易的對話框填空操作
  4. 功能包含小學至大學 (數學系除外) 需要學的所有內容

CK05 智慧型計算機 (2)

  1. 以生動有趣的實用領域編排選單: "周期同步問題", ""雞兔同籠", "丟擲標槍鐵餅問題"
  2. 輾轉相除法? 拋物線方程式? 高斯消去法? 請留給大學數學系同學吧!
  3. 教育版三折優惠; 如果有人指控我壟斷, 價格還可再議
  4. 建議教育部以 CK05 智慧型計算機取代中小學數學課本
  5. 從此以後臺灣人數學程度大幅提升, 競爭力一流 ... ?

英數教育的重要特性

  1. 教材主體具有長久性
  2. 如何分析 (句型/問題) 是教學重點
  3. 如何組合 (單字/運算式) 並用於看似不相關的場合也是教學重點

其他領域的類似例子:

  1. 組合語言的 「正交性」 (orthogonality)
  2. 電子零件: 電阻, 電容, 電感, 二極體, 電晶體 組合成複雜的電路
  3. DNA: 4 種鹼基, 決定 20 種氨基酸, 許多種蛋白質, 無限多種生命的可能性。
  4. 積木, 影音設備, ...

可以組合的知識/軟體 (1)

  1. 雞蛋分開放, 不怕被流行浪潮淘汰。
  2. 要記的東西很少; 可用場合的很多。
  3. 蹲馬步很辛苦。
  4. 困難處在活用/組合, 不在死記。
[數學組合軟體] [網路組合軟體]

可以組合的知識/軟體 (2)

  1. 正因為不想把生命完全浪費在學習電腦, 所以採用聰明懶惰學習法
  2. 但若不斷學習新元件, 能力成指數函數成長。
  3. 高手未必是科班出身。

上述各點不正是英文/數學學習的特性嗎? Ans: 3^10 = 59049 分成 10 盤, 每盤 3 元

[那一種學習曲線值得長遠投資?] [文書處理也應注重組合]

內容與外觀分開處理 (1)

  1. 組合的觀念, 可以應用在 文書處理 上面
  2. 追求美麗, 可能也是一種錯誤
  3. 如果方法正確, 追求美麗, 可以不是錯誤
[各自著色, 再拼起來] [各自只留框, 拼起來以後再統一倒入顏料]

內容與外觀分開處理 (2)

  1. 那一種方式有助於文件外觀的一致性?
  2. 那一種方式比較省力? 如果有 500 篇網頁, 要製作 10 種版本 (炫麗版, 無障礙版, pda 版, wap 版, 聲音版, ...) 500*10 或 500+10?
  3. 那一種方式有利於應變? 如果那天長官的審美觀突然改變, 希望所有文件的標題都改用另一種字體... 改 500 個檔案或改 1 個檔案?
  4. 文書處理第零課: 內容與外觀分開處理 Separation of Content from Presentation
  5. 何不考慮全面改用 html, 取代文書處理與簡報? 讓教育訓練資源的投資, 也發揮相乘的效果!
  6. 何不用 雲端文書 雲端簡報 取代微軟 Office?
需要的不多; 想要的太多 -- 聖嚴法師

檔案格式: 單一 vs 組合

Adobe 的 pdf 格式 vs. 組合式的檔案管理

  1. pdf 的功能: 壓縮 & "未遭修改" 數位簽章... 等等功能與單一檔案格式結合, 是正確的方向嗎?
  2. Q1: 如果需要對試算表/聲音/影象檔進行壓縮/簽章呢?
  3. Q2: 將來如果出現更佳的壓縮技術呢? (已經出現)
  4. Q3: 將來如果想加上 "身份認證" 數位簽章功能呢?
  5. [文書處理也應注重組合] 組合式的檔案管理:
    .html .tgz .gpg
    .csv x .zip x .pgp
    ... ... ...
  6. Q: 不方便
  7. 對消費者最有利的方向: 組合式的檔案管理架構, 廠商收費提供整合服務, 消費者堅持採用開放技術 (c.f. 付費組裝電腦)
  8. 正確但未盡完善的例子: OO.o 的 sxw -- 具有開放 dtd 的 xml 格式, 採用通用的 utf8 編碼 (文字編輯器可開啟) 最後用通用的 zip 格式壓縮。
  9. 順便一提: Adobe pdf 的技術問題: PDF: Unfit for Human Consumption; 法律問題: Adobe 有限度允許撰寫相容讀寫 pdf 格式軟體, 會否像過去 某程式設計師因為撰寫相容讀寫 [另一 Adobe 專屬格式] 之軟體 而遭 Adobe 控告 一樣, 將來程式設計師撰寫相容讀寫 pdf 格式軟體, 也遭 Adobe 控告? 沒有人敢給確定的答案。

只要是 XML 就沒有問題了嗎?

[只要是 XML 就沒有問題了嗎?]

  1. 羅馬字母是許多西方語言的基礎; 但使用相同的字母並不表示語言就可以相通 -- 要講清楚是那種語言
  2. xhtml 是 xml 的一種, 可用於製作網頁
  3. svg 是 xml 的一種, 可用於製作向量圖檔 (放大縮小不失真)
  4. mathml 是 xml 的一種, 可用於撰寫數學文件
  5. xml 不試圖解決所有問題, 而是預留新問題出現時的彈性; 是未來趨勢
  6. 但 xml 並非公開格式的保障 -- 這種 xml 的 dtd/schema 公開嗎? 那種 xml 的 dtd/schema 公開嗎? ...

組合實例: 分析網頁伺服器的流量

想要 按時段分析網頁瀏覽人次; 手邊有原始資料 access_log

  1. 取出 「時」: perl -ne 'print "$1\n" if /:(\d+):.*" 200 /' access_log > ws_1.txt
  2. 排序: sort < ws_1.txt > ws_2.txt
  3. 刪除重複資料: uniq -c < ws_2.txt > ws_3.txt
  4. 左右對調: perl -pe 's/\s*(\d+)\s+(\d+)/ $2 $1/' < ws_3.txt > ws_4.txt
  5. 進入 gnuplot 下:
            > set style data lines
            > plot "ws_4.txt"
    

組合實例: 合併成績檔, 再按照班級分開

彙整學生專題成績: 學生分組可跨班; 老師指導各組可能來自不同班級

(甲師) (乙師) (丙師)
... ... ...
s4314030,林孟茹,80 s4354009,張仲倫,71 s4454085,學中峰,80
s4354088,顏中強,62 s4314056,呂家萍,77 s4354021,江小珊,87
s4454111,洪光泰,84 s4414061,藍孟福,68 s4314070,簡玉蓉,98
s4414001,曹中昌,84 s4454103,王仲發,96 s4354069,李秋珠,91
... ... ...

||
grep 's4354..[13579]' * > 24a.csv
||
\/

s4354009,張仲倫,71
s4354021,江小珊,87
s4354069,李秋珠,91

組合實例: 批次更改檔名

public_html/ 目錄底下有三四層目錄, 數百個 *.shtml 檔, 欲全部改名為 *.php。

find public_html/ -name '*.shtml' | perl -pe 's/(.*)\.shtml/ mv $1.shtml $1.php/' | bash

public_html/index.en.shtml
public_html/p/toy/index.shtml
public_html/p/index.shtml
public_html/s/pr/index.shtml
public_html/s/edu.shtml
public_html/s/os.shtml
public_html/dl/index.shtml
public_html/fe/index.shtml
public_html/fe/footer.shtml
public_html/a/c000.shtml
public_html/a/c041.shtml

==>
 mv public_html/index.en.shtml public_html/index.en.php
mv public_html/p/toy/index.shtml public_html/p/toy/index.php
mv public_html/p/index.shtml public_html/p/index.php
mv public_html/s/pr/index.shtml public_html/s/pr/index.php
mv public_html/s/edu.shtml public_html/s/edu.php
mv public_html/s/os.shtml public_html/s/os.php
mv public_html/dl/index.shtml public_html/dl/index.php
mv public_html/fe/index.shtml public_html/fe/index.php
mv public_html/fe/footer.shtml public_html/fe/footer.php
mv public_html/a/c000.shtml public_html/a/c000.php
mv public_html/a/c041.shtml public_html/a/c041.php

打破滑鼠選單的迷思

  1. 網管/成績/更改檔名不是重點, 有規律地處理文字檔 才是重點。
  2. 人事資料/庫存管理/客戶資訊... 任何 「藏在文字格式檔案中, 簡單的, 有規律的字串」 都適用。
  3. 打破滑鼠選單的迷思: 重複, 機械化, 有規律的動作, 就不應該是人做的事! 不論是用滑鼠或用鍵盤在做這種事, 就變成了電腦在用人, 而不是人在用電腦。

資訊教育新主張

  1. 命令列為何難學? 因為欠缺讀本:
    英文 字典 文法書 讀本
    命令列 指令集 "檔案系統/權限/行程/..." 命令列讀本: 12
  2. 以 「處理文字檔案」 為主體
  3. 以 「檔案格式研習」 (html, csv) 取代 「資訊系統研習」

從錯誤訊息當中學習

  1. 「請與程式設計師聯絡」?
  2. 自由軟體的學習文化: 拜託給我錯誤訊息 -- log 檔也好
  3. 良藥苦口利於病, 忠言逆耳利於行: 錯誤訊息是學習路上的最佳良伴
    武士聽了之後, 表情變得很僵硬: "我不是來這裡受你侮辱的." "也許你一直把事情的真相當做是侮辱." 梅林一邊說著, 一邊繼續把紅蘿蔔分給其他動物吃. -- 為自己出征

推薦具體學習重點

  1. regular expressions 例: 美式日期 <==> 歐式日期 perl -pe 's#(\d+)/(\d+)/(\d+)#$2/$1/$3#'
  2. 徒手修改 html 檔及 css 檔 (不必從零開始)
  3. pipe 及 command substitution
  4. scripting 語言, 例如 perl, python, php, ruby... 等等
  5. readline 命令列快打
  6. gnuplot 函數/資料繪圖工具
  7. find 命令

資訊人力分佈可能的變化

  1. 自然狀態: 夷以近則遊者眾; 險以遠則至者少; 現況: 價值觀促成兩極化; 缺乏 Power Users [自由軟體時代的資訊人力結構]
  2. 促成變化的因素: (A) 機器變快; 人工變貴 (B) 「多人經常使用的軟體」 不再是賺錢的商品 (C) 軟體可以免費取得, 自由組合; 撿來以後需要 拼湊使用 的能力 (D) 何時值得 撰寫 程式? 小眾需求, 撿不到, 不怕拷貝; 寫得快比跑得快重要
  3. 軟體自由化的影響: 模糊人為界線; 上層需求減少, 中間需求增加: Scripting: Perl/Python/PHP/...; CLI(命令列) / regexp / csv / CSS / 修改文字設定檔 / 系統整合 / ...; 半手工 xhtml+Microformats; 複雜的 GUI 軟體操作/設定/套件管理/...; 其他 "中間等級" 新技術?

想像數學自由化之後的人力市場變化; 也請見 「創新的擴散」: 最欠缺的, 不是創新, 而是擴散。

為何自由軟體文化鼓勵有效學習?

  1. Code re-use: 跨平臺, 交換檔案, 呼叫其他指令, ...
  2. 以動態連結為例: Oracle 公司的軟體要不要善用 Microsoft 公司的動態連結函式庫?
  3. 沒有法律障礙阻止 code re-use
  4. 有「成名動機」鼓勵 code re-use
  5. 沒有經濟因素阻止誠實面對臭蟲
  6. 有實用動機鼓勵誠實面對臭蟲

Web 2.0: 小小片, 鬆鬆接

  1. Small Pieces Loosely Joined (小小片, 鬆鬆接)
  2. Web 2.0 一級組合網站: 相片集散 flickr, 影片集散 YouTube, 維基百科 wikipedia, ...
  3. Web 2.0 的 mash up 現象所衍生的二級組合網站: google map + flickr + YouTube + Wikipedia = jotle 認識一個地點的最佳入門網站
  4. mash up 資源網; Google Maps 衍生的 mash up

資訊科系的課程規畫

資訊科系的課程規畫:
	何者比較符合時代需求?