40 Things Every Programmer Should Know...But Doesn't!!!
A Brief Overview of What You Don't Know
Tanton H. Gibbs
- Classical Algorithms
- On Performance
- Big "O"
- Sorting
- Searching
- Hashing
- Graph Algorithms
- Depth First Search
- Breadth First Search
- Transitive Closure
- Matching
- Shortest Path
- Code Maintenance
- Refactoring
- Automated Builds, Unit Tests, and Acceptance Tests
- Coding Standards and Idioms
- When (and how) to Rewrite Code
- When (and how) NOT to Rewrite Code
- Design Patterns and Principles
- Design Patterns and Pattern Languages
- DRY and YAGNI
- DIP and DI
- Open/Closed Principle and LSP
- Code Smells
- Design by Contract
- Invariants
- Pre-Conditions
- Post-Conditions
- Hierarchy Constraints
- Language Support
- Programming Languages
- O'Caml
- Haskell
- Eiffel
- D
- Ruby
- Domain Specific Languages
- Why do you need them?
- Using an existing language pt 1
- Using an existing language pt 2
- Rolling your own pt 1
- Rolling your own pt 2
- Language Interoperability
- FFI and LCD
- JNI
- Boost.Python
- SWIG
- The Heavyweights