Creo que "lenguaje de secuencias de comandos" es una palabra horrible, que está extremadamente desactualizada o, en el mejor de los casos, se adapta a una clase de lenguajes específicos de dominio. Tu maestro solo está alineando todo lo que claramente no entiende lo suficiente en un eje del mal.
Una distinción sensata es la que se da entre lenguajes de alto nivel y lenguajes de bajo nivel, o entre lenguajes de tipo estático y dinámico, que son verdaderamente ortogonales.
Assembler tiene un nivel dinámico de tipo dinámico (si hablar de tipos tiene algún sentido), C tiene un nivel bajo de tipo estático, Ruby tiene un nivel alto de tipo dinámico, Haskell tiene un nivel alto de tipo estático. Java no es de tipo estático alto ni bajo, C ++ es de nivel estático alto y bajo. Y así.
La discusión solo puede ser, qué paradigmas son más adecuados para un programador de nivel de entrada.
Estoy bastante convencido de que la programación de bajo nivel probablemente no sea una. Podría haber sido, en algún momento a principios de los años 90, cuando en realidad podría producir resultados interesantes en un tiempo razonable.
Pero la programación es alimentada por la pasión. La pasión se nutre de recompensas. Por lo tanto, los programadores de nivel básico deben comenzar con herramientas gratificantes. Las herramientas de bajo nivel ya no son gratificantes, porque hay un vasto mar de herramientas de alto nivel que te dan el mismo resultado en una fracción del tiempo.
El pensamiento humano es abstracto. A medida que aprendemos a entender el mundo, lo hacemos mediante abstracciones de grano muy grueso y entramos en detalles según sea necesario.
Para que un niño entienda su entorno, no se le enseñarán matemáticas, luego física, luego química, luego biología, luego historia, sociología y filosofía. Le das un modelo muy simple del mundo para hacer frente y, por sí solo, mucho tiempo para superarlo, te disparará interminablemente cuando seas joven y luego negarás por completo tu autoridad.
Así es como pensamos. El cerebro humano solo puede procesar cantidades limitadas de "unidades" de información, pero el grado de abstracción importa poco en la cuantificación de la información. Por ejemplo: leer la expresión '34 * 75 'para nosotros es más simple para nosotros que calcularlo, mientras que para las computadoras es al revés. Reconocer (y, por lo tanto, abstraer) un montón de píxeles negros en una línea ondulada, que luego se puede reconocer (y, por lo tanto, una vez más abstraído) como un dígito individual, es una gran cantidad de trabajo.
Mi abuela entiende la idea de abrir un archivo. Sin embargo, ella no tiene comprensión por debajo de ese nivel. Y, francamente, si hubiera tenido que aprender esto estudiando primero el funcionamiento interno del hardware y el sistema operativo y lo que no, nunca habría llegado allí.
Hay mucha gente por ahí, que complican demasiado las cosas, porque nunca se les enseñó a pensar en términos de soluciones claras, concisas y, por lo tanto, elegantes, sino que pasaron demasiado tiempo molestando con detalles intercambiables de bajo nivel y resolviendo problemas en contra de ellos. Enseñar a las personas a pensar como las computadoras es el peor enfoque posible para la programación.
El valor de la programación radica en encontrar una solución a un problema. Expresarlo como código es realmente una tarea aburrida y mecánica, y simplemente debe hacerse con las herramientas adecuadas.
Ah, y no te preocupes por no haber entendido los punteros. Tuve el mismo problema a la misma edad. El problema aquí también es la falta de abstracción. Clásicamente, aprende acerca de los punteros de algún libro de C y, mientras lucha por comprenderlos, esto va de la mano con la asignación de memoria y, por lo tanto, con la memoria de pila y montón, y así sucesivamente. El concepto abstracto detrás de los punteros es la indirección. Una variable que contiene un índice en una matriz específica es solo eso (en realidad es lo mismo en C, donde la matriz específica es su espacio de direcciones), y no necesita aritmética de puntero para esto.
Esto solo pretende ilustrar, que elegir un alto nivel de abstracciones hace que las cosas sean mucho más fáciles de entender.
EDITAR: y cuando se trata de escribir, prefiero los idiomas estáticamente escritos. Y creo que los programadores de nivel básico deberían entender claramente el concepto de tipos (que es abstracto).