NICOLÁS BOTTARINI
Back to the path

Computing foundations

Programming Languages

615 pages of reading · 3 h 58 min of video

How programming languages work: compilers and interpreters, types, paradigms. Understanding the ideas behind languages lets you learn a new one quickly and choose the right one for each problem.

Topics

  • History

    History of Languages and Paradigms, Differences between Paradigms

  • Compilers Basics

    Lexical Analysis, Parsing, Semantic Analysis, Optimization, Code Generation, Lexical Scoping, Interpreters, Stack, Heap, Linker, Loader, Syntax Tree, Intermediate Language, Type Checking, Symbol Table, Static vs Dynamic Typing, Parse Trees, Tokens, Lexemes

  • Theory of Languages

    Finite State Machines, Determinism/Nondeterminism, Pushdown Automata, Turing Machine, Alphabets, Context-Free Grammar, Values, Literals, Expressions vs Statements, Variables, Types, Scoping

  • Regular Expressions

    Literals, Escaping, OR, Groups, Character Classes, Ranges, Negations, Dot, Boundary Matchers, Quantifiers, Greedy, Non-Capturing Groups, Back References, Lookahead, Lookbehind

  • Structured Programming

    Goto Considered Harmful, Sequence, Selection and Iteration

  • Object-Oriented Programming

    Metaphors, Objects, Responsibilities, Messages, Interfaces / Protocols, Collaboration / Collaborators, Classes, Inheritance, Abstract/Concrete, Delegation, Polymorphism, Encapsulation, Components, Methods, Late/Dynamic Binding, Marshalling/Serialization, Closures, Lambdas, Blocks

  • Functional Programming

    Immutability, Side-Effects, Pure Functions, Currying, Functors, Monads, Higher-Order Functions, Partial Functions, Recursion, Reduce, Fold

  • Memory Management

    Manual Allocation/Deallocation, Garbage Collection, Tracing, Reference Counting

Resources