Language Extensions and Language Servers
VS Code itself knows almost nothing about any specific programming language — everything language-specific comes from an extension implementing the Language Server Protocol (LSP), the same standard mentioned in the Editor Tour course.
A language server runs as a separate process, communicating with VS Code over a standard protocol. This is why the same IntelliSense, go-to-definition, and error-squiggle experience feels consistent across Python, Go, Rust, C#, and dozens of other languages — they're all speaking the same protocol to the same editor, even though each language's server is written and maintained independently.
Installing a language extension typically installs (or prompts you to install) its language server, not just syntax highlighting. Python's extension installs Pylance; Go's installs gopls; Rust's installs rust-analyzer — the actual intelligence behind IntelliSense, not just colored text.
Multiple language servers run simultaneously without conflict, each scoped to its own file types. A project with a Python backend and a TypeScript frontend runs both Pylance and the TypeScript server at once, each providing correct completions for its own files.
A missing or misconfigured language server is the most common cause of "IntelliSense isn't working" — check the Output panel (dropdown showing the specific language server) for startup errors before assuming a code problem.
Why this matters for you
Understanding that "VS Code supports Python" actually means "a specific extension runs a specific language server" explains both why the experience is so consistent across languages, and exactly where to look when it breaks for one specific language.
▶️ Before the next lesson
If your work touches more than one language, confirm each has its language extension installed, and check the Output panel for one of them to see its language server's actual startup log.