JavaScript es el mejor lenguaje de programación para principiantes. Entonces, ¿es o no?

JavaScript, a pesar de sus muchas deficiencias, es posiblemente el mejor lenguaje de programación para desarrolladores principiantes, y el mejor lenguaje con el que los niños pueden jugar.

imagen

Era 2007 Excelente editor de libros técnicos, O'Reilly Media me contactó con una idea. Me preguntaron si me gustaría escribir un libro sobre JavaScript para principiantes absolutos en programación. "¿Por qué demonios?" Inmediatamente hice una contrapregunta.

No se podría decir que JavaScript era un lenguaje completamente inútil en esos días. Pero era solo uno, lejos del ingrediente más importante de un conjunto cuidadosamente seleccionado de tecnologías necesarias para el desarrollo del sitio web. Sí, pequeñas piezas de código JS podrían usarse para validar formularios o para resaltar botones que se ciernen sobre. Pero JavaScript era solo una adición opcional a la funcionalidad del sitio. Si lo elimina de la página, entonces todo continuó funcionando casi de la misma manera que con su uso.

JavaScript, además, extrajo mucho equipaje, presentado por otras tecnologías. Entonces, los problemas de incompatibilidad del navegador estaban asociados con él; era lento, inseguro, completamente poco confiable. No estaba interesado en enseñarle a alguien a crear widgets inútiles para páginas web en JavaScript. Estos widgets me parecieron tan insignificantes como los gifs animados con un globo giratorio, que eran muy populares en los albores de Internet.


La forma más obvia de usar JavaScript, como pensé ingenuamente entonces, era algo como esto: un marco de servidor grande debería generar todo el código JS necesario e incrustarlo en una página diseñada específicamente para su navegador. El código JavaScript generado por el servidor puede ser demasiado engorroso, pero estaría diseñado para una versión específica del navegador. Y dado que JS solo desempeñaba el papel de un mecanismo auxiliar, todo funcionaría como debería, incluso si el visitante del sitio desactivara completamente JavaScript.

No hace falta decir que no escribí un libro sobre JavaScript. Continué haciendo programación del lado del servidor y escribí sobre mis tecnologías favoritas (generalmente sobre C # y .NET Framework). Han pasado muchos años.

Entonces sucedió algo extraño.

JavaScript literalmente despegó.

Todavía no creo que JavaScript merezca el honor de ser llamado el mejor lenguaje de programación del mundo. Incluso si, sinceramente, no lo considero un muy buen lenguaje. Pero de alguna manera cambié de opinión. Ahora creo que JavaScript es probablemente el mejor primer idioma para niños y programadores novatos. La cuestión es que JavaScript tiene una gran ventaja sobre todos los demás lenguajes de programación.

La sorprendente prevalencia de JavaScript es su principal ventaja.


Uno de los beneficios únicos de JavaScript es su prevalencia.

Este lenguaje se puede encontrar literalmente en todas partes. Es compatible con todos los sistemas operativos, en todos los tipos de navegadores y en computadoras de escritorio y dispositivos móviles. También es muy importante que las aplicaciones de JavaScript funcionen sin instalarlas en las computadoras de los usuarios. De hecho, ya es difícil recordar los días no tan antiguos en que las empresas, que implementaban aplicaciones cliente-servidor en sus redes internas, pasaban semanas luchando con los problemas de configuración de estas aplicaciones y con errores inesperados. Frente a estas pesadillas, es muy posible que aprecies el atractivo de JavaScript.

JavaScript, debido a su prevalencia, no tiene que ser el mejor lenguaje de programación. Solo necesita ser un idioma lo suficientemente bueno.

Mecanismos similares funcionan cuando se trata de aprender a programar. Al principio, el problema de la prevalencia del lenguaje no parece particularmente importante para alguien cuyo objetivo es aprender técnicas prácticas probadas para desarrollar programas. Pero muchos de los mismos problemas son relevantes, como para la programación profesional, en la programación de enseñanza. Si quiere que alguien use lo que ha creado, entonces JavaScript es la única alternativa.

Supongamos que está desarrollando una aplicación maravillosa que, al hacer preguntas a un usuario, determina su perfil de personalidad. Configurar un entorno de desarrollo es bastante simple. Pero, ¿qué sucede cuando quieres enviar tu programa a un amigo? ¿Tendrá que instalar un entorno de tiempo de ejecución o recrear el mismo entorno de desarrollo que el suyo? ¿Será necesario "ajustar" la configuración de seguridad de su computadora antes de que pueda descargar e instalar su programa? ¿Quizás su amigo usa un sistema operativo que simplemente no es compatible con su programa, o una plataforma móvil en la que, si no entra en detalles, puede instalar solo aplicaciones profesionales distribuidas a través de iTunes o Google Play? Si utiliza JavaScript para desarrollar el programa y utiliza un sitio web simple para distribuirlo (por ejemplo, GitHub le permite crear dichos sitios de forma gratuita), entonces todos estos problemas simplemente desaparecerán.

Y si nuestro futuro programador es un niño, aquí hay un hecho innegable para usted: los niños y los navegadores están muy conectados. Si vio a un niño que trabaja en una computadora (no en un dispositivo móvil), es posible que haya notado que pasa al menos el 98% de su tiempo trabajando con un navegador. Los niños juegan juegos de navegador, usan las redes sociales y van a la escuela con Google Classroom y Google Docs. Y si el código que escriben los niños funcionará en el mundo de su navegador nativo, será completamente natural.

Ahora estamos discutiendo las fortalezas de JavaScript. Pero, por supuesto, hablando de JavaScript como un lenguaje de programación para principiantes, uno no puede evitar recordar sus deficiencias.

Fallas de JavaScript


¿Qué pasa con los problemas de JavaScript? Este lenguaje tiene serios defectos, sus peculiaridades, contradicciones y limitaciones pueden ser extremadamente desagradables para alguien que recién está comenzando a aprender programación. Afortunadamente, existen soluciones modernas que pueden mitigar la mayoría de las deficiencias de JavaScript.

Analicemos cuatro quejas principales sobre este idioma.

▍1. El problema con trabajar con tipos de datos en JavaScript


El concepto más importante que los programadores novatos aprenden muy temprano es la idea de variables, contenedores que almacenan información mientras se ejecuta el programa. El problema con JavaScript es que este lenguaje es demasiado suelto y desordenado con las variables. Le permite hacer algo que no se ve bien e ignora inconsistencias obvias. Su negligencia puede convertir errores menores en desastres que interrumpen el funcionamiento de los programas.

Aquí hay un ejemplo de un código que está condenado al fracaso:

var myNumber = 100; myNumber = myNumbr + 1; 

¿Viste un error? La segunda línea, de hecho, usa dos variables: la variable myNumber , que se declaró en la primera línea, y una variable ficticia myNumbr . Sabemos que la segunda variable es el resultado de un error tipográfico, pero JavaScript solo nos notificará durante la ejecución del programa, dando un mensaje de error que se parece a ReferenceError: myNumbr is not defined . Lo mismo sucede si al escribir el nombre de una variable, las letras myNumber y minúsculas se mezclan (por ejemplo, una variable de myNumber se convierte accidentalmente en MyNumber ). Puede surgir un problema, pero de una naturaleza diferente, si usted, considerando que una determinada variable almacena un número, le agrega otro número, y esta variable, de hecho, contenía una cadena u otra cosa. JavaScript en este caso no informará un error, pero el resultado de los cálculos será completamente diferente de lo que cabría esperar al sumar dos números. Cada desarrollador de JavaScript puede recordar una historia desagradable de este tipo, cuando la confusión de tipos causó errores extraños en los programas.

Ya es bastante difícil aprender a programar y, al mismo tiempo, preocuparse por cómo el lenguaje de programación que está aprendiendo puede dañarlo. Pero, afortunadamente, los problemas de trabajar de forma segura con tipos de datos pueden resolverse fácilmente con la ayuda de herramientas de desarrollo adecuadas.

Uno de mis editores de código favoritos que es adecuado para aprender programación y para uso profesional es Visual Studio Code . Es gratuito, poco exigente con los recursos, su código está abierto, puede expandirse hasta el infinito. Una de sus características más notables es apoyar la organización de la comprobación del código JavaScript para detectar problemas comunes con TypeScript. Puede habilitar esta verificación utilizando el archivo de configuración apropiado o insertando el siguiente comentario en la parte superior del archivo JavaScript:

 // @ts-check 

Aquí hay un ejemplo en el que hay dos errores, ninguno de los cuales, desde el punto de vista de JavaScript, es un error.


Problemas JavaScript no considera errores

Si agrega el comentario // @ts-check al comienzo de este archivo, VS Code resaltará las líneas de código que contienen posibles errores.


Líneas destacadas de código

Si pasa el cursor sobre una línea resaltada, aparece una ventana emergente que explica el problema.


Explicación del problema.

¿Qué conclusiones se pueden sacar de esto? Aunque JavaScript tolera muchas cosas malas, si combina JavaScript con un editor de código de calidad y las herramientas adicionales adecuadas, puede crear un entorno de desarrollo similar a los que tienen otros lenguajes de programación modernos. Como resultado, el desarrollo en JavaScript es tan conveniente como en otros lenguajes y, por supuesto, sus otras ventajas no desaparecen.

▍2. JavaScript no es compatible con OOP


La programación orientada a objetos (OOP) es un enfoque para modelar y organizar código. Si las técnicas OOP se aplican correctamente, ayudan al programador a crear código simple y bien organizado. OOP también facilita la reutilización de funciones importantes del programa.

JavaScript es conocido por su falta de soporte para la programación orientada a objetos. De hecho, los desarrolladores de JavaScript han eludido tradicionalmente esta deficiencia al usar todo tipo de construcciones extrañas. Estas construcciones pueden significar algo para alguien que ya ha estudiado OOP (e incluso para alguien que no ha estudiado, sino que simplemente copió una plantilla en su código y está acostumbrado a trabajar con ella). Pero si usted es una persona completamente nueva en programación, el uso de construcciones tan dudosas que implementan conceptos básicos de programación es completamente incorrecto.

Afortunadamente, existen hermosas soluciones que brindan soporte de OOP en JavaScript. Mi solución favorita de este tipo es TypeScript , un proyecto de código abierto lanzado por Microsoft en 2012. TypeScript es un tipo de JavaScript mejorado que admite OOP (así como muchas otras características útiles, como la verificación de tipo fuerte).

Alguien puede decir que estamos hablando de JavaScript, y que TypeScript, sin embargo, no es JavaScript. Y, de hecho, lo es. Pero aquí hay un detalle interesante. El código se escribe en TypeScript y luego se convierte a JavaScript antes de ejecutarse. Esto le permite disfrutar de lo mejor de los mundos de TypeScript y JavaScript. Si elige TypeScript, tendrá un lenguaje de programación moderno en el que puede escribir su código y el soporte más amplio que utiliza JavaScript común.

Y, lo mejor de todo, el código TypeScript se convierte a JavaScript automáticamente. Por supuesto, el código JavaScript generado por computadora utiliza construcciones bastante engorrosas para reflejar en él los conceptos implementados por TypeScript, pero esto no cambia nada. El programador estudia los conceptos de OOP, y el código terminado funciona correctamente, procesado sin problemas por medio de computadoras modernas.

No lo creo? Luego, piense en el hecho de que algunas de las aplicaciones de escritorio innovadoras más modernas usan una combinación de TypeScript y Electron , un marco que le permite ejecutar código JavaScript fuera de un navegador tradicional (aunque debe tenerse en cuenta que Electron usa las capacidades del navegador). Uno de los ejemplos más impresionantes de dicha aplicación es el editor VS Code. Resulta que la herramienta con la que es muy conveniente escribir código JavaScript está escrita en JavaScript. Es cierto, para ser más precisos, VS Code está escrito en TypeScript, pero el código escrito en este lenguaje todavía se convierte en código JavaScript.

Por supuesto, al aprender programación no es necesario usar TypeScript, y los nuevos programadores de JavaScript, si deciden hacerlo, podrán hacer mucho sin estudiar los principios de OOP. Esto es, de hecho, una cuestión de elección. En cualquier caso, se puede observar que JavaScript es un lenguaje que se desarrolla dinámicamente, y se le agregan gradualmente características que lo acercan a todo lo valioso que tiene TypeScript.

▍3. Around está lleno de código JavaScript de baja calidad


Que puedo decir El código de mala calidad se puede escribir en cualquier lenguaje de programación. ¿Has oído hablar de Visual Basic ?

▍4. El desarrollo de JavaScript requiere bibliotecas y marcos adicionales


Para obtener acceso a una gama más amplia de funcionalidades que en el lenguaje (y no para reinventar la rueda), los programadores de JavaScript deben usar bibliotecas y marcos de terceros. Elegir los ingredientes correctos utilizados para crear un proyecto no es tan fácil como podría parecer a primera vista. Es, en particular, que las herramientas adicionales seleccionadas deben resolver correctamente las tareas que se les asignaron, es necesario que el programador tenga la confianza de que continuarán utilizando el soporte de sus desarrolladores durante mucho tiempo, que no entrarán en conflicto entre sí amigo

Los desarrolladores que usan otros idiomas también se enfrentan a algún tipo de problema. Sin embargo, debe tenerse en cuenta que pocos idiomas sufren tanto de este problema como JavaScript. Para convertirse en un programador serio en un mundo abierto para todo JavaScript, necesita ensamblar su propio conjunto de herramientas de desarrollo. Al mismo tiempo, cada una de las opciones posibles es tan compleja y multifacética que solo puede comprender si una biblioteca es adecuada para usted, si la estudia muy bien (y cuando la estudia, puede resultar que ya pierda su relevancia al su lugar vendrá algo nuevo, atractivo, quizás, por un corto tiempo, interés general).

No importa cuán triste sea todo esto, estos problemas, de hecho, no afectan a los principiantes. Si alguien está aprendiendo programación usando JavaScript, entonces es mejor mantenerse alejado de los frameworks y bibliotecas, ya sea algo ampliamente conocido, como jQuery , Angular , React o Vue , o algo inventado en un momento en que esta oración fue escrita, o la segunda cuando se publicó este artículo. Por supuesto, un principiante, habiendo dominado bien las cosas fundamentales, probablemente querrá familiarizarse con al menos una de las herramientas adicionales populares. Pero esta es una historia completamente diferente.

Resumen


De hecho, la elección del primer lenguaje de programación es una pregunta para la cual es imposible encontrar la respuesta absolutamente correcta. El autor de este material aquí solo compartió su propia opinión sobre este tema, dio ejemplos cercanos a él debido a su experiencia y preferencias. Pero, en cualquier caso, todos los programadores comienzan en algún lugar, y no importa cuán difícil sea la elección del primer idioma, esta elección aún debe hacerse.

Estimados lectores! ¿Está de acuerdo en que JavaScript es, en condiciones modernas, el mejor lenguaje para aprender a programar? Si no está de acuerdo, ¿quizás conozca algún idioma que sea más adecuado para este propósito?

Source: https://habr.com/ru/post/445272/


All Articles