OPENHOME 程式設計教學網站(砍站) 目錄索引

OPENHOME 程式設計教學網站(砍站) 目錄索引

OPENHOME 程式設計教學網站(砍站) 目錄索引


資料來源:https://openhome.cc/Gossip/


備份網址: http://jashliao.eu/openhome_web/Gossip/


GO語言

    起步走
    語言的起步走,需要的時間最好是長一些,因為慢一點才會快一點 …

    Go 平台概要
    在開始認識語言本身之前,先來瞭解 Go 提供的基本工具集,這是 Go 的一大特色。

    來個 Hello, World
    Go 套件管理
    gofmt 格式化原始碼
    go doc 文件即註解
    Go 測試套件
    型態、變數、常數、運算子
    也許看似基本,然而沒你想像中的那麼簡單。

    認識預定義型態
    變數宣告、常數宣告
    位元組構成的字串
    身為複合值的陣列
    底層為陣列的 slice
    成對鍵值的 map
    運算與流程控制
    Go 有指標,switch 很有彈性,沒有 while,存在 goto … XD

    運算子
    if … else、switch 條件式
    for 迴圈
    break、continue、goto

    函式、結構與介面
            封裝演算、定義行為、組織程式元件。

    函式
    函式入門
    一級函式
    匿名函式與閉包
    defer、panic、recover
    結構
    把相關的東西放在一起。

    結構入門
    結構與方法
    結構組合
    介面
    將行為定義出來。

    介面入門
    型態斷言
    介面組合

    常用 API
            從常用 API 中學習如何撰寫 Go 程式碼。

    基本 IO
    從 io.Reader、io.Writer 開始認識。

    從標準輸入、輸出認識 io
    io.Reader、io.Writer
    bufio 套件
    檔案操作
    error 處理
    到處都在 if err != nil?

    err 是否 nil?
    錯誤的比對
    errors 套件
    資料結構
    sort、list、heap 與 ring 套件。

    sort 套件
    list 套件
    heap 套件
    ring 套件
    文字
    有關字串、位元組等的處理。

    strconv、strings 套件
    bytes 套件
    unicode 套件
    編碼轉換
    反射
    探測資料的結構與相關數值。

    反射入門
    結構欄位標籤
    並行
    簡單的並行模型。

    Goroutine
    Channel

    其他
            一些雜七雜八的東西,暫時放這分類。

    相依管理
    go module 能終結混亂嗎?

    vendor
    模組入門
    WebAssembly 支援
    Go 也可以在瀏覽器裏跳舞?

    哈囉!WebAssembly!
    Go 呼叫 JavaScript
    JavaScript 回呼 Go

    附錄
    Go 官方套件說明文件
    How to Write Go Code
    Go Commands
    Effective Go
    
C語言
    入門基礎
            先作個簡單的程式來運行一下,從瞭解程式語言的資料型態、變數與流程控制語法開始。
    資料型態與變數
            先來個 “Hello! World!” 顯示一下程式執行結果。
    Hello! World!
    資料型態
    字面常量
    變數
    printf 與 scanf
    putchar、getchar、puts、fgets
    運算
            程式的目的就是運算、運算還是運算。
    算術運算、型態轉換
    關係運算、條件運算
    邏輯運算、位元運算
    遞增、遞減、指定運算
    流程控制
         各種條件判斷與迴圈重覆執行語法,可以令程式因應不同的狀況。
    if 條件判斷
    switch 條件判斷
    for 迴圈
    while 迴圈
    break、continue、goto

    進階型態
           陣列、字串、指標等型態常被使用,彼此之間互有相關。
    陣列、字串
         先從陣列開始認識起,並了解字串是以字元陣列組成。
    陣列
    二維(多維)陣列
    字元陣列與字串
    字串處理
           字串是程式中重要的一部份,C 標準函式庫中有一些函式可以協助字串的處理。
    字串長度、複製、串接
    字串比較、搜尋
    字串轉換、字元測試
    字串掃描與格式化
    指標
         指標儲存記憶體位址,擁有型態。
    指標與位址
    指標的運算
    指標與陣列
    指標的指標
    指標與字串
    命令列引數
    malloc、free、calloc 與 realloc

     

    函式
           可以重用的程式碼,可以定義為函式。
    函式入門
         先簡介函式定義,並談談幾個變數可視範圍的議題。
    函式簡介
    引數與傳回值
    inline 函式
    變數範圍
    進階議題
         遞迴呼叫、函式指標等。
    遞迴
    不定長度引數
    函式指標

    複合型態
            struct 將相關的資料包裝在一起,也來看看 enum、union 的使用。
    結構
            將相關的資料包裝在一起。
    定義結構
    結構與指標
    結構組合
    特殊的型態
            enum、union 等的使用。
    列舉
    union
    位元欄位

    其他
            阿散不魯、暫時不分類的東西。
    巨集
            巨集是必要之惡?
    巨集簡介
    預設引數
    _Generic 選擇
    foreach 與陣列
    例外處理
    檔案 I/O
            I/O 的基本。
    文字檔案 I/O
    二進位檔案 I/O

C++
    入門基礎
            先作個簡單的程式來運行一下,並從瞭解程式語言的資料型態、變數與流程控制語法開始。
    資料型態與變數
            先來個 “Hello! World!” 顯示一下程式執行結果,增加一點撰寫程式的信心!
    Hello! World!
    資料型態
    字面常量
    變數
    終端機輸入輸出
    運算
            程式的目的就是運算、運算還是運算。
    算術運算、型態轉換
    關係運算、條件運算
    邏輯運算、位元運算
    遞增、遞減、指定運算
    流程控制
            藉由各種條件判斷與迴圈重覆執行語法,可以令程式因應不同的狀況。
    if 條件判斷
    switch 條件判斷
    for 迴圈
    while 迴圈
    break、continue、goto

    進階型態
            陣列、字串、指標常被使用,看似複雜,但彼此之間互有關聯。
    陣列、字串
            陣列是連續的空間配置。
    陣列
    二維(多維)陣列
    字元陣列與字串
    array、vector 與 string
            使用 array 來替代陣列,使用 vector 容器來儲存可變長度資料,使用 string 來表現字串。
    使用 array
    使用 vector
    使用 string
    指標
            指標可儲存記憶體位址,擁有型態。
    指標與位址
    指標的運算
    指標與陣列
    指標的指標
    指標與字串
    命令列引數
    new 與 delete

    函式
            可重用的的程式碼,可以定義為函式。
    函式入門
            與函式相關的入門語法。
    函式簡介
    inline 與 constexpr 函式
    預設引數
    重載函式
    變數範圍
    遞迴
    參數、傳回值
            參數與傳回值的進階議題。
    參考
    rvalue 參考
    引數與參數
    傳回值型態
    不定長度引數
    模版
            編譯器依模版產生重載函式。
    函式模版
    模版與參考
    可變參數模版
    尾端傳回型態
    傳遞演算法
            傳遞函式、lambda 運算式。
    函式指標
    lambda 運算式
    一級函式與 algorithm
    高階函式

    物件基礎
            將程式中互動的單元視為物件。
    封裝入門
            類別是建構物件時的規格書。
    定義類別
    建構式
    const 與 mutable
    static 成員
    巢狀、區域、匿名類別
    運算子重載
    自訂型態轉換
    函子
    類別模版
    成員指標
    管理物件
            控制物件的解構、複製、移動,以及動態配置物件的管理。
    解構式、複製與移動
    auto_ptr
    unique_ptr
    shared_ptr
    weak_ptr
    特殊的封裝
            特殊的類別或值域。
    列舉
    union
    位元欄位

    物件導向
            認識繼承與多型。
    繼承
            繼承某類別並加以擴充。
    繼承共同行為
    遮蔽父類方法
    虛擬函式
    純虛擬函式(一)
    純虛擬函式(二)
    模版與繼承
    RTTI
    多重繼承
            沒事別亂用啊!
    多重繼承
    多重繼承的建構
    虛擬繼承
    多重繼承的複雜

    程式規劃
            錯誤的通知、名稱的控管。
    例外
            例外是可傳播、可捕捉的錯誤值。
    簡介例外處理
    捕捉自訂例外
    使用標準例外
    重拋例外
    名稱空間
            避免名稱衝突。
    簡介名稱空間
    關於 namespace
    使用 using

    程式庫
            常用的程式庫。
    I/O
            I/O 格式控制、檔案 I/O。
    I/O 格式控制器
    I/O 格式化旗標
    文字檔案 I/O
    二進位檔案 I/O

    附錄
    C++ 之父給初學者的信
    C++ reference
    
GTK
    入門
            先來嘗試一下幾個簡單的 GTK 程式,並初步了解一些核心特性。
    Hello!World! Orz..
    第一步,當然是先 克服 GTK 的安裝問題,然後來個簡單的 Hello!World! Orz…
    Ubuntu 下安裝 GTK
    第一 個 GTK 程式
    Windows 下第一個 GTK 程式
    GTK 的物件導向架構
    Signal 與 Callback
    在 GTK 的元件上操作,會發出特定的 Signal ,將 Signal 連接至特定的 Callback 函式,以完成對某個動作的處理。
    使用 Signal 關閉視窗
    自訂 callback 函式
    內建 Signal 的發射與停止
    事件處理
    GDK 事件會傳播給 GtkWidget,引發一個與事件相對應的事件 Signal,再透過 Callback 函式處理事件。
    GDK 事件結構
    GTK 事件處理函式
    事件遮罩(Event Mask)
    基本版面配置
    基本上就是透過水平與垂直包裝盒,將元件置於其中以完成所需的版面配置。
    GtkHBox 與 GtkVBox
    GtkFrame 與 GtkButtonBox
    GtkTable
    其它
    GTK 官方網站上,有許多的參考文件與範例,為入門時的必看資料。
    GTK 參考文件
    簡介 Glade

    基本圖形元件
            元件講是講不完的,這邊主要在簡介幾個基本元件之作用。
    按鈕
    按鈕是視窗 程式中最基本的元件。
    GtkButton 與 GtkToggleButton
    影像及文字按鈕
    GtkCheckButton 與 GtkRadioButton
    對話方塊
    對話方塊用來與使用者作簡單的訊息交換與溝通。
    GtkMessageDialog
    GtkAboutDialog
    GtkColorButton 與 GtkColorSelectionDialog
    GtkFontButton 與 GtkFontSelectionDialog
    GtkFileChooserButton 與 GtkFileChooserDialog
    使用 GtkDialog 自訂對話方塊
    文字欄位
    文字欄位是使用者輸入資訊的基本元件。
    GtkEntry
    GtkSpinButton
    GtkTextView
    選項清單
    這邊的選項清單元件,遵守 MVC 設計,使用上較為複雜但應用彈性大。
    GtkComboBox
    GtkComboBox 與 GtkListStore
    GtkComboBox 與 GtkTreeStore
    GtkTreeView 與 GtkListStore
    GtkTreeView 與 GtkTreeStrore
    版面元件
    除了上面介紹的三種基本版面配置之外,還可以使用一些版面元件來協助元件的群組與版面的切割。
    GtkNotebook
    GtkPaned
    GtkScrolledWindow
    GtkAlignment、 GtkFixed 與 GtkLayout
    GtkFrame 與 GtkAspectFrame

     
    進階元件使用
            來看看一些選單、列、等元件之使用與組合方式,以及繪圖、列印等功能。
    選單元件
    選單是視窗程式最 常見的功能了。
    GtkHandleBox
    GtkMenuBar、 GtkMenu 與 GtkMenuItem
    GtkCheckMenuItem、 GtkRadioMenuItem 與 GtkTearoffMenuItem
    GtkUIManager
    列元件
    進度列、工具列、 狀態列。
    GtkProgressBar
    GtkToolBar
    GtkStatusBar
    其它元件
    簇繁不及備載…Orz…
    GtkStyle 與資源檔
    GtkLabel
    GtkScale
    GtkEntryCompletion
    GtkArrow
    GtkRuler
    GtkAssistant
    GtkCalendar
    GtkDrawingArea

    GLib
            GLib 是 GTK 所需的函式庫之一,不過它是個可獨立使用的函式庫。
    基本型態、巨集、公用(Utility)函式
    一些有的沒的常用函式,先放在一起講……Orz
    GLib 基本型態與巨集
    GTimer
    Timeout 與 Idle
    環境資訊
    日誌 (Logging)
    輸入輸出
    來了解一些基本檔案讀寫、目錄資訊的取得方式,以及輸入輸出 Channel 的使用。
    基本檔案讀寫
    目錄資訊
    GIOChannel 與檔案處理
    GIOChannel 與 Pipe
    資料結構、記憶體配置
    來看看 GLib 提供了哪些常用的資料結構處理及動態記憶體配置函式。
    GString
    GArray、GPtrArray、 GByteArray
    GSList、 GList
    GHashTable
    GTree 與 GNode
    記憶體配置
    執 行緒
    GLib 提供了 GThread 作為多執行緒的支援。
    GThread
    GMutex
    GCond

    附錄
    GTK+ 2.0 Tutorial
    GTK+ Reference Manual
    GTK+ / Gnome Application Development
    GTK+ and Glade3 GUI Programming Tutorial
    GTK+ 2.0 Tree View Tutorial

QT4
    入門
            先來嘗試一下幾個簡單的 Qt 程式,並初步了解一些核心特性。
    Hello!World! Orz..
    第一步,當然是先克服 Qt 的安裝問題,然後來個簡單的 Hello!World! Orz…
    Windows XP/Vista 下安裝 Qt4
    第一個 Qt 程式 
    簡單的顯示中文(使用 Unicode 轉換)
    Signal 與 Slot
    Signal 與 Slot 是 Qt 的特性,讓物件之間可以同步的(Synchronous)通知訊息,但又不必知道彼此,Signal 是由物件發出。
    使用 Signal 與 Slot(使用按鈕關閉視窗)
    使用 Signal 與 Slot(使用拉桿改變LCD數字)
    自訂 Signal 與 Slot
    事件處理
    事件基本上是非同步的(Asynchronousd),通常由視窗或系統發出,讓應用程式可以回應使用者動作或系統訊息。
    事件類型與處理者
    事件接受與否、event() 方法
    事件過濾器
    自訂與傳送事件
    基本版面配置
    Qt 的三種基本版面配置類型為水平、垂直及格狀(Grid)配置。
    QHBoxLayout 與 QVBoxLayout 版面配置
    QGridLayout 版面配置
    較複雜的版面配置
    自訂版面配置管理員(Layout Manager)
    其它
    Qt 在發行時,本身即帶有豐富的參考文件與範例,為入門時的必看資料。
    Qt 參考文件與範例
    簡介 Qt Designer

    常用圖型元件
            元件講是講不完的,這邊主要在簡介幾個元件作用,想了解每個元件詳細使用方式, Qt 參考文件與範例 才是 王道。
    按鈕選項
    按鈕與選項是視窗程式中最基本的元件。
    QPushButton
    QCheckBox 與 QRadioButton
    QComboBox
    對話方塊
    對話方塊用來與使用者作簡單的訊息交換與溝通。
    QInputDialog 與 QMessageBox
    QColorDialog 與 QFontDialog
    QFileDialog
    自訂對話方塊(Dialog)
    文字欄位
    文字欄位是使用者輸入資訊的基本元件。
    QLineEdit
    QTextEdit
    清單元件
    這類元件通常用於顯示項目清單,可以簡單的列示,或者是使用樹狀或表格等。
    QListWidget 與 QListWidgetItem
    QTreeWidget 與 QTreeWidgetItem
    QTableWidget 與 QTableWidgetItem
    Model 與 View 類別
    版面元件
    除了上面介紹的三種基本版面配置之外,還可以使用一些版面元件來協助元件的群組與版面的切割。
    QTabWidget
    QSplitter
    QStackedLayout
    QScrollArea
    其它元件
    簇繁不及備載…Orz…
    QScrollBar
    QTimer 與 QLCDNumber
    QProgressBar
    QWizard
    QMainWindow
    QMdiArea
    QSplashScreen

     
    常用 API
            Qt 已經不只是個 GUI 框架,它提供豐富的 API,可作為撰寫應用程式的基礎。
    QString、容器元件
    QString 是常用的類別之一,擁有一些與容器類似的特性,而 Qt 提供了一系列的通用容器類別(Container class),使用上更輕量級且安全。
    QString
    循序容器(QVector、QLinkedList、QList…)
    關聯容器(QMap、QHash…)
    泛型演算(Generic Algorithms)
    檔案處理
    檔案輸入輸出是一個應用程式所必備的,藉由檔案的輸入輸出,也可以一同瞭解Qt的I/O處理。
    QFile
    QTextStream
    QDataStream
    QFileInfo 與 QDir
    Qt 資源系統
    資料庫
    QtSql 模組提供與平台、資料庫無關的資料庫存取需求,在這邊使用 MySQL 作為示範。
    Qt 的 MySQL  驅動程式
    QSqlQuery
    QSqlQueryModel 與 QSqlTableModel
    繪圖
    Qt  繪圖基於 QPainter,可於 QPaintDevice 的子類別上,進行幾何圖案、圖像、文字等繪製。
    QPainter
    QMatrix
    QPixmap、 QBitmap、QImage 與 QPicture
    QPrinter
    拖放(Drag & Drop)與剪貼
    拖放動作對於使用者是很直覺的操作,而剪貼簿可以方便使用者於不同的應用程式間分享資料。
    拖放事件
    拖放的執行與接受
    剪貼簿(QClipboard)
    網路
    Qt 的網路模組提供網路存取時的高階與低階 API,基於非同步(Asynchronous)及 Signal 的行為。
    QHttp
    QFtp
    QTcpSocket
    QTcpServer

    進階議題
            進階議題就是比較進階的議題。。XD
    多執行緒(Multithreading)
    想要實作多執行緒功能,只要繼承 QThread 類別,單就表面上來看,執行緒並不困難。
    QThread
    執行緒的停止
    QMutex 與 QMutexLocker
    QWaitCondition
    QReadWriteLock 與 QSemaphore 
    QThreadStorage
    國際化(Internationalization)
    讓您的應用程式可以因地制宜,顯示不同的語系文字。
    使用 Unicode
    翻譯應用程式
    多國語系選擇與切換

    附錄
    Qt 4 初體驗
    Ubuntu 下安裝 Qt 4.3.1
    Qt Eclipse integration for C++
    QDeveloper: Free cross-platform Development Environment for Qt4 

JAVA
    起步走
        這邊的起步走需要的時間長了一些,因為慢一點才會快一點 …

    Java 平台概論
    Java 不僅是程式語言,也代表解決問題的平台,更代表了原廠、各個廠商、社群、開發者與使用者溝通的成果。

    Java 版本遷移
    JDK 規範與實作
    JVM、JRE 與 JDK
    JDK 安裝與認識
    從 JDK 到 IDE
    顯示 “Hello World” 很簡單,然而,別過於樂觀地以為,你想從事的程式設計工作就是如此容易駕馭。

    PATH 是什麼?
    JVM 與 CLASSPATH
    編譯器與 CLASSPATH
    管理原始碼與位元碼檔案
    想像一下,如果程式規模稍大,一堆 .java 與 .class 檔案還放在一起,會有多麼混亂。

    編譯器與 SOURCEPATH
    使用 package 管理類別
    使用 import 偷懶
    JRE 與類別檔案版本

    Java 語法基礎
        各種程式語言都有其誕生的宗旨與演化過程,對這些基本語法元素,也就會有其獨有的特性。

    型態、變數與運算子
    我們先從型態開始探討….

    型態
    變數
    運算子
    型態轉換
    流程控制
    為了告訴電腦特定條件下該執行的動作,要使用各種條件式來定義程式執行的流程。

    if..else、switch 條件式
    for、while 迴圈
    break、continue

    認識物件
            使用 Java 撰寫程式幾乎都在使用物件,要產生物件必須先定義類別。

    類別與物件
    類別是物件的設計圖,物件是類別的實例。

    定義類別
    使用標準 API 類別
    物件指定與相等性
    基本型態包裹器
    瞭解如何包裹基本型態,這有助於進一步瞭解物件與基本型態的差別。

    包裹基本型態
    自動裝箱、拆箱內幕
    陣列物件
    陣列在 Java 是物件,之前介紹過的物件基本性質,在操作陣列時也都要注意。

    陣列基礎
    操作陣列物件
    陣列複製
    字串物件
    在 Java 中,字串本質是包裹字元陣列的物件,是 java.lang.String 類別的實例。

    字串基礎
    字串特性
    字串編碼

     
    Java 物件導向
            封裝、繼承、多型 … 以及用 Java 實現 …

    封裝
    定義類別並不等於作好了物件導向中封裝(Encapsulation)的概念,那麼到 底什麼才有封裝的意涵?

    封裝物件初始流程
    封裝物件操作流程
    封裝物件內部資料
    類別語法細節
    討論過物件導向中封裝的通用概念,以及如何用 Java 語法實現,接下來要討論 Java 的特定語法細節。

    public 權限修飾
    關於建構式
    重載
    使用 this
    static 類別成員
    不定長度引數
    內部類別
    傳值呼叫
    繼承與多型
    並非為了避免重複定義實作就使用繼承。

    繼承共同實作
    多型與 is-a 關係
    重新定義實作
    抽象方法、抽象類別
    繼承語法細節
    結合 Java 的特性,繼承還有許多細節必須明瞭。

    protected 成員
    重新定義的細節
    再看建構式
    再看 final 關鍵字
    java.lang.Object
    再看抽象類別
    介面與多型
    什麼情況叫濫用繼承?介面代表的又是什麼?

    介面定義行為
    行為的多型
    解決需求變化
    介面語法細節
    結合 Java 的特性,介面還有一些細節必須明瞭。

    介面的預設
    匿名內部類別

    例外處理
            程式中總有些意想不到的狀況所引發的錯誤。

    語法與繼承架構
    只要你能捕捉包裝錯誤的物件,就可以針對該錯誤作一些處理。

    使用 try、catch
    例外繼承架構
    要抓還是要拋?
    貼心還是造成麻煩?
    認識堆疊追蹤
    關於 assert
    例外與資源管理
    若因錯誤而拋出例外,你的設計是否還能正確地關閉資源呢?

    使用 finally
    自動嘗試關閉資源
    java.lang.AutoCloseable

    泛型、列舉、標註
            就是介紹泛型、列舉、標註 …

    自訂泛型
    泛型定義可以相當複雜,用與不用有所取捨。

    定義與使用泛型
    靜態方法上的泛型
    泛型的 extends
    泛型的 super
    自訂列舉
    用列舉型態取代列舉常數。

    使用 enum 列舉常數
    瞭解 java.lang.Enum
    進階 enum 運用
    關於標註
    對程式碼加些標註,給人看也給機器讀。

    常用標準標註
    自訂標註型態
    讀取標註資訊

    Lambda
            新的語法、新的典範、新的能力與更重的責任。

    Lambda 語法
    有關 Lambda 前世今生,可參考 Java Lambda Tutorial,以下只從 Java 看 Lambda。

    匿名類別與 Lambda
    Lambda 表示式與函式介面
    this 與 final
    方法與建構式參考
    Collection 與 Lambda
    為了支援 Lambda,Collection 做了增強,因而你得先認識 Collection。

    認識 Collection 架構
    具有索引的 List
    內容不重複的 Set
    支援佇列操作的 Queue
    Iterable 與 Iterator
    介面預設方法
    Comparable 與 Comparator
    Functional API
    源於函數式的概念,終於走進命令式的 Java。

    使用 Optional 取代 null
    Consumer、Function、Predicate 與 Supplier
    使用 Stream 進行管線操作
    Stream 的 reduce 與 collect
    Optional 與 Stream 的 flatMap
    Stream 與平行化

    JDK9
    淺談 Java 模組平臺系統
    JDK9 總於可以拼圖了…XD
    JVM 與 module-path
    編 譯器與 module-path
    編 譯器與 module-source-path
    不可變的 Collection 與 Map
    變不變有關係嗎?

    淺談不可變特性
    Collections 的 unmodifiableXXX() 方法
    List、Set、Map 的 of() 方法
    再談堆疊追蹤
    臭蟲追追追….

    取得 StackTraceElement
    JDK9 的 Stack-Walking API
    深入模組化
    真的要模組化了嗎?啊啊啊…..XD

    具名模組、未具名模組
    顯式模組、自動模組
    一般模組、開放模組(模組與反射)
    模組與 ServiceLoader
PYTHOM
    起步走
            從一些簡單的語法與型態開始,了解 Python 內建特性,這已經足夠讓你作不少運算了。
    基本環境與互動
    指令互動環境可以讓你隨時測試一些小程式,基本輸出入讓你了解如何以程式與使用者 互動並儲存結果。
    指令互動環境
    簡介模組
    基本輸入輸出
    內建型態與操作
    常用的物件都是語法內建,語法簡潔且功能豐富。
    數值型態
    字串型態
    字串格式化
    串列
    集合
    字典
    Tuple
    變數、運算子與物件
    Python 是動態語言,所有資料都是物件。
    變數
    運算子
    物件與記憶體管理
    陳述句
    基本的流程語法不多,但可以作的事很多。
    if 陳述句
    for 與 while 陳述句
    for 包含式(Comprehension)
    try、raise 陳述句

    函式、類別與模組
            封裝演算、定義物件行為、組織程式元件。
    函式
    def 是陳述句,函式是物件。
    def 陳述句
    lambda 運算式
    變數範圍
    yield 產生器
    類別
    是物件的共同定義,也是個名稱空間。
    定義類別
    靜態方法、類別方法
    特性名稱空間
    特殊方法名稱
    建構、初始與消滅
    繼承
    抽象類別
    物件相等性
    模組
    是個檔案,也是個功能元件。
    匯入模組
    import、import as、from import
    匯入套件
    模組名稱空間

     
    進階議題
        一些知道會更好的東西。
    例外
    凡事有例外,有些是對的,有些是錯的,好好處理就是。
    再看 try、raise
    使用 assert
    使用 with as
    自訂例外
    特性控制
    物件上的特性不受控制嗎?其實你可以的。。XD
    property() 函式
    描述器
    __slots__
    __getattribute__()、__getattr__()、 __setattr__()、__delattr__()
    修飾器
    在不改變其它程式的前題下,增加程式的功能。
    函式修飾器
    類別修飾器
    方法修飾器
    Meta class
    在建立 type 實例之前,你可以作一些有的沒的。。XD
    type 類別
    定義 meta class
    再看抽象類別

    參考資料
    The Python Tutorial
    Dive into Python3
    Python 3 Primer, Part 1: What’s new
    Python 3 Primer, Part 2: Advanced topics
    Style Guide for Python Code

Ruby
    起步走
          從一些簡單的語法與型態開始,了解 Ruby 內建特性,這已經足夠讓你作不少運算了。
    基本指令與觀念
    指令互動環境可隨時測試小程式,基本輸出入可了解如何與程式互 動並儲存結果。
    irb 與 ruby 指令
    load 與 require
    基本輸入輸出
    內建型態與操作
    常用的物件為語法內建,初學者面對編碼可別混亂。
    數值型態
    字串型態
    關於編碼
    符號型態
    陣列型態
    雜湊型態
    範圍型態
    變數、操作與物件
    所 有資料都是物件,+、-、*、/都是方法,訊息觀念為 Ruby 特色。
    變數
    操作方法
    淺談物件、訊息與方法
    流程控制
    Ruby 擁有彈性的流程語法,特有的區塊觀念。
    if 與 unless
    while、until、loop 與 for
    case…when…else
    begin…rescue…ensure

    方法、類別與模組
          封裝演算、定義物件行為、組織程式元件。
    方法
    def 定義方法,可接收引數與程式區塊。
    def 定義方法
    迭代器與程式區塊
    變數範圍
    類別
    是物件的共同定義,單例方法其實也有個匿名單例類別。
    定義類別
    特殊方法定義
    單例方法、實例方法、類別方法
    類別變數
    關於 self
    建構、初始與消滅
    使用繼承
    抽象類別與介面
    物件相等性
    模組
    可抽離共通的功能實作,類別可動態地含括(include)模 組功能。
    定義模組
    堆疊擴充
    再看變數範圍
    再看 self
    方法查找順序

     
    進階議題
            一些知道會更好的東西。
    類別
    類別是 Class 實例,Class 本身是類別,Object 上頭還有 BasicObject。
    關於 Class
    匿名單例類別
    BasicObject
    檢視物件
    可執行物件
    程式區塊不是 Proc,lambda 是 Proc 實例,必要時可將方法包裝為 Method 實例。
    程式區塊與 Proc
    使用 lambda
    取得 Method
    方法
    還有一些方便的方法。
    inherited、 included、extended 方法
    *_missing、*method_added 方法
    *eval 方法

    參考資料
    The Philosophy of Ruby
    Ruby 1.9: It works!
    Ruby Styleguide
    RubyGems Guides

Rails
    起步走
          自動化很方便,但底層細節更值得研究。
    基礎觀念
    從安裝到快速建立 CRUD,大致掌握 Rails 整體概念。
    安裝 Rails
    MVC 與 Rails
    基本路由
    基本 CRUD 程式
    RESTful 與 Rails
    關於編碼
    基本請求、回應
    處理請求與回應,是 Web 程式服務的開端。
    params 與 request
    讀取請求本體
    render 與 redirect_to
    respond_to 與 respond_with
    head、headers 與 response
    send_data 與 send_file
    會話管理
    HTTP 是無狀態協定,Web 程式記不得的資訊,你要主動告知。
    隱藏欄位
    Cookie
    使用 session
    session 原理
    使用 flash
    使用過濾器
    關於畫面
    回應頁面與資產的管理方式很重要。
    樣版(Template)
    版型(Layout)
    輔助方法(Helper)
    資產(Assets)
    關於 ActiveRecord
    Active Record 模式簡化了複雜度,內建的驗證機制很方便。
    ActiveRecord 基礎
    資料庫遷移
    資料驗證
    回呼與觀察者

     
    進階
          功能很多作個開頭,更多細節參考官方文件。
    環境設定
    進一步瞭解應用程式環境,雖是麻煩但總是必要。
    專案環境
    觀摩 Scaffold
    RESTful 路由
    簡介 plugins
    簡介 Bundler
    關於回應
    要讓使用者看到想要的回應,總是有各種方式。
    結合 Ajax
    使用 ActionMailer
    簡介 i18n
    ORM 設定
    無論如何,看到ORM還是很頭痛。
    一對一關聯
    一對多關聯
    多對多關聯
    多型關聯
    單表繼承映射
    測試
    為了走更遠的路。
    認識 Rails 測試
    模型測試
    控制器測試
    頁面流程測試
    郵件測試

    參考資料
    Ruby on Rails 實戰聖經
    Rails 初上手指南
    Ruby on Rails Guides (v3.1.3)
    Ruby on Rails Documentation
    Deploying Ruby on Rails is easy
    
常見程式演算
    河內塔
    費式數列
    巴斯卡三角形
    三色旗
    老鼠走迷官(一)
    老鼠走迷官(二)
    騎士走棋盤
    八個皇后
    八枚銀幣
    生命遊戲
    字串核對
    背包問題(Knapsack Problem)
    雙色、三色河內塔
    蒙地卡羅法求 PI
    Eratosthenes 篩選求質數
    超長整數運算(大數運算)
    長 PI
    最大公因數、最小公倍數、因數分解
    完美數
    阿姆斯壯數
    最大訪客數
    中序式轉後序式(前序式)
    後序式的運算
    洗撲克牌(亂數排列)
    Craps 賭博遊戲
    約瑟夫問題(Josephus Problem)
    排列組合
    格雷碼(Gray Code)
    產生可能的清單
    產生可能的清單(字典順序)
    m 元素清單的 n 元素子清單
    數字拆解
    得分排行
    選擇、插入、氣泡排序
    Shell 排序法 – 改良的插入排序
    Shaker 排序法 – 改良的氣泡排序
    Heap 排序法 – 改良的選擇排序
    快速排序法(一)
    快速排序法(二)
    快速排序法(三)
    合併排序法
    基數排序法    
    循序搜尋法(使用衛兵)
    二分搜尋法(搜尋原則的代表)
    插補搜尋法
    費氏搜尋法
    稀疏矩陣
    多維矩陣轉一維矩陣
    上三角、下三角、對稱矩陣
    奇數魔方陣
    4N 魔方陣
    2(2N+1) 魔方陣
    自產生程式(Quine)
    Y Combinator
    手動迷宮
    簡易自動迷宮
    隨機迷宮
    你的程式夠 「亂」嗎?
    遞迴、碎形與數學
    來點不同的河內塔    
電腦圖學入門
    二維座標系
    繪圖座標系
    基本的二維座標轉換
    太空船座標旋轉
    三維座標系
    創造物體的遠近感(透視)
    三維直角座標之繞軸旋轉
    齊次座標
    四元數與旋轉
    向量運算
    函式圖形繪製
    頂點索引陣列
    無索引頂點陣列
    正多面體頂點
    水晶球頂點
    旋轉體、錐狀體、柱狀體頂點
    畫家深度排序
    平面法線判定法
    曲面法線判定法
    最大最小法
    Z Buffer法    
    色彩簡介
    色譜簡介
    表面的受光
    二維海龜繪圖法
    三維海龜繪圖法
    科赫曲線
    樹木曲線
    蕨葉曲線
    雪花曲線
    龍形曲線
    希爾伯特曲線
    十字繡曲線
    樹林與倒影
    動畫簡介
    動畫程式骨架
    雙緩衝區繪圖
    畫框檔案管理
    捲軸背景
    平面地圖
    斜角地圖
    迷宮(斜角地圖實例)
    煙火
    煙粒子
    煙火與煙
    

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *