Programming#
Table of Contents#
Sections#
Languages#
[ w ] 1GL First-Generation Languages
[ w ] 2GL Second-Generation Languages
[ w ] 3GL Third-Generation Languages
[ w ] 4GL Fourth-Generation Languages
[ w ] 5GL Fifth-Generation Languages
[ w ] Assembly
[ w ] AWK
[ w ] BASIC
[ w ] Brainfuck
[ w ] C
[ w ] C++
[ w ] C#
[ w ] COBOL
[ w ] Fortran
[ w ] Go
[ w ] Haskell
[ w ] Java
[ w ] JS JavaScript
[ w ] Julia
[ w ] Lisp
[ w ] Markdown
[ w ] Mathematica
[ w ] MATLAB
[ w ] OCaml
[ w ] Perl
[ w ] PHP
[ w ] Python
[ w ] R
[ w ] Ruby
[ w ] Rust
[ w ] Scala
[ w ] Scheme
[ w ] Shell
Resources#
https://sourcemaking.com/design_patterns
Open Education
Learning to code and related
[ h ] AlgoExpert
[ h ] Code Ninjas
[ h ] Codecademy
[ h ] DataCamp
[ h ] Data School
[ h ] Edabit
[ h ] freeCodeCamp
[ h ] Learn Code the Hard Way
[ h ] Mimo
[ h ] Pluralsight
[ h ] Programiz
YouTube#
Computerphile
[ y ]
12-07-2023
“Optimising Code - Computerphile”.
David Bombal
[ y ]
02-04-2024
. “Free Complete Course: You need to learn this programming language to be a senior developer!”.
Low Level Learning
[ y ]
02-07-2024
. “how you can master the lowest levels of coding”.[ y ]
01-07-2023
. “every good programmer should know how to code this data structure (its easy)”.
more
Texts#
[ w ] 1999
Hunt, Andrew & David Thomas. The Pragmatic Programmer. Addison-Wesley.
[ h ][ w ] 1999
Kernighan, Brian W. & Rob Pike. The Practice of Programming. Addison-Wesley.
[ h ] Kneuth, Donald. The Art of Computer Programming.
Hyde, Randall. (2020). Write Great Code, Volume 3: Engineering Software. No Starch Press.
Hyde, Randall. (2020). Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level. 2e. No Starch Press.
Kohnfelder, Loren. (2021). Designing Secure Software: A Guide for Developers. No Starch Press.
Kneusel, Ronald T. (2024). Math for Programming. No Starch Press.
Mitchell, John C. (1996). Foundations of Programming Languages. MIT Press.
Orbaiceta, Angel Sola. (2021). Hardcore Programming for Mechanical Engineers: Build Engineering Applications from Scratch. No Starch Press.
Peirce, Benjamin C. Advanced Topics in Types and Programming Languages.
Peirce, Benjamin C. Types and Programming Languages.
Scott, Michael. Programming Language Pragmatics.
Steinhart, Jonathan E. (2019). The Secret Life of Programs: Understand Computers–Craft Better Code. No Starch Press.
Winskel, Glynn. The Formal Semantics of Programming Languages: An Introduction.
Figures#
[ w ]
1940-----
DeMarco, Tom
Terms#
[ w ] Application
[ w ] Array Programming
[ w ] Assertion
[ w ] Assignment
[ w ] Attribute
[ w ] Backspace
[ w ] Block
[ w ] Boolean
[ w ] Call by Reference
[ w ] Call by Value
[ w ] Call Stack
[ w ] Calling Convention
[ w ] Circular Dependency
[ w ] Closure
[ w ] Comma-Separated Values (CSV)
[ w ] Command
[ w ] Command Line Interface
[ w ] Compile Time
[ w ] Compiled Programming Language
[ w ] Complex Data Type
[ w ] Computer Language
[ w ] The Computer Language Benchmarks Game
[ w ] Conditional
[ w ] Constant
[ w ] Constraint Programming
[ w ] Control Flow
[ w ] Coupling
[ w ] Cursor
[ w ] Data-Oriented Design
[ w ] Data Type
[ w ] Dataflow Programming
[ w ] Debugging
[ w ] Declaration
[ w ] Declarative Programming
[ w ] Dictionary
[ w ] Dynamic Dispatch
[ w ] Dynamic Linker
[ w ] Dynamically-Typed Programming Language
[ w ] Entry Point
[ w ] Error Message
[ w ] Escape Sequence
[ w ] Evaluation Strategy
[ w ] Exception Handling
[ w ] Execution
[ w ] Expression
[ w ] File Format
[ w ] FizzBuzz
[ w ] First-Class Citizen
[ w ] First-Class Function
[ w ] Function
[ w ] Function Overloading
[ w ] Functional Programming
[ w ] General-Purpose Programming Language
[ w ] Generic Programming
[ w ] High-Level Programming Language
[ w ] Identifier
[ w ] Imperative Programming
[ w ] Indentation
[ w ] Indentation Style
[ w ] Infinite Loop
[ w ] Input/Output (I/O)
[ w ] Integer
[ w ] Integrated Development Environment (IDE)
[ w ] Interface
[ w ] Interpreted Programming Language
[ w ] Interpreter
[ w ] Just-in-time Compilation (JIT)
[ w ] Key-Value Pair
[ w ] Language Construct
[ w ] Late Binding
[ w ] Lazy Evaluation
[ w ] Lexical Analysis
[ w ] Line
[ w ] Link Time
[ w ] Loader
[ w ] Logical Programming
[ w ] Lookup Table
[ w ] Low-Level Programming Language
[ w ] Matrix
[ w ] Memoization
[ w ] Method
[ w ] Modular Programming
[ w ] Mutable Object
[ w ] Name Binding
[ w ] Name Resolution
[ w ] Namespace
[ w ] No-op
[ w ] Null-Terminated String
[ w ] Object
[ w ] Object-Oriented Programming (OOP)
[ w ] Order of Operations
[ w ] Parameter
[ w ] Plain Text
[ w ] Pointer
[ w ] Primitive Data Type
[ w ] Procedural Programming
[ w ] Program
[ w ] Programming
[ w ] Programming Language
[ w ] Programming Language Generation
[ w ] Programming Language Theory
[ w ] Programming Paradigm
[ w ] Pseudocode
[ w ] Pure Function
[ w ] Reactive Programming
[ w ] Reference
[ w ] Return Statement
[ w ] Rule of Least Power
[ w ] Run Time
[ w ] Runtime Environment
[ w ] Scope
[ w ] Script
[ w ] Scripting Language
[ w ] Semi-Structured Data
[ w ] Short-Circuit Evaluation
[ w ] Side Effect
[ w ] Software
[ w ] Software Design Pattern
[ w ] Software Development Kit (SDK)
[ w ] Source Code
[ w ] State
[ w ] Statement
[ w ] Static Dispatch
[ w ] Stream Processing
[ w ] String
[ w ] Structured Data
[ w ] Syntax
[ w ] Syntax Error
[ w ] Tab-Separated Values (TSV)
[ w ] Tab Key
[ w ] Tab Stop
[ w ] Table
[ w ] Tabular Data
[ w ] Terminal Emulator
[ w ] Terminal User Interface (TUI)
[ w ] Text Box
[ w ] Text Editor
[ w ] Text File
[ w ] Transpiler
[ w ] Type Signature
[ w ] Type System
[ w ] Type Theory
[ w ] Unstructured Data
[ w ] User
[ w ] User Interface (UI)
[ w ] Value
[ w ] Variable
[ w ] Vectorized Computation
[ w ] Web Browser
[ w ] Widget
[ w ] Word Processor
Notes#
General-Purpose vs Special-Purpose
[ s ] Compiled vs Interpreted
High-Level vs Low-Level
Statically Typed vs Dynamically Typed
[ s ] Run Time vs Compile Time
Programming vs Scripting
The REPL: the interpreter reads and evaluates an expression and prints its value.
Names refer to computational objects. A name identifies a variable whose value is the computational object.
The (global) environment is the memory in which name-object pairs are kept track of.