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 ] 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

  • [ h ] Brilliant

  • [ h ] CodeSignal

  • [ h ] CodeWars

  • [ h ] HackerRank

  • [ h ] LeetCode

Open Education

  • [ h ][ y ] MIT OpenCourseware

  • [ h ] Stanford Online

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#

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

  • [ y ] 11-30-2023. ForrestKnight. “These Coding Projects Will Set You Apart as a Programmer (w/ Instructions Included)”.

  • [ y ] 12-08-2020. NeetCode. “How I Got Good at Coding Interviews”.


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.

  • 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 ] 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 ] 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.