惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
L
LangChain Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
Y
Y Combinator Blog
月光博客
月光博客
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
小众软件
小众软件
H
Help Net Security
Last Week in AI
Last Week in AI
B
Blog RSS Feed
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium
博客园 - 叶小钗
The GitHub Blog
The GitHub Blog

CSS Wizardry

Front-End’s Missing Metric: The TBT Window Meet Your Users Where They Are with Obs.js Better Browser Caching with No-Vary-Search font-family Doesn’t Fall Back the Way You Think What Is CSS Containment and How Can I Use It? When All You Can Do Is All or Nothing, Do Nothing Obs.js: Context-Aware Web Performance for Everyone Low- and Mid-Tier Mobile for the Real World (2025) The Fastest Site in the Tour de France Making Sense of the Performance Extensibility API Why Do We Have a Cache-Control Request Header? Build for the Web, Build on the Web, Build with the Web Licensing Code on CSS Wizardry A Layered Approach to Speculation Rules Designing (and Evolving) a New Web Performance Score Core Web Vitals Colours The Ultimate Contract Templates for Tech Consultants: Protect Your Business and Get Paid Optimising for High Latency Environments Cache Grab: How Much Are You Leaving on the Table? blocking=render: Why would you do that?! Correctly Configure (Pre) Connections The Three Cs: 🤝 Concatenate, 🗜️ Compress, 🗳️ Cache What Is the Maximum max-age? How to Clear Cache and Cookies on a Customer’s Device The Ultimate Low-Quality Image Placeholder Technique Core Web Vitals for Search Engine Optimisation: What Do We Need to Know? The HTTP/1-liness of HTTP/2 In Defence of DOM­Content­Loaded Site-Speed Topography Remapped Why Not document.write()?
HTML Is Not a Programming Language…
Harry Roberts · 2025-02-11 · via CSS Wizardry

Written by on CSS Wizardry.

I adore HTML. I actually, really do. It’s the performance engineer’s dream. But I don’t think it’s a programming language. At least not in any useful sense.

There’s a saying, with a pretty amusing backstory, that goes something like knowledge is knowing a tomato is a fruit; wisdom is not putting it in a fruit salad. That sums up my take on the debate perfectly. Being ‘technically correct’, while important to many, is usually pedantic, unproductive, and not very helpful.

The definition of programming language is not formally agreed upon, but if you’re keen enough to bend it to fit HTML, you will probably be successful.

But what does that achieve? Really?

HTML is fundamental, it’s powerful, and it’s fast, but it is easy. Being good at HTML—which I would argue I am!—is more about having a good memory than being able to think in complex or abstract patterns.

I adore HTML. I much prefer it over anything else! But I wouldn’t call it a programming language.

If I was at a dinner party or social function, and my (nascent) partner got talking to someone who writes code that launches rockets or manages banking software—a real software engineer—and she said to them Oh! You must meet Harry! He’s a software engineer, too!, I would be mortified. I couldn’t hold a candle to that. I wouldn’t want to!

I adore HTML. But it isn’t a programming language.

I wish more people took HTML more seriously. I wish more people were good at HTML and understood its power and capabilities. I wish more people knew why HTML is so fast and why it’s almost always preferred. It’s knowledge that’s made me a good living!

I adore HTML, but I don’t think it counts as a programming language at all. And that’s fine—it doesn’t need to.

If you think differently to me, if you can make the definition of programming language fit, that’s absolutely fine. But, colloquially, I don’t think it’s helpful at all.

I adore HTML ❤️