Some fragmented programming-related notes, not meant as introduction or tutorial
Data: Numbers in computers ·· Computer dates and times ·· Data structures
Wider abstractions: Programming language typology and glossary · Generics and templating ·· Some abstractions around programming · · Computational complexity theory notes · Synchronous, asynchronous · First-class citizen
Syntaxy abstractions: Constness · Memory aliasing · Binding, assignment, and such · Hoisting · Closures · Context manager · Garbage collection
Language specific: Python notes ·· C and C++ notes · Compiling and linking ·· Lua notes
Algorithms: Dynamic programming · Sorting · String search · Sequence alignment and diffs
Sharing stuff: Communicated state and calls · Locking, data versioning, concurrency, and larger-scale computing notes ·· Dependency hell
Design concepts: Entanglement, Decoupling; Information Hiding, Inversion · Design patterns
Teams and products: Programming in teams, working on larger systems, keeping code healthy · Benchmarking, performance testing, load testing, stress testing, etc. · Maintainability
More applied notes: Optimized number crunching · OS-level notes · File polling, event notification · Webdev · GUI toolkit notes · StringBuilder
Mechanics of duct taping software together: Automation, remote management, configuration management · Build tool notes · Packaging · Installers
|
First-class citizen tends to refer to a language in which a particular thing is like any other - and without any trickery.
For example, in Javascript and Python, functions are first-class objects:
They are part of the language's typing system, you can construct them, you can return them, you can hand them around and assign them to variables.
Contrast this with C++, where functions themselves are not first class objects - after compilation,
they do not exist as things you can hand around and inspect,
only really as "if you put the right things on the stack and jump here, things will happen as expected".
(...with footnotes, I know.)
Raphael Finkel splits this particular case out out a bit more:
- first-class - An entity you can pass as a parameter, return, and assign to a variable
- second-class - an entity you can passed as a parameter, cannot returned from a function, and cannot store into a variable
- third-class - an enitity you cannot pass as a parameter, cannot returned from a function, and cannot store into a variable
(TODO: examples)
https://en.wikipedia.org/wiki/First-class_citizen