¿Cuáles son algunos buenos consejos sobre cómo aprender realmente un nuevo lenguaje de programación, como C ++ o Haskell, en lugar de simplemente aprender la sintaxis y algunos conceptos básicos?

La mejor manera es usarlo para construir algo que usará y cuidará. Eso te llevará a desarrollar tu conocimiento del idioma y mejorar lo que has escrito.

Si no tienes una idea fantástica de la aplicación, resolver algunos problemas básicos es una excelente manera de comenzar. He tenido un gran éxito con la lista de problemas de Haskell 99:

H-99: Noventa y nueve problemas de Haskell

Es importante tener en cuenta el aprendizaje del entorno lingüístico, no solo del idioma. Aprenda cómo hacer un proyecto, probar su código, usar el sistema de documentación de funciones, etc. Una excelente guía para esto está aquí:

Holy Haskell Project Starter

Tenga en cuenta que este no es un tutorial de Haskell, y supone cierta alfabetización y familiaridad, pero es una excelente introducción a algunas de las herramientas que se utilizan para compilar y probar el código.

Más allá de eso, encuentra gente con quien hablar sobre tu progreso. Tener un mentor, o un recurso al que puede acudir con preguntas cuando las explicaciones no tienen sentido para usted es invaluable.

Encuentra un proyecto para trabajar. No solo es una buena práctica, sino que también produce algunos resultados útiles.

Aprenda lo más mínimo posible para comenzar a usar una biblioteca de prueba. Explora bibliotecas escribiendo pruebas que describen cómo crees que funciona algo. Repetir.