Skip to content
DevMeme
5880 of 7590
Compilers Post #6439 · source on Telegram

An Expert's Guide to Compilation Terms

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

77
Anonymous ★ Top Pick 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
  1. Anonymous ★ Top Pick

    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

  2. Anonymous

    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

  3. Anonymous

    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

  4. Anonymous

    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

  5. Anonymous

    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

  6. Anonymous

    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

  7. Anonymous

    ld: linker dude - because after 20 years, unresolved symbols still hit like a bro ghosting the monorepo merge

  8. @mrYakov 1y

    pure facts, 146% true

  9. Deleted Account 1y

    .@ angry file

  10. @Art3m_1502 1y

    .exe - laughing file

  11. @FGH378yufs 1y

    .py - pooping file

    1. @dp229 1y

      *russian file

      1. @Protomax 1y

        yandekc.ру

  12. @mira_the_cat 1y

    gross/garbage c compiler

    1. Deleted Account 1y

      wtf did u just say about gcc..

      1. @azizhakberdiev 1y

        exactly what it means

      2. @endisn16h 1y

        c6(and others) > clang > gcc

    2. Deleted Account 1y

      "g/gcc"💀💀🗿🗿🗿🗿🗿

  13. Deleted Account 1y

    gcc means GNU complier collection

    1. @ZgGPuo8dZef58K6hxxGVj3Z2 1y

      Gnu is kinda shitty tho

  14. Deleted Account 1y

    but before

  15. Deleted Account 1y

    it was called GNU C compiler

  16. Deleted Account 1y

    ????

    1. @endisn16h 1y

      gcc is obese and mid at best

  17. Deleted Account 1y

    gcc is da best :P

  18. Deleted Account 1y

    NAH

  19. Deleted Account 1y

    windows is

  20. Deleted Account 1y

    gnu is da best —.—

  21. @LeakyRectifiedLinearUnit 1y

    .s - asm/autism

  22. @anim35h 1y

    .js - just shit

    1. Deleted Account 1y

      .json just sh!tting on numbers 💀💀🗿

  23. @sylfn 1y

    .h huge file .cc compiled code

  24. @TheRamenDutchman 1y

    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

  25. @TheRamenDutchman 1y

    Extracting files from one is similar, ofc tar -xzvf file.tar.gz eXtract ze vuckin file!

  26. @ashit_axar 1y

    I just wanna say that new languages syntax sucks. I can't use to them once i learned C.

    1. @mira_the_cat 1y

      c family syntax (including rust and js for example) is the worst imo in terms of syntax haskell > lua > pascal > lisp > forth > c

      1. @ashit_axar 1y

        I mean why on earth someone should define type of the variable after the name? What's wrong with the people nowadays! 😶😶

        1. @mira_the_cat 1y

          do you do otherwise in math?

          1. @ashit_axar 1y

            In my mind, C and D makes sense. When i see other syntax, i wanna end myself 😕😕

            1. @mira_the_cat 1y

              guess what does a * b; mean without context 😄

        2. @x4erem6a 1y

          I mean why on earth someone should define types of variables manually? What's wrong with people who don't use type inference?

          1. @azizhakberdiev 1y

            Why on earth someone should define types? What's wrong with people who use python and js?

            1. @ashit_axar 1y

              When you work with small hardware, every byte is counted.

              1. @azizhakberdiev 1y

                Jokes on you. I was packing arrays bitwise, can you name a type that consists of 3 bits?

                1. @ashit_axar 1y

                  In that case, 5 more bits to go 😂😂

                2. @mira_the_cat 1y

                  range 0 .. 7 in ada or u3 in zig 😄

            2. @TheUnstupidOne 1y

              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

            3. @mira_the_cat 1y

              dynamically typed languages are only ok for prototyping since errors then aren't that much of a problem

              1. @TheUnstupidOne 1y

                i honestly wish even for excel macros to be compiled

                1. @mira_the_cat 1y

                  interpreted languages can be statically type checked, and compiled languages can be dynamically typed

          2. @ashit_axar 1y

            I do microcontroller programming. I wanna make sure everything as expected.

          3. @mira_the_cat 1y

            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

            1. @x4erem6a 1y

              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.

              1. @mira_the_cat 1y

                types are part of the solution

        3. @SamsonovAnton 1y

          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)

          1. @TheUnstupidOne 1y

            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

      2. @ashit_axar 1y

        Pascal? Seriously?! 😑😑

        1. @mira_the_cat 1y

          ada is way better than rust in everything, including syntax

          1. @ashit_axar 1y

            I just googled the Ada syntax. Oh god save me 😵‍💫😵‍💫

          2. @echedelle 1y

            you like pascal family?

            1. @mira_the_cat 1y

              yes

              1. @echedelle 1y

                :3

      3. @purplesyringa 1y

        The hardest thing about Haskell to me is its damn whitespace sensitivity

  27. @mira_the_cat 1y

    it may differ in some details, but mostly the same what else syntax family could it be in?

  28. @mira_the_cat 1y

    it have sets and there is type theory

  29. @mira_the_cat 1y

    x of Integer

  30. @x4erem6a 1y

    In English we say "let x be an integer"

  31. @mira_the_cat 1y

    bias from programming in c

  32. @x4erem6a 1y

    Modern IDEs can insert inferred type annotations for readability if you really need them

    1. @mira_the_cat 1y

      it encourages doing without thinking and you may need to read the code outside IDE or whatever

  33. @SamsonovAnton 1y

    .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

  34. @mira_the_cat 1y

    tagged unions 🤷‍♀️

  35. @mira_the_cat 1y

    there are scheme to c compilers for example

    1. @mira_the_cat 1y

      scheme is dynamically typed

  36. @mira_the_cat 1y

    o weka e ni

  37. @andrei_nik_kolesnikov 1y

    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

    1. @andrei_nik_kolesnikov 1y

      also there is an argument to be made about completeness of static checks, maybe a Rice theorem as well

Use J and K for navigation