1. Programming Language
    1. Programming Paradigm
      1. Agent-oriented
      2. Component-based
        1. Flow-based
        2. Pipeline
      3. Concatenative
      4. Concurrent computing
      5. Data-driven
      6. Declarative
        1. Functional
          1. Dataflow
          2. Cell-oriented (spredsheets)
          3. Reactive
          4. Graph-oriented
          5. Goal-directed
          6. Constraint
          7. Logic
          8. Constraint logic
          9. Abductive logic
          10. Inductive logic
      7. Event-driven
        1. Service-oriented
        2. Time-driven
      8. Expression-oriented
      9. Feature-oriented
      10. Function-level
      11. Parallel computing
        1. Process-oriented
      12. Programming in the large
      13. Programming in the small
      14. Imperative
        1. Non-structured
          1. Array
          2. Iterative
        2. Structured
          1. Procedural
          2. Modular
          3. Recursive
          4. Object-oriented
          5. Class-based
          6. Prototype-based
          7. Automata-based
          8. By separation of concerns
          9. Aspect-oriented
          10. Subject-oriented
          11. Role-oriented
      15. Metaprogramming
        1. Attribute-oriented
        2. Automatic
          1. Generic
          2. Template
          3. Policy-based
          4. Language-oriented
          5. Domain-specific
          6. Grammar-oriented
          7. Dialecting
          8. Intentional
        3. Reflective
      16. Nondeterministic
      17. Value-level
      18. Semantic-oriented
    2. TIOBE
    3. C
      1. Books
        1. The C Programming Language‎
          1. 导言
          2. 类型、运算符与表达式
          3. 控制流
          4. 函数与程序结构
          5. 指针与数组
          6. 结构
          7. 输入与输出
          8. UNIX系统接口
        2. C: In a Nutshell
        3. Programming in C
        4. C Programming: a Modern Approach
          1. C语言概述
          2. C语言基本概念
          3. 编写简单C程序
          4. 预处理 -> 编译 -> 链接
          5. gcc
          6. -o 指定输出
          7. -Wall 检查程序
          8. 通用形式
          9. 指令 main() { 语句; }
          10. 注释
          11. /***** * * *****/ 盒型
          12. 不可嵌套
          13. 变量和赋值
          14. 类型
          15. 声明
          16. 初始化 vs 赋值
          17. 读入输入
          18. scanf
          19. 定义常量
          20. 宏定义
          21. 标识符
          22. 关键字不可做名字
          23. 程序布局
          24. 缩进
          25. 格式化的输入/输出
          26. 表达式
          27. 选择语句
          28. 循环
          29. 基本类型
          30. 数组
          31. 函数
          32. 程序结构
          33. 指针
          34. 指针和数组
          35. 字符串
          36. 预处理器
          37. 编写大规模程序
          38. 结构、联合和枚举
          39. 指针的高级应用
          40. 声明
          41. 程序设计
          42. 低级程序设计
          43. 标准库
          44. 输入/输出
          45. 库对数值和字符数据的支持
          46. 错误处理
          47. 国际化特性
          48. 其他库函数
        5. C Primer Plus‎
        6. Expert C Programming: Deep C Secrets‎
          1. C: 穿越时空的迷雾
          2. 这不是Bug,而是语言特性
          3. 分析C语言的声明
          4. 令人震惊的事实: 数组和指针并不相同
          5. 数组并非指针
          6. 我的代码为何无法运行
          7. 文件1: int mango[100]; 文件2: extern int * mango; /* 引用mango[i]的代码 */
          8. 什么是声明,而什么是定义
          9. extern 告诉编译器对象的类型和名字,对象的内存分配在别处进行
          10. 数组和指针如何访问
          11. 左值(地址) = 右值(地址的内容)
          12. 数组名 vs 可修改的左值
          13. 左值编译时可知,右值运行时可知
          14. 指针需要间接取址
          15. 定义为指针,以数组方式引用
          16. char a[] = "abcd"; ... a[i] // 编译器符号表有a的地址 addr; 取地址 addr+i 的内容 char * p = "abcd"; ... p[i] // 编译器符号表有p的地址 addr; 提取 addr 处指针的值 value; 取地址 value+i 的内容
          17. 使声明和定义相匹配
          18. 文件1: int mango[100]; 文件2: extern int mango[]; /* 引用mango[i]的代码 */
          19. 数组和指针的其他区别
          20. 区别
          21. Topic
          22. 保存数据
          23. 保存数据的地址
          24. Topic
          25. 间接访问数据
          26. 直接访问数据
          27. Topic
          28. 常用于动态数据结构
          29. 常用于存储固定数目且类型相同的元素
          30. Topic
          31. malloc、free
          32. 隐式分配和删除
          33. Topic
          34. 指向匿名数据
          35. 自身为数据名
          36. 字符串常量初始化
          37. char a[] = "abcd"; // 只读 // 不可修改 未定义行为 char * p = "abcd"; // 可以修改
          38. 对链接的思考
          39. 运动的诗章,运行时数据结构
          40. a.out及其传说
          41. assembler output 的缩写
          42. 0407
          43. 超级块
          44. #define FS_MAGIC 0x011954
          45. ELF
          46. COFF
          47. Segment 包含几个 Section
          48. Unix中的段 vs x86内存模型中的段
          49. size 命令
          50. text data bss
          51. nm -s 命令
          52. objdump -t 命令
          53. a.out 文件
          54. a.out神奇数字 a.out其他内容 BSS段所需大小 数据段 初始化后的全局和静态变量 文本段 可执行文件的指令
          55. 局部变量不进入a.out 运行时创建
          56. BSS
          57. 只保存没有值的变量
          58. 不占据目标文件的空间
          59. 操作系统在a.out文件里干了些什么
          60. 对内存的思考
          61. 为什么程序员无法分清万圣节和圣诞节
          62. 再论数组
          63. 什么时候数组和指针相同
          64. 再论指针
          65. 你懂得C,所以C++不在话下
          66. 程序员工作面试的秘密
          67. 怎样检测到链表中存在循环
          68. C语言中不同的增值语句的区别
          69. 库函数调用和系统函数调用的区别
          70. 文件描述符和文件指针的区别
          71. 编写代码确定变量是有符号数还是无符号数
          72. 打印一棵二叉树的值的时间复杂度
          73. 从文件中随机提取一个字符串
        7. C Traps and Pitfalls‎
          1. 词法“陷阱”
          2. 语法“陷阱”
          3. 语义“陷阱”
          4. 链接
          5. 什么是链接器
          6. 将目标模块整合成载入模块
          7. 处理命名冲突
          8. lint
          9. 声明与定义
          10. 每个外部变量只能定义一次
          11. 命名冲突与static修饰符
          12. 作用域限制在一个源文件內
          13. 形参、实参和返回值
          14. 函数必须在使用之前声明
          15. 类型自动转换
          16. 检查外部类型
          17. 头文件
          18. 外部对象只在头文件中声明
          19. 库函数
          20. 预处理器
          21. 可移植性缺陷
          22. 建议与答案
        8. Pointers on C
          1. 快速上手
          2. 基本概念
          3. 数据
          4. 语句
          5. 操作符和表达式
          6. 指针
          7. 函数
          8. 数组
          9. 字符串、字符和字节
          10. 结构和联合
          11. 动态内存分配
          12. 使用结构和指针
          13. 高级指针话题
          14. 预处理器
          15. 输入、输出函数
          16. 标准函数库
          17. 经典抽象数据类型
          18. 运行时环境
        9. ISO/IEC 9899:1999
      2. ANSI C
        1. ANSI
        2. C89
        3. C90
        4. C99
          1. ISO/IEC 9899:1999
        5. C1x
      3. Keywords
        1. _Bool
          1. 布尔类型,值为0或1
        2. _Complex
          1. 复数实部
        3. _Imaginary
          1. 复数虚部
        4. auto
          1. 局部变量(默认)
        5. break
          1. 转移到循环和分支末尾
        6. case
          1. switch-case
        7. char
          1. 字符型
        8. const
          1. 变量和指针值不可变
        9. continue
          1. 转移到循环和分支开始
        10. default
          1. switch默认情形
        11. do
          1. do-while循环
        12. double
          1. 双精度浮点型
        13. else
          1. if-else
        14. enum
          1. 枚举
        15. extern
          1. 标识符在别处声明
        16. float
          1. 单精度浮点型
        17. for
          1. for循环
        18. goto
          1. 无条件转移
        19. if
          1. 条件
        20. inline
          1. 内联,将函数在调用处展开
        21. int
          1. 整型
        22. long
          1. 长整型
        23. register
          1. 寄存器变量,优化
        24. restrict
          1. 指针是访问一个数据对象唯一且初始的方式
        25. return
          1. 返回
        26. short
          1. 短整型
        27. signed
          1. 有符号
        28. sizeof
          1. 返回表达式或类型大小
        29. static
          1. 函数及全局变量为文件作用域; 局部变量放在静态存储区
        30. struct
          1. 结构
        31. switch
          1. 分支
        32. typedef
          1. 创建新类型
        33. union
          1. 联合
        34. unsigned
          1. 无符号
        35. void
          1. 函数无返回值; 函数无参数; 无类型指针
        36. volatile
          1. 变量可在其他地方被修改,应从内存读取
        37. while
          1. while循环
      4. Types
        1. Promotion
        2. Conversion
        3. Cast
        4. Basic
        5. Derived
          1. Enumeration
          2. Structure
          3. Union
          4. Bit-Field
      5. Variables
        1. Naming Rules
          1. 以字母或下划线(_)开头,跟着零到多个字母、数字、下划线
          2. 以下划线开头的名字通常被保留用于库程序
          3. C关键字被保留
          4. 通常变量名小写而预处理名大写
          5. 名字可以为任意长度,但前31个字符必须唯一
          6. 如果名字文件外部可见,ANSI C 标准只保证前6个字符可用并且可能不区分大小写
      6. Constants
        1. 符号
        2. 字符
        3. 字符串
        4. 整型
        5. 浮点型
      7. Operators
        1. () [] -> .
          1. 表达式
        2. ! ~ ++ -- + - * (type) sizeof
          1. 一元
        3. * / %
          1. 乘法
        4. + -
          1. 加法
        5. << >>
          1. 位移
        6. < <= > >=
          1. 关系
        7. == !=
          1. 相等
        8. &
          1. 按位与
        9. ^
          1. 按位异或
        10. |
          1. 按位或
        11. &&
          1. 逻辑与
        12. ||
          1. 逻辑或
        13. ?:
          1. 条件
        14. = += -= *= /= %= &= ^= |= <<= >>=
          1. 赋值
        15. ,
          1. 顺序
      8. Expressions
      9. Statements
      10. Functions
        1. Callback
        2. Inline
      11. Linkage
        1. External
        2. Internal
        3. No
      12. Preprocessing Directives
        1. #
          1. 空指令
        2. #define
          1. 定义宏MACRO (参数)
        3. #undef
          1. 结束作用域, 可重新定义
        4. 条件编译
          1. #if
          2. #elif
          3. #else
          4. #endif
          5. #ifdef
          6. #ifndef
        5. #include
          1. 插入头文件内容
          2. <标准库文件>
          3. “自定义文件”
          4. 可15层嵌套
        6. #line
          1. 改变行号和文件名
        7. #error
          1. 错误信息
        8. #pragma
          1. 修改编译器设置
        9. \来续行
      13. Libraries
        1. GLIBC
          1. GNU C Library
        2. Standard Libraries
          1. <assert.h>
          2. <complex.h>
          3. <ctype.h>
          4. <errno.h>
          5. <fenv.h>
          6. <float.h>
          7. <inttypes.h>
          8. <iso646.h>
          9. <limits.h>
          10. <locale.h>
          11. <math.h>
          12. <setjmp.h>
          13. <signal.h>
          14. <stdarg.h>
          15. <stdbool.h>
          16. <stddef.h>
          17. <stdint.h>
          18. <stdio.h>
          19. <stdlib.h>
          20. <string.h>
          21. <tgmath.h>
          22. <time.h>
          23. <wchar.h>
          24. <wctype.h>
      14. Skills
        1. 不用临时变量, 交换a和b的值
          1. a ^= b; b ^= a; a ^= b;
          2. a = a+b; b = a-b; a = a-b;
    4. C++
      1. Books
      2. 分支主题 2
      3. 分支主题 3
      4. 分支主题 4
      5. 分支主题 5
      6. 分支主题 6
      7. STL
      8. Boost
    5. C#
    6. Java
    7. Script Language
      1. ECMAScript
        1. JavaScript
    8. PHP
      1. PHP: Hypertext Preprocessor
      2. Zend
    9. Ruby
      1. Rails
    10. Perl
      1. Practical Extraction and Report Language
      2. TMTOWTDI
      3. CPAN
      4. Perl 6
    11. Python
      1. EIBTI
      2. Tkinter
      3. Django
      4. Jython
    12. Go
    13. Source Code Formatter
      1. Artistic Style
    14. Unicode
      1. UTF
  2. Books
    1. Code Complete
    2. The Pragmatic Programmer
  3. Algorithms + Data Structures = Programs
    1. Data Structures
      1. ADT
      2. Linear
        1. Array
      3. Tree
      4. Graph
      5. Set
    2. Algorithms
      1. Books
      2. Array Sort
        1. Straight Insertion
        2. Shell
        3. Bubble
        4. Cocktail
        5. Gnome
        6. Quick
        7. Selection
        8. Heap
        9. Merge
        10. Bucket (Bin)
        11. Counting
        12. Radix
      3. Brute-Force
      4. Recursion
      5. Divide & Conquer
      6. Dynamic Programming
      7. Greedy
      8. Backtracking
      9. Branch & Bound
      10. Random
      11. Search
        1. Sequential
        2. Binary
        3. Binary Tree
        4. Hash-based
      12. Graph
        1. Minimum Spanning Tree
          1. Prim
          2. Kruskal
          3. Boruvka
          4. Euclidean MST
        2. Shortest Path
          1. Single-source
          2. Bellman-Ford
          3. SPFA
          4. Dijkstra
          5. All-pairs
          6. Floyd-Warshall
          7. Johnson
  4. Patterns
    1. GoF Design Patterns
      1. Creational
        1. Abstract Factory
        2. Builder
        3. Factory Method
        4. Prototype
        5. Singleton
          1. Multiton
      2. Structural
        1. Adapter
          1. Class
          2. Object
        2. Bridge
        3. Composite
        4. Decorator
        5. Facade
        6. Flyweight
        7. Proxy
      3. Behavioral
        1. Chain of Responsibility
        2. Command
        3. Interpreter
        4. Iterator
        5. Mediator
        6. Memento
        7. Observer
        8. State
        9. Strategy
        10. Template Method
        11. Visitor
    2. PoEAA
    3. POSA
    4. MVC
      1. MVC1
      2. MVC2
  5. Compiler