프로그래밍 언어의 정의는 사실 여러가지지만 같은 문법(Syntax)을 가진 언어에 다른 의미(Semantic)를 부여하기만 해도 다른 종류의 프로그래밍 언어라고 할 수 있음.
이 말은 조금 다르게 생각하면 일반적으로 데이터의 단순한 표현으로만 이용되던 언어에 의미를 부여하고 컴퓨터가 이에 맞게 동작하도록 만들기만 하더라도 프로그래밍 언어라고 할 수 있다는 것임. 따라서 HTML같이 단순한 데이터의 표현, 규약 혹은 표준이라고 하더라도 구문의 구조가 있고 그것에 대응하는 의미에 따라 CPU가 어떤 동작을 하게 만들 수 있다는 관점에서 보면 프로그래밍 언어의 정의에 크게 위배되지는 않음.
물론 일반적으로 말하는 HTML은 프로그래밍 언어라고 하기 어렵겠지만 그만큼 프로그래밍 언어와 프로그램이 사용하는 데이터를 나타내는 구조적 언어 사이의 경계가 흐릿하고, 이건 프로그래밍 언어고 저건 아니고 논하는 게 큰 의미가 있진 않다고 생각함.
프로그래밍 언어이냐 아니냐랑 해당 언어가 Turing Completeness를 만족하느냐 아니냐는 별도의 이야기라고 봄. 요즘은 다른 언어 런타임 위에서 동작하는 언어도 많고 특정 목적만으로 사용하는 언어도 많아서 Turing Complete 하지 않아도 되는 경우가 많고, 모든 알고리즘을 표현할 수 없어도 높은 수준의 추상화가 되어 있다면 어떤 소프트웨어를 프로그래밍하는 데 충분할 수 있음.