An Expert's Guide to Compilation Terms
Why is this Compilers meme funny?
Level 1: Engine Goes Vroom
Imagine a little kid proudly declaring, “I know how a car works!” Then they say: “The engine is the vroom-maker, the wheels are the spinny circles, and gasoline is the car juice that makes it go.” The child is very sure of this explanation – and it’s kinda cute – but of course those aren’t the real technical terms at all. We laugh because the kid has the right general idea (the engine does make the car go, gas does power it), but their names for everything are hilariously simple and off-base. It’s the difference between childish confidence and actual knowledge. That’s exactly what’s happening in this programming meme. A newbie developer confidently says they know all about “compiling,” then uses made-up terms like “good code compiler” and “linker dude” to describe the process. Those terms sound silly to anyone who knows the real ones, just like the kid’s “vroom-maker” does. The newbie’s explanation is bold and wrong — and that contrast between their confidence and reality is why it’s so funny. It’s as if they’re viewing a very complex machine through a child’s eyes and giving everything a cute, literal name. In the end, we’re laughing because their overly simple labels for compilers and files are adorable and comic, just like a child’s wacky description of how a car works.
Level 2: Meet the Toolchain
For those newer to low-level programming, let’s translate each item from the meme into its real meaning. These are all parts of the C/C++ build process – the steps that turn your source code into a running program:
- GCC – This actually stands for the GNU Compiler Collection. It’s a very popular compiler (a program that turns source code into machine code) on Linux and many other systems. Despite the meme’s “good code compiler” joke, GCC’s name reflects that it’s a collection of compilers for different languages (C, C++, and more) under the GNU project. On the command line, you invoke it with the
gcccommand to compile C code (and it will call other stages behind the scenes as needed). - Clang – Clang is another C/C++ compiler, part of the LLVM project. The meme calls it “compiler language,” but the name Clang is basically shorthand for “C language family compiler.” It does the same job as GCC – compiling C or C++ source files into machine code – but it uses the LLVM infrastructure under the hood. Many developers use Clang for its helpful error messages and modern design. You run it with the
clangcommand. - ld – This is the linker program (the name comes from “link editor”). After you compile code into object files, the linker’s job is to link them together. It takes all the
.ofiles (and any libraries) and combines them into a single executable program or library file. The meme’s “linker dude” is a playful way to refer to this tool. In practice,ldis just a command-line program that doesn’t say much — unless something goes wrong (then you’ll see error messages from it complaining about missing references or libraries!). - lld – This is the LLVM project’s own linker, essentially an alternate version of
ld. It doesn’t literally mean “little linker dude” – that’s just the joke. Think oflldas “the LLVM linker.” It performs the same linking process asld, but it’s developed as part of LLVM to be faster and more flexible. If you’re using Clang/LLVM, you might uselldto link your files, but if you’re using GCC, you’ll probably stick with the default GNU linker (ld). As a beginner, you might not encounterlldunless you venture into LLVM-specific tools. - LLVM – This stands for Low Level Virtual Machine. It’s not actually a linker or a virtual machine you run your programs on, but rather a framework for building compilers and related tools. LLVM provides a common intermediate code representation and lots of reusable code for generating and optimizing machine code. Clang uses LLVM behind the scenes to do the heavy lifting for code generation. The meme jokingly expanded it as “little linker virtual machine,” but in reality “LLVM” is just a name — nowadays it’s an umbrella term for the entire suite of compiler tools.
- .c – This is the file extension for a C source code file. (In general, a filename ending in
.cmeans “C language source file.”) It’s simply a text file that contains the C code you write. The meme calls it a “code file,” which is basically correct –.cfiles are where your high-level code lives. - .o – This is the file extension for an object file (the output produced after a C file is compiled). It’s essentially a machine code file that isn’t a complete program by itself – rather, it’s one piece of the program, containing the translated instructions from one source file. The letter “o” here stands for “object.” (Despite the meme’s joke, a
.ofile isn’t actually surprised by your code – the name just comes from “object code,” not an exclamation “oh!”) - .a – This is the file extension for a static library, often called an archive file. A
.afile bundles one or more.oobject files into a single package (kind of like a library of pre-compiled code that can be reused). The “a” comes from “archive.” (So no, it’s not a screaming file – the meme was being silly. The.ajust means we’ve archived some object code together.)
Bringing it all together: in a typical C/C++ project, you compile each .c source file into a .o object file, then use a linker to combine those object files (and any .a libraries) into the final executable program. For example, if you have two source files main.c and util.c, and functions in util.c are used by main.c, you might do something like:
gcc -c main.c -o main.o # compile main.c into an object file (main.o)
gcc -c util.c -o util.o # compile util.c into an object file (util.o)
ar rcs libutil.a util.o # create a static library archive libutil.a containing util.o
gcc main.o libutil.a -o myapp # link main.o with the library to produce the executable "myapp"
Let’s break down what happened in those commands:
- The first two commands use GCC (with the
-coption, meaning "compile only") to turn each.csource into a.oobject file. After these, we havemain.oandutil.ocontaining machine code for their respective source files. - The
ar rcs libutil.a util.ocommand uses the archival toolarto bundle theutil.oobject file into a library filelibutil.a. (This step is optional; we could link util.o directly, but it shows how a.alibrary is made.) - The last command calls GCC without
-c, which tells it to link the files. GCC will invoke the linker (ldbehind the scenes) to takemain.oand the code fromlibutil.aand stitch them together into one final program. The output is an executable file namedmyappthat you can run.
Each part of the toolchain plays a role: .c source files -> compiled by gcc/clang -> produce .o object files -> many .o files can be archived into a .a library -> the linker (ld/lld) combines everything into the final executable. Once you understand these parts, the original meme’s jokes — “good code compiler,” “linker dude,” “surprised file,” “screaming file” — become much funnier because you can see exactly how those whimsical definitions mix up or simplify the real meanings. It’s like being in on the joke: you know what each piece actually does, so you can appreciate how silly it is to describe them in such a comic, wrong way.
Level 3: Newbie Name Game
Seasoned developers can’t help but smirk at this meme because it nails a very real aspect of developer humor: the gap between how beginners think things work and how they actually work. The heading “Oh yeah I know about compiling” sets a tongue-in-cheek tone. It’s the overconfident claim we’ve all heard (or made) right before getting everything hilariously wrong. The bulleted list that follows is a parade of naïve interpretations, and as senior engineers, we recognize the deliberate sarcasm. It’s obvious that whoever wrote these definitions knows they’re wrong and is lampooning how a newcomer might mentally simplify the mysterious acronyms of a C/C++ build. We’ve been there – staring at cryptic tool names and file extensions, trying to decode them with our own ad-hoc logic before we learned the real story.
This meme brilliantly satirizes the cognitive overhead of the low-level programming toolchain. If you’ve ever taught or mentored a junior programmer in the art of C/C++ compiling, you’ve probably seen that wide-eyed confusion at terms like GCC, LLVM, or “object file.” The humor here comes from shared experience: initially, these terms really do feel like an alphabet soup of random letters. Remember the first time you saw an error message mentioning ld? You might have thought, “What on earth is ld?” Without context, it’s easy to imagine a puzzled newbie guessing, “Hmm, maybe it’s short for ‘linker dude’ or something?” As absurd as that sounds, it speaks to a real phenomenon: newcomers grasping for meaning in terse tool names. The meme simply cranks that phenomenon up to 11 for comedic effect—each item is an overly literal, adorably wrong guess at what the jargon could mean.
The community laughs because we recall our own early misconceptions (and the funny ways we tried to make sense of things). The line “gcc – good code compiler” is a perfect example. Any senior dev knows GCC is the GNU Compiler Collection, but we chuckle imagining a beginner proudly expanding it in the most straightforward way possible. In a sense, “good code compiler” isn’t entirely off-base—who doesn’t want a compiler that produces good code?—and that grain of truth makes it funnier. It’s a wink toward the reality that yes, GCC’s job is to emit efficient machine code, but calling it that is a huge oversimplification. We find it funny because it’s like hearing a novice use a tool’s name in a way that misses the mark by a mile. It reminds us how non-intuitive these acronyms are until you’ve spent time with them. After all, nothing about “GCC” inherently screams “collection of compilers” to a first-timer; it’s just something you eventually memorize. So seeing it back-expanded as “good code compiler” gives us that knowing laugh: it’s exactly the kind of logical-but-wrong reasoning a newbie might use.
Likewise, dubbing ld the “linker dude” personifies a tool that many of us have battled late into the night while dealing with linker errors. We often anthropomorphize our tools in frustration, saying things like “the linker complains about missing symbols” or “the compiler won’t let me do that.” Calling the linker a “dude” is a lighthearted extension of that habit. It’s funny because it acknowledges how inscrutable ld appears on first encounter. You run gcc to compile, then suddenly some separate entity named ld throws an error about an undefined reference, and you’re left thinking, “Who is this linker dude and what does he want from me?!” Every experienced dev remembers that learning curve. So when we see “linker dude” written out, we laugh in solidarity. It’s a shared inside joke about our early ignorance and the human tendency to give friendly-sounding labels to things we don’t yet understand.
The humor really snowballs as the list goes on, revealing a whole invented logic for the toolchain. The progression from “ld – linker dude” to “lld – little linker dude” is comedic gold to a senior developer. We instantly recognize the false pattern the “know-it-all” newbie is applying: Oh, if one ‘L’ is a linker dude, then two ‘L’s must be a little linker dude! It’s exactly the kind of simplistic rule-making we’ve seen before. It’s reminiscent of a child assuming that if the plural of “mouse” is “mice,” then two houses must be “hice” – applying a perceived pattern in completely the wrong context. In real life, we know lld is just the LLVM linker, but we appreciate how the meme exaggerates a beginner’s pattern-finding logic. It playfully jabs at the mental models beginners create. A senior dev might shake their head and jokingly say, “If only it were that straightforward!” We find it hilarious because the made-up logic is internally consistent in a twisted way—like solving the wrong puzzle. It reminds us of those times we’ve heard newcomers earnestly rationalize a tech concept with creative but incorrect explanations. Those moments are both funny and endearing, and this meme captures that feeling perfectly.
Even the file extension gags (.o as a surprised face and .a as a screaming face) strike a chord with experienced coders. It’s a quirky form of personification that suggests someone completely unfamiliar with these files might interpret them by their literal characters. We laugh because it’s such a childish interpretation of something we deal with matter-of-factly. A veteran developer knows a .o file is just an object file (the intermediate compiled code), and a .a file is an archive of object files (a static library). There’s nothing emotional about them. But seeing them described as if they have feelings — surprise! or aaaah! — takes us back to that initial bewilderment: “What are all these .o and .a files showing up in my folder?” The first time you compile a C project, your directory fills with oddly-suffixed files; if you have no idea what they are, calling them “surprised” or “screaming” based on their letters is the kind of goofy thought that might cross your mind (especially when you’re exhausted). It’s humor born from bewilderment. Seasoned devs recognize that confusion in hindsight, and it’s amusing to see it expressed so literally. It’s the same kind of chuckle you get when a kid calls a rhinoceros a “unicorn cow” – the description is wrong in an obvious way, but you can totally see how they came up with it. We’ve all had moments of wildly mislabeling a tech thing before we knew better, which makes these jokes land flawlessly.
At its core, this meme resonates with experienced programmers because it satirizes the learning process we all went through. It highlights how non-obvious the compiling-and-linking workflow is to the uninitiated: terms like compiler, linker, and object file were once gibberish to us, too. By joking about these naïve definitions, the meme gives a nod to that past confusion. It’s funny not just for the wordplay, but because it’s rooted in truth – the C/C++ build pipeline is pretty opaque when you’re new. We can laugh now precisely because we’ve conquered that complexity. The joke becomes a small celebration of how far we’ve come: we do know what each of those acronyms really means (after plenty of learning), and that’s why we can appreciate just how ridiculously off-base — yet charming — these made-up meanings are.
Level 4: Alphabet Soup Pipeline
Behind the meme's playful misnomers lies a sophisticated build process that spans multiple tools and phases of compilation. In reality, each acronym in that list (gcc, clang, ld, lld, llvm) represents a component in a well-defined toolchain guiding a program from human-readable source code to machine-executable binaries. The humor comes from collapsing these precise functions into childlike interpretations, but understanding their true meanings reveals decades of compiler design and systems architecture.
GCC is far more than "good code compiler." It stands for GNU Compiler Collection – a suite of compilers supporting languages like C, C++, and Fortran under the GNU project. Rather than just "making code good," GCC processes source code through multiple rigorous stages: lexing (turning text into tokens), parsing (building an Abstract Syntax Tree from language grammar), performing optimizations on an Intermediate Representation (GCC has its own internal IRs like GIMPLE), and finally generating machine-specific assembly code. The result is then assembled into a relocatable object file (the .o files the meme jokingly calls "surprised file"). GCC’s name "Collection" reflects that it's not a single monolithic engine, but a framework containing frontends for different languages and backends for different CPU architectures. The meme’s naive expansion tiptoes around a truth: GCC does strive to produce good machine code, but only through a complex pipeline of algorithms (data-flow analyses, register allocation, peephole optimizations) that a newcomer’s mental model completely glosses over.
Similarly, Clang is more nuanced than "compiler language." Clang is the C/C++ frontend of the LLVM compiler infrastructure. Its name hints at “C language,” but it’s not an acronym; it’s a modern compiler that parses C/C++ code and produces LLVM IR (an intermediate low-level code) which is then converted into machine code by the LLVM backend. Clang was designed for modularity and provides clearer diagnostics, but from a toolchain perspective, it plays the same frontend role that GCC’s C compiler does. The meme treats Clang as just a generic “compiler language” term, as if it were itself a programming language, whereas in reality Clang is a highly optimized compiler front-end leveraging years of research in static analysis and code transformation. In fact, Clang+LLVM implement heavy-duty optimizations (inlining, vectorization, etc.) at the IR level – concepts far removed from the simplistic idea of “just compile the code in one go.”
Then there’s ld, which the meme dubs "linker dude." In truth ld is the classic Unix linker (the name traces back to link editor, a term from early operating systems). It's a separate program invoked after compilation to perform linking – a stage that resolves references between compiled modules and combines all the object code into a final executable or library. Linking is not about “a dude” at all, but about addressing an algorithmic challenge: the linker must stitch together functions and data from multiple object files, fix up address references (relocations), and ensure all symbols (function names, variables, etc.) are resolved. It's like assembling a puzzle where all the pieces of code must fit together exactly. The brevity of the name ld is a historical artifact of the Unix philosophy of concise command names (just two letters!), which by itself can bewilder newcomers. The meme pokes fun by personifying ld as a "dude," but in reality this tool quietly handles tasks fundamental to program correctness – hardly a trivial sidekick!
Now, lld – humorously labeled "little linker dude" – is not literally a diminutive sidekick, but the LLVM project's own linker. The double l in lld doesn’t officially mean “little”; the name simply signifies “LLVM linker” (essentially, an alternative to ld). We can see how the meme’s author spotted a pattern and ran with it: if one l was a linker dude, then two l’s must be a little linker dude! In practice, lld serves the same purpose as ld: it combines object files and libraries into a program or library, but it’s implemented within the LLVM ecosystem and often emphasizes speed and modular design. The joke adds "little" purely for comic effect, highlighting how someone unfamiliar might try to interpret lld as a cutesy variation of ld. Of course, in reality lld is anything but a toy – it’s a full-featured, high-performance linker used in large software builds, not some miniature helper. This contrast between the meme’s interpretation and the actual role of lld is part of the absurdity that seasoned devs appreciate.
Finally, LLVM itself gets mislabeled "little linker virtual machine" in the meme, an expansion that is both wrong and ironically amusing. LLVM actually stands for Low Level Virtual Machine, a name rooted in its origin as an academic project for building portable, optimization-friendly compiler backends. Far from being a “little linker,” LLVM is a broad framework for constructing compilers and toolchains. It provides a retargetable intermediate representation (IR) (like a platform-neutral assembly language) and a suite of optimization passes that work across many source languages and CPU architectures. The "Virtual Machine" part of LLVM’s name reflects an idea of an imaginary CPU for optimization purposes; it’s not a VM in the sense of emulating hardware for end-users. Over time, LLVM’s scope expanded beyond a literal VM, but the name stuck. In the meme’s whimsical logic, seeing "ll" again triggered “little linker,” and "vm" became “virtual machine,” yielding a phrase that sounds superficially plausible yet is completely off-base. That absurd mismatch is a key source of the humor: the serious name Low Level Virtual Machine refers to an entire compiler infrastructure underpinning many modern languages (from Rust to Swift), yet here it’s reduced to a goofy, almost kiddie description about a tiny linker. It’s a classic case of creative misinterpretation.
The file extensions in the list follow a similar pattern of playful misunderstanding. A C source file with extension .c is correctly described as a "code file" – straightforward enough – but an object file .o gets nicknamed a "surprised file" purely because the letter "o" looks like a cartoon surprised mouth saying “Oh!”. In reality, .o simply stands for object file, a binary file containing machine code and relocation info produced by the compiler. There’s nothing inherently startling about it, but the meme pretends the “o” is an emoticon to lampoon how cryptic single-letter extensions can be. Similarly, .a files – which are static libraries or archives of object files – are jokingly called "screaming files", since a lone “a” could be read as an “AAAAH!” scream. The .a extension actually comes from the Unix ar (archive) utility and indicates a collection of compiled objects packaged together. By personifying .a as a scream, the meme highlights the sheer opacity of these labels to the untrained eye. It’s taking the letters at face value and making a joke: without context, .o and .a might as well be random sounds or expressions rather than parts of a build artifact. Seasoned developers instantly recognize the folly here — we know .o and .a are just conventional extensions, but seeing them reinterpreted as cartoon emotions is a delightfully silly reminder of how arcane these things appear at first.
All together, the meme’s “creatively simplified” terms form an alphabet soup version of a real C/C++ toolchain. Each tiny name or extension – gcc, ld, .o, .a – encapsulates significant functionality born from decades of compiler theory and systems engineering. The joke lands because it contrasts the immense technical depth behind these terse acronyms with an absurdly shallow reimagining of what they mean. For seasoned low-level programmers, it’s funny precisely because each item we normally treat with gravity and precision is being redefined with a childlike logic. It's a reminder of how arcane the tool names can seem to the uninitiated: taken at face value, these labels might as well mean "good code compiler" or "linker dude"! The meme’s naive expansions highlight the cognitive leap required to master compilers and linkers – what we eventually learn as formal concepts (compiler front-ends, symbol resolution, IR optimization) can look like gibberish acronyms at first. Seeing someone confidently (if incorrectly) decode that acronym soup into cutesy phrases is both endearing and a sly nod to the real complexity hiding beneath those two-letter commands. It’s as if decades of sophisticated compiler architecture have been squished down into a nursery rhyme of tools – a juxtaposition that any compiler engineer or systems programmer can appreciate and chuckle about.
Description
A simple text-based image on a white background with black text. It begins with a confident but misplaced introductory sentence: 'Oh yeah I know about compiling'. This is followed by a list of common compilation and linking tool names and file extensions from the C/C++ ecosystem, each given a humorous, made-up definition. The list includes 'gcc - good code compiler', 'clang - compiler language', 'ld - linker dude', 'lld - little linker dude', 'llvm - little linker virtual machine', '.o - surprised file', and '.a - screaming file'. The humor is derived from creating funny, personified 'backronyms' for highly technical terms. It's relatable to developers who have had to navigate the often-opaque world of compilers and linkers, and it playfully mocks the jargon-heavy nature of low-level programming
Comments
77Comment deleted
I'm pretty sure 'ld' actually stands for 'lunch deferred,' because on our legacy C++ monolith, that's exactly what happens when you kick off a full build
Some days the only abstraction layer between .c and .o is the primal scream you let out while waiting for lld to finish your 4 GB static link
After 20 years of explaining to junior devs why their code won't link, I too believe object files are just surprised that they made it through compilation without segfaulting, and archive files are screaming because they contain decades of technical debt nobody wants to refactor
When your junior dev asks why the build is failing and you realize they've been pronouncing 'ld' as 'linker dude' this whole time - honestly, after 20 years of wrestling with undefined symbols and circular dependencies, that's probably the most accurate description of what it actually does. At least 'little linker virtual machine' explains why LLVM takes longer to compile than the heat death of the universe
Call it “linker dude” all you want - he still resolves left‑to‑right; pass the .a before the .o and you’ll get a genuine screaming file: undefined reference
Cute glossary, but the only thing that actually screams is your build when lld hits a stale .o and a mismatched ABI; ask ar, he wasn't invited
ld: linker dude - because after 20 years, unresolved symbols still hit like a bro ghosting the monorepo merge
pure facts, 146% true Comment deleted
.@ angry file Comment deleted
.exe - laughing file Comment deleted
.py - pooping file Comment deleted
*russian file Comment deleted
yandekc.ру Comment deleted
gross/garbage c compiler Comment deleted
wtf did u just say about gcc.. Comment deleted
exactly what it means Comment deleted
c6(and others) > clang > gcc Comment deleted
"g/gcc"💀💀🗿🗿🗿🗿🗿 Comment deleted
gcc means GNU complier collection Comment deleted
Gnu is kinda shitty tho Comment deleted
but before Comment deleted
it was called GNU C compiler Comment deleted
???? Comment deleted
gcc is obese and mid at best Comment deleted
gcc is da best :P Comment deleted
NAH Comment deleted
windows is Comment deleted
gnu is da best —.— Comment deleted
.s - asm/autism Comment deleted
.js - just shit Comment deleted
.json just sh!tting on numbers 💀💀🗿 Comment deleted
.h huge file .cc compiled code Comment deleted
I just want to share my mnemonic for tarballing files in the terminal: tar -czvf output.tar.gz file1 file2 folder1/ etc/ -c Compress -z Ze -v Vuckin -f File Comment deleted
Extracting files from one is similar, ofc tar -xzvf file.tar.gz eXtract ze vuckin file! Comment deleted
I just wanna say that new languages syntax sucks. I can't use to them once i learned C. Comment deleted
c family syntax (including rust and js for example) is the worst imo in terms of syntax haskell > lua > pascal > lisp > forth > c Comment deleted
I mean why on earth someone should define type of the variable after the name? What's wrong with the people nowadays! 😶😶 Comment deleted
do you do otherwise in math? Comment deleted
In my mind, C and D makes sense. When i see other syntax, i wanna end myself 😕😕 Comment deleted
guess what does a * b; mean without context 😄 Comment deleted
I mean why on earth someone should define types of variables manually? What's wrong with people who don't use type inference? Comment deleted
Why on earth someone should define types? What's wrong with people who use python and js? Comment deleted
When you work with small hardware, every byte is counted. Comment deleted
Jokes on you. I was packing arrays bitwise, can you name a type that consists of 3 bits? Comment deleted
In that case, 5 more bits to go 😂😂 Comment deleted
range 0 .. 7 in ada or u3 in zig 😄 Comment deleted
In my eyes the main issue with those is not even memory usage. Honestly speaking, memory is extremely cheap nowadays, relative to processing power, even in IoT-grade hardware. They're interpreted languages, which means there's a HUGE processing overhead that comes from JIT. And it has long become so bad that not even the execution time, but the slowness is human-perceptable, which is fucking insane. And also everything tries to be embedded chromium nowadays, which means insane waste of resources on unnecessary junk. And it doesn't even look or work that good comparatively Comment deleted
dynamically typed languages are only ok for prototyping since errors then aren't that much of a problem Comment deleted
i honestly wish even for excel macros to be compiled Comment deleted
interpreted languages can be statically type checked, and compiled languages can be dynamically typed Comment deleted
I do microcontroller programming. I wanna make sure everything as expected. Comment deleted
type inference is for "do thing ASAP then don't touch the it" kind of languages sadly, many languages are like this instead of encouraging clean and well-thought-of code Comment deleted
I don't see how type inference discourages clean code. It encourages thinking about actual solution to a problem instead of thinking about how to explain this solution to the compiler. Comment deleted
types are part of the solution Comment deleted
In BASIC (the best language in terms of syntax, which has not been surpassed since its inception), type distinction was added by later dialects: DIM A AS INTEGER DIM B(4, 2) AS DOUBLE In earlier dialects, all variables were numeric (floating-point), unless suffixed with an "$" to designate a string: DIM B(4, 2) DIM C$(64) Comment deleted
Basic is so disgustingly and unapologetically verbose it's not even funny Also idk about you, but there's something in the sytax of C-derivatives (esp. C#) that makes them seem technical yet understandable and natural at the same time Comment deleted
Pascal? Seriously?! 😑😑 Comment deleted
ada is way better than rust in everything, including syntax Comment deleted
I just googled the Ada syntax. Oh god save me 😵💫😵💫 Comment deleted
you like pascal family? Comment deleted
yes Comment deleted
:3 Comment deleted
The hardest thing about Haskell to me is its damn whitespace sensitivity Comment deleted
it may differ in some details, but mostly the same what else syntax family could it be in? Comment deleted
it have sets and there is type theory Comment deleted
x of Integer Comment deleted
In English we say "let x be an integer" Comment deleted
bias from programming in c Comment deleted
Modern IDEs can insert inferred type annotations for readability if you really need them Comment deleted
it encourages doing without thinking and you may need to read the code outside IDE or whatever Comment deleted
.4th — Star Wars in ASCII art .bat — call Batman .cc — closed captions .css — Counter-Strike source .cxx — programming porn .f77 — decimal number 3959 .for — one giant for loop .es — Spanish script .gnu — Stallman-compatible license .html — human-teached machine learning .lsp — least significant program .m4 — hitman"s wishlist .man — Y-chromosome supremacy declaration .omgrofl — literally it .php — PyrrolidinoHexioPhenone drug .ps — PlayStation game .rb — red-black tree .s — secret (chmod 000) .sh — secret header Comment deleted
tagged unions 🤷♀️ Comment deleted
there are scheme to c compilers for example Comment deleted
scheme is dynamically typed Comment deleted
o weka e ni Comment deleted
elixir is a very ok language, for instance "let it crash" as a way of dealing with errors in runtime is arguably more succinct than placing types everywhere in compile time Comment deleted
also there is an argument to be made about completeness of static checks, maybe a Rice theorem as well Comment deleted