Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduciton To Hackerdom

M157q
September 27, 2013

Introduciton To Hackerdom

交大網路福利社 102 學年度上學期第一堂社課
關於 交大網路福利社 請參考 http://www.nba.nctu.edu.tw/

本投影片請搭配
https://www.youtube.com/watch?v=DFxiYvPY1CU 服用

M157q

September 27, 2013
Tweet

More Decks by M157q

Other Decks in Education

Transcript

  1. Hacker 的起源 • MIT Artificial Intelligence Laboratory • 一群整天想賴在電腦前的阿宅們(? •

    愛吃中國菜 • 為了在半夜偷用 lab 電腦自學開鎖技能 • MIT 鐵道研究社,為了土炮鐵道模型自學各種 電路 推薦書籍: 黑客列傳:電腦革命俠客誌
  2. 廣義 VS 狹義 • 廣義的 Hacker 適用於任何領域中擁有 Hacker 精神的人 無論是科學、藝術或其他各領域等等

    • 狹義的 Hacker 專指 computer hacker 我們接下來主要提及的是狹義的 Hacker
  3. Hacker VS Cracker Hacker 創造;Cracker 破壞 Hacker 們創造了 ◦ 第一台

    time-sharing minicomputer ◦ ARPAnet ◦ Internet ◦ UNIX ◦ Usenet ◦ World Wide Web (WWW) ◦ Many computer games !! ▪ Ken Thompson’s space travel game!
  4. 態度 3. 單調無聊的工作是罪惡 • 重複性的工作代表著並沒有解決新問題 • Hacker 會嘗試將這類工作自動化 (寫成腳本) •

    有創造性思考能力的人不該做些無聊的工作 ◦ 例外:為了熟悉該技能而反覆練習
  5. 態度 5. 態度無法取代能力 • 只具備 Hacker 的態度不能使你成為 Hacker • 需要智力、實踐、奉獻、努力

    • 必須學會質疑事物並尊重各種能力 • 涉及腦力、技巧、專注力且越少人會的能力越 好
  6. 技能 1. 學習如何寫程式 • 寫程式是身為一個 Hacker 的基本技能 • 如果不會任何一種程式語言建議先學 Python

    • 獨立於任何語言之外的抽象思考 • 在幾天內透過手冊掌握一門新語言 • 閱讀書本或程式碼,邊讀邊寫 • Python, Java, C/C++, Perl, LISP
  7. 技能 2. 學習如何使用並執行開源的 Unix-like 系統 • 在個人電腦上安裝並使用 Linux 或 BSD

    系統 • 其他 Unix 系統可能不利你研究程式碼 • Unix 和 Internet 的關聯非常緊密 • 學習閱讀系統程式碼並修改程式碼
  8. 技能 3. 學習如何使用 WWW 並撰寫 HTML • 不是只會用瀏覽器上網(這誰都會) • 學會讀懂並撰寫

    HTML 等 markup language • 建立一個對其他 Hacker 有實質幫助內容的網 站 (分享解決問題的過程等等)
  9. 技能 4. 如果你不懂那些術語的英文,請把它學會 • 英語是 Hacker 們溝通的語言 • 非英語系母語的 Hacker

    仍用英語討論技術 • 英語相關技術書籍的翻譯都令人不甚滿意 (看看那些中文翻譯的原文書課本...) • Linus Torvalds 是芬蘭人,但他用英語註解他 的程式碼
  10. Well-known Hackers John McCarthy - AI, Lisp, ALGOL, timesharing Bill

    Joy - Sun, BSD UNIX, vi Donald Knuth - TAOCP, Father of analysis algorithm, TeX Dennis Ritchie (dmr) - C, Unix, K&R Paul Graham - Lisp, THN, Y Combinator, Hackers & Painters Alan Kay - OOP, GUI Ken Thompson - Unix, B, C, Plan9, Go, Regex, UTF-8 Richard M. Stallman (RMS) - Free Software, GNU, Emacs Linus Torvalds - Linux, Git Larry Wall - Perl, patch Guido Van Rossum - Python