Bueno técnicamente hablando HTML es un lenguaje de marcado y no de programación.
El lío es que siempre se necesita de un servidor para que sea totalmente funcional. Por ejemplo javascript es un lenguaje de programación en el lado del cliente que ofrece muchas herramientas para el diseño y el funcionamiento de la página web, pero puede desactivarse y por ende dejar de funcionar. Ruby, PHP y ASP son ejemplos de lenguajes de programación que son independientes del navegador (cliente) y permite generar paginas web dinámicas sin ningún problema.
Lo mejor es siempre hacer una pagina web comletamente funcional sin que dependa de un lenguaje externo que pueda dañar el funcionamiento de la pagina web (javascript por ejemplo) y despues si usar un lenguaje del cliente para embellecer o enriquecer la pagina y su funcionamiento.
Saludos