Para los estándares actuales, ya no hay "desde cero".
Verás, "desde cero" significa programar un ordenador con 1's y 0's. Eso es el equivalente a construir herramientas a partir de piedras.
La gente que empezó con 1's y 0's descubrió una manera de hacer las cosas más fáciles, construyendo los primeros lenguajes ensambladores. Eso es el equivalente a flechas y lanzas. Y nuestra generación heredó eso.
La siguiente generación heredó el lenguaje ensamblador y, basándose en él, construyó lenguajes de alto nivel. Eso es el equivalente a las herramientas de metal. Para entonces, construir herramientas de piedra quedó obsoleto.
Por supuesto, las ciencias de la computación son más recientes y evolucionaron más rápido que nada, así que la gente que programaba en 0 y 1 no sólo sigue viva, sino que es bastante joven, teniendo en cuenta que fueron pioneros.
Pero dudo que alguno de ellos defienda que alguien empiece por 0 y 1. Hoy todo el mundo empieza por un lenguaje de programación de alto nivel. Y al hacerlo, no estamos empezando "desde cero".
Los lenguajes de programación son herramientas. También lo son las bibliotecas. Si tu enfoque es construir más/nuevas/mejores herramientas, (¡no hay nada malo en ello!), podrías considerar volver a los 0 y 1, pero dudo que alguien te lo sugiera.
Pero, por otro lado, si lo que quieres es construir un programa para el usuario final, céntrate en el programa y haz uso de las herramientas que tienes disponibles. No tiene sentido reinventar la rueda. No ves a un carpintero forjando sus propias herramientas de acero por aquello de "hacerlo desde cero".
Ya no hay "desde cero" en informática. Hemos evolucionado y hay que agradecer a aquellos genios que realmente lo tuvieron difícil con los 1's y 0's que realmente nos allanaron el camino, y gracias a los cuales hoy tenemos el privilegio de programar con lenguajes de alto nivel.
¡Aquí tenéis, chicos! No hay escuela como la vieja escuela!