update
This commit is contained in:
368
html/naming.md2.html
Normal file
368
html/naming.md2.html
Normal file
@@ -0,0 +1,368 @@
|
||||
<h1 id="awesome-naming-awesome">Awesome Naming <a
|
||||
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
|
||||
alt="Awesome" /></a></h1>
|
||||
<!-- lint disable no-repeat-punctuation -->
|
||||
<p>Famously… <!-- lint enable no-repeat-punctuation --></p>
|
||||
<blockquote>
|
||||
<p>There are only two hard things in Computer Science: cache
|
||||
invalidation and naming things.</p>
|
||||
<p>― Phil Karlton</p>
|
||||
</blockquote>
|
||||
<p>Concepts in computer science are usually nothing tangible so it’s no
|
||||
surprise that naming things is hard. Nevertheless, we <em>do</em> come
|
||||
up with clever, creative and funny names. Some of them so established,
|
||||
we never pause and admire.</p>
|
||||
<p>This is a curated list for when naming things is done right.</p>
|
||||
<h2 id="contents">Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#data-structures-and-algorithms">Data Structures and
|
||||
Algorithms</a></li>
|
||||
<li><a href="#design-patterns-and-anti-patterns">Design Patterns and
|
||||
Anti Patterns</a></li>
|
||||
<li><a href="#functions">Functions</a></li>
|
||||
<li><a href="#it-security">IT Security</a></li>
|
||||
<li><a href="#machine-learning-and-artificial-intelligence">Machine
|
||||
Learning and Artificial Intelligence</a></li>
|
||||
<li><a
|
||||
href="#programming-languages-and-programming-language-theory">Programming
|
||||
Languages and Programming Language Theory</a></li>
|
||||
<li><a href="#theoretical-computer-science">Theoretical Computer
|
||||
Science</a></li>
|
||||
<li><a href="#tools-applications-libraries-frameworks">Tools,
|
||||
Applications, Libraries, Frameworks</a></li>
|
||||
<li><a href="#user-interface-design">User Interface Design</a></li>
|
||||
<li><a href="#other">Other</a></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h2 id="data-structures-and-algorithms">Data Structures and
|
||||
Algorithms</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://de.wikipedia.org/wiki/Backtracking">Backtracking</a> -
|
||||
When you explore a search space and you reach a dead end, you follow
|
||||
your <em>tracks</em> back to the last crossroad and try the other
|
||||
way.</li>
|
||||
<li><a href="https://en.m.wikipedia.org/wiki/Brute-force_search">Brute
|
||||
force</a> - Violence is actually almost always a solution but not a very
|
||||
clever one.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Greedy_algorithm">Greedy
|
||||
algorithm</a> - An algorithm that finds a solution by always picking the
|
||||
currently best looking option without thinking too much about past and
|
||||
future decisions.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Hill_climbing">Hill
|
||||
climbing</a> - Starting somewhere in the hilly “landscape” of solutions
|
||||
you go in the direction of steepest ascent until reaching the top of a
|
||||
hill. You might miss higher hills though.</li>
|
||||
<li><a
|
||||
href="https://rapidapi.com/blog/israeli-queues-exploring-a-bizarre-data-structure/">Israeli
|
||||
Queue</a> - A type of priority queue and a reference to the infamously
|
||||
unorganized queues in Israel. Here items can <em>cut in line</em> when
|
||||
they <em>have already waiting friends</em>.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">Stack</a>
|
||||
- Like with a stack of pancakes you can only add and remove items from
|
||||
the top of this data structure.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Tree_(data_structure)">Tree</a> - A
|
||||
hierarchically organized data structure. From the <em>root</em> item the
|
||||
other items <em>branch out</em> into <em>nodes</em> and <em>leaves</em>.
|
||||
A collection of trees is often called a <em>forest</em>.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Queue_(abstract_data_type)">Queue</a>
|
||||
- In this data structure items are always added at the end and removed
|
||||
at the front as if the items were waiting in line.</li>
|
||||
</ul>
|
||||
<h2 id="design-patterns-and-anti-patterns">Design Patterns and Anti
|
||||
Patterns</h2>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Adapter_pattern">Adapter</a>
|
||||
- Allows classes with incompatible interfaces to work together by
|
||||
wrapping its own interface around that of an already existing
|
||||
class.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Facade_pattern">Facade</a> -
|
||||
Analogous to a facade in architecture, a facade is an object that serves
|
||||
as a front-facing interface masking more complex underlying
|
||||
structure.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Futures_and_promises">Promise</a> -
|
||||
A representation of a result that is available in the future, unless
|
||||
there are errors. Like in reality, promises are broken sometimes.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Shotgun_surgery">Shotgun
|
||||
surgery</a> - A programming antipattern where in a single change you
|
||||
wildly add code everywhere in your codebase.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Spaghetti_code">Spaghetti
|
||||
Code</a> - A program with a tangled and hard-to-follow stucture.</li>
|
||||
</ul>
|
||||
<h2 id="functions">Functions</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Fold_(higher-order_function)">fold</a>
|
||||
- Like a blanket being folded up, this function iterates a collection
|
||||
and in each step combines the current item with everything that has
|
||||
already been folded.</li>
|
||||
<li><a
|
||||
href="https://hackage.haskell.org/package/base-4.19.0.0/docs/Text-ParserCombinators-ReadP.html#v:munch">munch</a>
|
||||
- Parser function that greedily consumes an input stream until it’s
|
||||
satisfied.</li>
|
||||
<li><a
|
||||
href="https://clojuredocs.org/clojure.core/trampoline">trampoline</a> -
|
||||
Continuously runs functions which itself return functions. Like a child
|
||||
on a trampoline that <em>returns</em> and bounces back up.</li>
|
||||
<li><a
|
||||
href="https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:zip">zip</a>
|
||||
- Merges two lists into one list of pairs like the interlocking teeth of
|
||||
a zipper.</li>
|
||||
</ul>
|
||||
<h2 id="it-security">IT Security</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Backdoor_(computing)">Backdoor</a> -
|
||||
A method of bypassing normal authentication in a computer system.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Computer_virus">Computer
|
||||
virus</a> - A computer program that self replicates by
|
||||
<em>infecting</em> other computer programs similar to the behavior of
|
||||
biological viruses.</li>
|
||||
<li><a
|
||||
href="https://digitalguardian.com/blog/what-cyber-hygiene-definition-cyber-hygiene-benefits-best-practices-and-more">Cyber
|
||||
hygiene</a> - Steps and practices that users should take to maintain
|
||||
system health and improve online security.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Honeypot_(computing)">Honeypot</a> -
|
||||
Part of a system meant to look like an attractive target but actually
|
||||
helps detect and deflect attackers.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Phoning_home">Phoning
|
||||
home</a> - When a system (e.g. stolen computer) secretly reports back to
|
||||
a third party other than the current possessor. The name is a reference
|
||||
to the movie E.T.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Sandbox_(computer_security)">Sandbox</a>
|
||||
- A safe and isolated environment to test unverified programs that may
|
||||
contain malicious code.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Trojan_horse_(computing)">Trojan
|
||||
horse</a> - Malware which misleads users of its true intent. The term is
|
||||
derived from the Ancient Greek story of the deceptive Trojan Horse.</li>
|
||||
</ul>
|
||||
<h2 id="machine-learning-and-artificial-intelligence">Machine Learning
|
||||
and Artificial Intelligence</h2>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Confusion_matrix">Confusion
|
||||
matrix</a> - A tabular summary of a classifiers “confusion”, i.e. how
|
||||
often it thought to make correct predictions when it actually
|
||||
didn’t.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Decision_boundary">Decision
|
||||
boundary</a> - A boundary dividing the space of possible data points.
|
||||
Here you decide, everything on this side is SPAM, everything on that
|
||||
side is not.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Gradient_descent">Gradient
|
||||
descent</a> - Minimizing a cost function by iteratively computing the
|
||||
gradient and moving in the direction of steepest descent.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)">Hallucination</a>
|
||||
- A confident response by an AI that does not seem to be justified by
|
||||
its training data.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets">Training</a>
|
||||
- The process of showing the machine a bunch of examples, until it
|
||||
learns what we want from it.</li>
|
||||
</ul>
|
||||
<h2
|
||||
id="programming-languages-and-programming-language-theory">Programming
|
||||
Languages and Programming Language Theory</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Choreographic_programming">Choreographic
|
||||
programming</a> - A programming paradigm where programs are compositions
|
||||
of interactions among multiple concurrent participants.</li>
|
||||
<li><a href="https://clojure.org/">Clojure</a> - A functional language
|
||||
making extensive use of <strong>closures</strong> but with a
|
||||
<strong>j</strong> because it’s running on the Java virtual
|
||||
machine.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/C%2B%2B#External_links">C++</a> -
|
||||
Although C was certainly a bad name, C++ was quite clever. The iconic
|
||||
increment operator <strong>++</strong> indicates that
|
||||
<strong>C++</strong> is the successor.</li>
|
||||
<li><a
|
||||
href="https://en.m.wikipedia.org/wiki/Garbage_collection_(computer_science)">Garbage
|
||||
Collector</a> - Part of a program that attempts to find and reclaim
|
||||
garbage pieces of memory not used anymore.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Lazy_evaluation">Lazy
|
||||
evaluation</a> - An evaluation stategy which suspends evaluation until
|
||||
it’s absolutely necessary and then never does it again.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Syntactic_sugar">Syntactic
|
||||
sugar</a> - Syntax that makes the language “sweeter” for human use.
|
||||
Usually a shorthand for common operations that can also be expressed in
|
||||
a more verbose form.</li>
|
||||
</ul>
|
||||
<h2 id="user-interface-design">User Interface Design</h2>
|
||||
<ul>
|
||||
<li><a href="https://www.saasframe.io/blog/the-bento-layout-trend">Bento
|
||||
layout</a> - A grid based layout resembling the compartmentation of
|
||||
bento boxes.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Breadcrumb_(navigation)">Breadcrumb</a>
|
||||
- Navigational aid allowing users to keep track of their location within
|
||||
programs, documents, or websites. The term is a reference to the fairy
|
||||
tale <em>Hansel and Gretel</em>.</li>
|
||||
<li><a
|
||||
href="https://www.nngroup.com/articles/designing-effective-carousels/">Carousel</a>
|
||||
- A kind of animated slideshow looping back on itself.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Clipboard_(computing)">Clipboard</a>
|
||||
- Where you temporarily put <em>files</em> you are working with
|
||||
(i.e. the copy & paste buffer).</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Desktop_metaphor">Desktop</a>
|
||||
- The metaphorical top of the user’s desk, upon which objects such as
|
||||
documents and folders of documents can be placed.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Hamburger_button">Hamburger
|
||||
button</a> - A button to toggle a menu. The associated icon resembles a
|
||||
hamburger.</li>
|
||||
<li><a
|
||||
href="https://uxplanet.org/optimistic-1000-34d9eefe4c05">Optimistic
|
||||
UI</a> - User interfaces that assume expensive operations will complete
|
||||
successfully thereby improving the perceived performance.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Scrolling">Scrolling</a> -
|
||||
Screen content is often less like a book with discrete pages and more
|
||||
like a continuous roll of parchment, i.e. a scroll.</li>
|
||||
</ul>
|
||||
<h2 id="theoretical-computer-science">Theoretical Computer Science</h2>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Busy_beaver">Busy Beaver</a>
|
||||
- Turing machines that produce numbers so insanly large, no other
|
||||
algorithm can keep up with them.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Clique_problem">Clique
|
||||
problem</a> - The problem of finding groups of mutual friends in a
|
||||
network of people with friendship relations. Or more general, finding
|
||||
complete subgraphs.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game
|
||||
of Life</a> - A game world that showcases how astonishing complexity can
|
||||
arise from very simple ingredients.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Oracle_machine">Oracle</a> -
|
||||
A black box that magically gives answers even to undeciable questions
|
||||
like the halting problem.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Pumping_lemma">Pumping
|
||||
lemma</a> - The fact that in some formal languages any sufficiently long
|
||||
string can be <em>pumped</em> with repetitions of its substring and the
|
||||
result stays in the same formal language.</li>
|
||||
</ul>
|
||||
<h2 id="tools-applications-libraries-frameworks">Tools, Applications,
|
||||
Libraries, Frameworks</h2>
|
||||
<ul>
|
||||
<li><a href="https://github.com/GoogleChromeLabs/clooney">clooney</a> -
|
||||
A JavaScript library implementing the actor model for concurrent
|
||||
computation. The term is a reference to George Clooney who is also an
|
||||
actor.</li>
|
||||
<li><a
|
||||
href="https://web.archive.org/web/20150514123425/http://www.wired.co.uk/news/archive/2014-07/22/cockroachdb">CockroachDB</a>
|
||||
- Database application, that is marketed as being so fault tolerant and
|
||||
resilient as a cockroach.</li>
|
||||
<li><a href="https://github.com/corrosion-rs/corrosion">corrosion</a> -
|
||||
The process that turns metal into rust (literally) but also a tool that
|
||||
“turns” C++ into Rust.</li>
|
||||
<li><a href="https://github.com/jesseduffield/horcrux">horcrux</a> -
|
||||
Splits a file into encrypted fragments that only together can be
|
||||
decrypted again. In the Harry Potter universe, Horcruxes are fragments
|
||||
of a persons soul. To kill the person, all fragments must be
|
||||
destroyed.</li>
|
||||
<li><a href="https://github.com/puppeteer/puppeteer">Puppeteer</a> - A
|
||||
browser automation library. If the browser is the puppet, this is the
|
||||
puppeteer.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Safari_(web_browser)">Safari</a> -
|
||||
Web browser developed by Apple.</li>
|
||||
<li><a href="https://tldr.sh/">tldr</a> - Simplified man pages with
|
||||
practical examples.</li>
|
||||
<li><a href="https://github.com/mishoo/UglifyJS">Uglify</a> - A
|
||||
JavaScript minifier. Removes everything that makes the code readable and
|
||||
pretty to make it smaller.</li>
|
||||
<li><a href="https://github.com/transloadit/uppy">uppy</a> - A dog
|
||||
themed uploader component. The name is a blend of <em>upload</em> and
|
||||
<em>puppy</em>. It even comes with a crash recovery plugin called
|
||||
<em>Golden Retriever</em>.</li>
|
||||
<li><a href="https://webpack.js.org/">Webpack</a> - A bundler for
|
||||
JavaScript and other <em>web</em> assets with a short and descriptive
|
||||
name that also somewhat rhymes.</li>
|
||||
<li><a href="https://yarnpkg.com/">yarn</a> - NodeJS dependency
|
||||
manager.</li>
|
||||
</ul>
|
||||
<h2 id="other">Other</h2>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Numeronym">a11y, i18n, k8s,
|
||||
…</a> - Abbreviating long words by keeping the first and last letter and
|
||||
writing the number of omitted letters in between.</li>
|
||||
<li><a
|
||||
href="https://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/">ACID
|
||||
vs. BASE</a> - Acronyms describing competing database ideologies (aka.
|
||||
SQL vs. NoSQL). Note that acid and base are also opposites in
|
||||
chemistry.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Bottleneck#Computing">Bottleneck</a>
|
||||
- A central part of a network/application that significantly limits
|
||||
throughput/performance and should ideally be eliminated.</li>
|
||||
<li><a
|
||||
href="https://en.m.wikipedia.org/wiki/Brick_(electronics)">Brick</a> -
|
||||
When your device is so corrupted it virtually turns into a brick.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Letter_case#Use_within_programming_languages">camelCase,
|
||||
snake_case, kebab-case</a> - Different case styles where the name
|
||||
illustrates its appearance.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Code_golf">Code golf</a> -
|
||||
Writing a program in as few characters as possible. Just like how Golf
|
||||
players try to win in the fewest club strokes.</li>
|
||||
<li><a
|
||||
href="https://devblogs.microsoft.com/oldnewthing/20091201-00/?p=15843">Cookie
|
||||
licking</a> - E.g. claiming a GitHub issue, then not working on it.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Easter_egg_(media)">Easter
|
||||
egg</a> - A hidden feature especially in video games in reference to the
|
||||
Easter egg hunt.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Firmware">Firmware</a> - The
|
||||
<em>ware</em> between <em>software</em> and <em>hardware</em>.</li>
|
||||
<li><a href="https://floating-point-gui.de/formats/fp/">Floating point
|
||||
number</a> - This representation can encode numbers at very different
|
||||
magnitudes with limited amount of digits by letting the radix point
|
||||
<em>float</em> instead of being fixed in place.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Software_framework">Framework</a> -
|
||||
In software architecture (like in actual architecture) frameworks
|
||||
provide basic structure to build upon that guide and constrain the
|
||||
further development.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Glue_code">Glue Code</a> -
|
||||
Jenga and LEGO bricks don’t share the same interface but you can always
|
||||
glue them together.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Heisenbug">Heisenbug</a> - A
|
||||
bug that seems to disappear or change when one tries to study it. It’s a
|
||||
pun on Werner Heisenberg who discovered that the act of observing
|
||||
quantum systems inevitably alters their state.</li>
|
||||
<li><a
|
||||
href="https://computer-dictionary-online.org/definitions-h/hydra-code">Hydra</a>
|
||||
- A bug that, when an attempt to fix is made, introduces multiple new
|
||||
bugs. It’s a bug that cannot be fixed.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Magic_(programming)">Magic</a> - A
|
||||
magic program/piece of code is doing it’s job but nobody knows how. Like
|
||||
in reality, magic doesn’t actually exist. Once you understand it, it’s
|
||||
not magic anymore.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Starvation_(computer_science)">Process
|
||||
starvation</a> - A problem where a process is perpetually denied
|
||||
resources to do its work.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Time_travel_debugging">Time
|
||||
travel debugging</a> - Stepping back in time through source code to
|
||||
understand execution and sometimes even to change history.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Tree_shaking">Tree
|
||||
shaking</a> - Shake the dependency tree until all the dead parts are
|
||||
falling off and you end up with a nice lean tree.</li>
|
||||
<li><a
|
||||
href="https://www.youtube.com/watch?v=CvLsVfq6cks&t=835s">Unfair
|
||||
enumeration</a> - A program that outputs all even numbers and then all
|
||||
odd numbers generates an unfair enumeration of the natural numbers
|
||||
because some numbers are never reached.</li>
|
||||
<li><a href="https://eslint.org/docs/latest/rules/yoda">Yoda
|
||||
condition</a> - When you write <code>if ("red" === color) {</code>
|
||||
instead of <code>if (color === "red") {</code> because it reads as, “if
|
||||
red equals the color”, similar to the way the Star Wars character Yoda
|
||||
speaks.</li>
|
||||
</ul>
|
||||
<p><a href="https://github.com/gruhn/awesome-naming">naming.md
|
||||
Github</a></p>
|
||||
Reference in New Issue
Block a user