Developer English guide + free exercises
Punctuation Symbols in English: Names and Examples for Developers
October 9, 2026
You type these symbols dozens of times a day. But do you know their English names? When you join a standup, read a PR comment, or pair program with a colleague, you need to say 'backtick', 'pipe', or 'ampersand' out loud. This guide covers every common symbol with its English name, Spanish equivalent, and a real developer example — plus 30 free exercises that practice naming the symbol as you'd say it out loud, explaining where code fails, why it changed, or what it does.
Standard Punctuation
Puntuacion estandar
These symbols appear in everyday writing: emails, PR descriptions, commit messages, and Slack. Many have different names in British and American English, so both are listed.
| Symbol | English name | Example |
|---|---|---|
| . | PeriodFull stop | “End every statement with a period in your commit messages.” |
| , | Comma | “Use a comma to separate items in a list: 'We need to fix the bug, write tests, and deploy.'” |
| ; | Semicolon | “In JavaScript you can omit the semicolon, but the team style guide requires it.” |
| : | Colon | “In TypeScript, add a colon after the variable name to declare its type.” |
| ! | Exclamation markBang | “The bang operator negates a boolean: if (!isLoading) { ... }” |
| ? | Question mark | “Use the question mark for optional chaining: user?.profile?.avatar” |
| ' | ApostropheSingle quote | “Wrap strings in single quotes in Python: name = 'Alice'” |
| "" | Double quotesQuotation marks | “In JSON, keys and string values must be wrapped in double quotes.” |
| '' | Single quotes | “The linter prefers single quotes for strings in this project.” |
| - | HyphenDash | “Use a hyphen between words in a kebab-case CSS class name.” |
| – | En dash | “Use an en dash for numeric ranges in documentation: pages 10–15.” |
| — | Em dash | “She opened the PR—without running the tests—and merged it directly.” |
| () | ParenthesesRound brackets | “Call the function by adding parentheses after its name: doSomething()” |
| [] | Square brackets | “Access an array element using square brackets: items[0]” |
| ... | EllipsisThree dots | “The spread operator uses three dots: const newArr = [...oldArr, newItem]” |
Developer Symbols
Simbolos tecnicos
These symbols are everywhere in code, terminals, config files, and documentation. Knowing their English names helps you communicate clearly during code reviews, pair programming sessions, and technical interviews.
| Symbol | English name | Example |
|---|---|---|
| {} | Curly bracesCurly brackets | “Wrap the function body in curly braces.” |
| <> | Angle bracketsChevrons | “In TypeScript generics, put the type parameter inside angle brackets: Array<string>” |
| / | SlashForward slash | “Separate URL path segments with a forward slash: /api/v1/users” |
| \ | Backslash | “Use a backslash to escape a special character inside a string.” |
| * | AsteriskStar | “The asterisk in a glob pattern matches any file: **/*.ts” |
| & | Ampersand | “The double ampersand is the logical AND operator: if (isValid && isReady)” |
| @ | At signAt symbol | “Use the at sign to tag a reviewer in a GitHub comment: @alice can you review this?” |
| # | HashPound sign / Number sign | “Add a hash at the start of the line to write a comment in Python.” |
| % | PercentModulo operator | “The percent sign is the modulo operator in most languages: 10 % 3 === 1” |
| $ | Dollar sign | “In a shell script, put a dollar sign before a variable name: echo $HOME” |
| _ | Underscore | “Use underscores between words in a snake_case variable name.” |
| | | PipeVertical bar | “Pipe the grep output into wc to count the matching lines: grep 'error' log.txt | wc -l” |
| ~ | Tilde | “In package.json, a tilde before a version allows patch updates: ~1.2.3” |
| ` | BacktickGrave accent | “Wrap the variable in backticks to use it inside a template literal: `Hello, ${name}!`” |
| ^ | Caret | “The caret in package.json allows any compatible minor version: ^2.0.0” |
Key Takeaways
- The . symbol is called 'period' in American English and 'full stop' in British English.
- The ` symbol is called 'backtick'. Use it to say: 'Wrap the string in backticks to create a template literal.'
- The | symbol is called 'pipe' in developer contexts. Example: 'Pipe the output into grep.'
- The # symbol is called 'hash' in British English and 'pound sign' in American English.
- The ^ symbol is called 'caret', and the ~ symbol is called 'tilde'. Both appear in package.json version ranges.
English for developers
Practice naming these symbols
Each sentence is a spoken-style explanation — where the code is failing, why something was changed, or what it's doing. Pick the symbol name that fits.
Standard Punctuation
↑ Back to the theoryI end every commit message with a — it's our style guide rule.
This separates the two parameters so the function knows where one argument ends and the next begins: foo(a, b)
I added a at the end of this line because our linter's style guide requires it, even though JavaScript doesn't need it: const x = 5;
This right after the variable name declares its type in TypeScript: let age: number
The bug is right after the on line 12 — it negates the check, so the function runs when it shouldn't: if (!isReady) { ... }
This right after 'user' is doing optional chaining — it stops the error when user is null: user?.profile?.avatar
This review comment says the error message isn't informative — I used an to write the contraction 'isn't'.
In this JSON file, wrap every key and string value — single quotes aren't valid here: {"name": "Alice"}
I changed the string from double quotes to because our linter prefers them for this project: 'Alice'
The between 'kebab' and 'case' is just part of the naming convention for this CSS class: kebab-case-example
This between 10 and 15 means a numeric range in the documentation, not a minus sign: pages 10–15
I added an here to insert a side comment into the sentence without a full parenthetical: She opened the PR—without running the tests—and merged it.
These right after the function name are what actually calls it — without them, you're just referencing the function: doSomething()
The crash is happening inside those — we're accessing index 5 on an array that only has 3 items: items[5]
Those three dots — the — are the spread operator here, copying every item from the old array into the new one: [...oldArr, newItem]
Developer Symbols
↑ Back to the theoryThe syntax error is because the never get closed — the function body has no matching brace: function run() { console.log('hi');
Those around 'string' are declaring the generic type for this array in TypeScript: Array<string>
Every in this URL marks the start of a new path segment: /api/v1/users
I added a right before the quote to escape it, otherwise the string ends too early: "She said \"hi\"."
That in the glob pattern matches any file in this folder, no matter the name: **/*.ts
The condition never passes because there's only one instead of two — it's being read as a bitwise AND, not a logical one: if (isValid & isReady)
I added the before her username in this comment so she gets notified about the review: @alice can you take a look?
That at the start of the line turns everything after it into a comment in Python — it's ignored when the script runs.
This is the modulo operator here — it returns the remainder after dividing 10 by 3: 10 % 3 === 1
That before HOME tells the shell to read it as a variable, not as literal text: echo $HOME
I renamed the variable to use an between each word instead of camelCase, since this file follows snake_case: user_id
That is sending the output of grep straight into wc so we can count matching lines: grep 'error' log.txt | wc -l
That before the version number means npm can install any compatible patch update, nothing bigger: ~1.2.3
I switched to using a here because we need to interpolate the variable directly inside the string: `Hello, ${name}!`
That in package.json means npm can install any newer compatible minor version, not just patches: ^2.0.0
Ready to practice your English at work?
Lingua-e has interactive exercises built around real developer conversations: standups, code reviews, retrospectives, and more. Practice until it comes naturally.
Try Lingua-e for free
Written by
Roxana LafuenteLingua-e's founder
Roxana Lafuente is a software engineer with 8+ years of experience. At the beginning of her career, even though she had already passed the First Certificate in English, she still froze every time she had to speak up in the daily standup. That was a gap nobody was fixing. After 2,000+ standups, she figured out what actually builds fluency: practice that looks like your real work. She built Lingua-e so other developers wouldn't have to take the long road to feel confident working in an international development environment.