Me encontré con la programación por primera vez en la escuela, en lecciones sobre informática. Estos consistieron en algunas explicaciones tediosas de cómo funcionan los sistemas numéricos n-arios. Y, por supuesto, había una prueba que requería que escribieras tu propio sitio web. En ese momento, me pareció que no podía haber una ocupación más aburrida. ¡Qué equivocado estaba! Desafortunadamente, un programa de ciencias de la computación de la escuela secundaria no brinda una imagen completa del trabajo de TI y no explica cómo elegir un lenguaje de programación. Antes de preguntar "¿Qué lenguaje de programación debo aprender?", un principiante debe familiarizarse con los idiomas que existen y en qué se diferencian entre sí. Elegir un lenguaje de programación - 1

Umbral de entrada: alto, bajo, medio

Los programadores a menudo hablan sobre el "umbral de entrada", un concepto que refleja la cantidad de esfuerzo que requiere cualquier "desarrollador junior" para dominar un lenguaje de programación lo suficientemente bien como para escribir su primer programa serio y encontrar un trabajo. El "umbral de entrada" consiste en el conocimiento de:
  • peculiaridades sintácticas y matices del lenguaje
  • bibliotecas
  • algoritmos y estructuras de datos.
Trabajar en Excel podría incluso llamarse un tipo de programación. Por cierto, este conocido programa ofimático no es tan sencillo como parece. Para un usuario, el umbral de entrada podría ser la capacidad de crear una tabla. Por otro, podría ser el conocimiento de fórmulas y macros complejas. En cualquier caso, este umbral es pequeño. Luego vienen los cuasi-lenguajes, como la programación 1C . Luego están los lenguajes más simples de aprender, por ejemplo, PHP . Además, tenemos lenguajes con sintaxis nativa (generalmente derivada del inglés) que no requieren que maneje la administración de memoria, por ejemplo, Java y JS . Luego están los lenguajes que requieren un manejo extremadamente cuidadoso de la memoria, las estructuras de datos y los algoritmos, por ejemplo, C yC++ . Los lenguajes jóvenes de múltiples paradigmas, por ejemplo, Scala , tienen quizás el umbral de entrada más alto, porque dominarlos requiere que te sumerjas profundamente en tantos paradigmas de programación. Pero antes de elegir un idioma, debe decidir qué quiere hacer a continuación: desarrollar para la web, la empresa, el escritorio o los dispositivos móviles .

¿Web o no web?

Web

Los programadores web se pueden dividir en desarrolladores Frontend y Backend . Debe entender lo que significan estos términos. Los desarrolladores frontend están involucrados en el lado del cliente, es decir, lo que ve el usuario. El "backend" se trata de manipular y almacenar datos, la parte de un servicio que se ejecuta en un servidor. Para un desarrollador frontend que decide qué lenguaje de programación aprender, JavaScript y los marcos de JavaScript (Angular JS, React y otros) son esenciales. Los dialectos de JS, como CoffeeScript y TypeScript, no son tan populares como sus padres, pero también pueden ser útiles. También hay Flash AS, y solía haber JScript y VBScript, pero solo los dinosaurios recuerdan esto =) Además de todo esto, necesitas entender HTMLy CSS . Elegir un lenguaje de programación - 2Muchos principiantes piensan que JavaScript y Java son casi lo mismo. No confundas estos idiomas. JS se llamaba anteriormente "LiveScript" y obtuvo su nombre actual solo por la popularidad de la palabra "Java". Para un desarrollador back-end web , son adecuados PHP, Python, Ruby, Perl y Java. Aquí quiero centrarme en PHP (hablaremos de los otros lenguajes más adelante). PHP es uno de los lenguajes más fáciles de aprender, con un umbral de entrada bajo. Según una encuesta de desarrolladores web conocidos, Ruby está ganando popularidad de forma lenta pero segura: es amado por su concisión y belleza.

No web (empresa, escritorio, móvil)

He combinado intencionalmente los siguientes lenguajes de programación en esta categoría con un nombre extraño. Puede usar la mayoría de ellos para escribir aplicaciones empresariales, de escritorio e incluso móviles. Python es un lenguaje de programación orientado a objetos fácil de entender y se ha vuelto increíblemente popular recientemente debido al crecimiento del aprendizaje automático (ML): los desarrolladores de ML hacen un uso extensivo de Python. MLes un área bastante nueva en TI, y aunque ya la hemos visto dar sus frutos, no me precipitaría en esta industria al elegir un lenguaje de programación. Primero, necesitarás una EXCELENTE comprensión de las matemáticas. En segundo lugar, la ola de popularidad puede pasar de la misma manera que pasó con la "cadena de bloques" o la "nanotecnología". Dicho esto, puede recordar que Python se usa en el desarrollo web. C++: un lenguaje clásico donde todo se basa en el operador "más-más". Este lenguaje es el ancestro de todos los lenguajes de programación populares orientados a objetos, y un principiante definitivamente debería prestarle atención. Muchas aplicaciones populares se han escrito usándolo. Pero la excelente oportunidad de "pegarte un tiro en el pie" y la sintaxis difícil de entender reducen a cero la probabilidad de que un principiante domine este mastodonte de la programación. kotlin, que es como Java para hipsters, es una mezcla loca de OOP y programación funcional. Ha sido popular recientemente debido al hecho de que un desarrollador experimentado que cambia de Java a Kotlin puede mejorar significativamente su productividad. Un desarrollador experimentado se familiarizará rápidamente con este lenguaje de programación. Por cierto, lo mismo se aplica a Scala, pero Kotlin es popular en el mundo de Android. Java es fácil de aprender para los principiantes. Especialmente con la ayuda de CodeGym =) La sintaxis de Java es comprensible y, aunque existe el riesgo de "dispararse en el pie", no es crítica.

OOP o POP?

El enfoque procesal

El enfoque orientado a procedimientos implica escribir un programa que consta de declaraciones secuenciales que se pueden ensamblar en un todo unificado para resolver de manera efectiva un conjunto específico de problemas. Dichos lenguajes incluyen C , PureBasic y Pascal . En otras palabras, los lenguajes que traen desesperación a los estudiantes de secundaria y de pregrado. También está el relativamente joven GOidioma. Dicho esto, estar familiarizado con los lenguajes de procedimiento es muy útil para un desarrollador potencial. Mi inmersión en los lenguajes procedimentales llegó con el sistema Wolfram Mathematica y la investigación universitaria. Los algoritmos adecuados y los procedimientos simples, moviéndose linealmente desde el principio del programa hasta el final, me permitieron calcular valores relevantes para la física teórica moderna. Este lenguaje de programación "secuencial" es justo lo que necesita para ayudarlo a comprender que a veces es más fácil escribir código que realiza cálculos manualmente. La programación orientada a procedimientos (POP) de aprendizaje proporciona una buena formación algorítmica, que un empleador casi siempre quiere ver en un candidato a un puesto de trabajo. Absolutamente todo en TI está construido sobre la base de lenguajes procedimentales, así que no los subestimes. Por cierto, los principiantes que deciden qué lenguaje de programación aprender a menudo piensan que solo los lenguajes OOP admiten subprocesos múltiples. Esto no es verdad. Los lenguajes de programación procedimental también permiten cálculos paralelos. Elegir un lenguaje de programación - 3

El enfoque orientado a objetos

Aquellos que comenzaron con lenguajes procedimentales suelen estar bien versados ​​en matemáticas, algoritmos y estructuras de datos (debido al énfasis de las universidades técnicas en estas áreas). Aún así, la realidad actual es que los programadores exitosos suelen ser aquellos que dominan un enfoque diferente de la programación: el paradigma orientado a objetos. La ideología OOP le permite construir sistemas verdaderamente globales. Una característica de este enfoque es su similitud con el mundo real:
  • Diferentes objetos interactúan entre sí y existen independientemente unos de otros.
  • Los objetos tienen una jerarquía y pueden adoptar o cambiar el comportamiento de sus ancestros.
  • Puede usar conceptos abstractos, pero solo los objetos que realmente existen pueden interactuar.

Ejemplo

Los lenguajes orientados a procedimientos son herramientas para resolver problemas específicos. Si su tarea cambia, aunque sea levemente, probablemente tendrá que dedicar tiempo y esfuerzo a reescribir todos los algoritmos.

Imagine un programa que describa un concesionario de automóviles que vende automóviles y camiones, tanto nuevos como usados. En un lenguaje procedimental, debe definir funciones que procesen la entrada o salida de datos para cada entidad: un automóvil nuevo, un camión nuevo, un automóvil usado y un camión usado. ¿Qué ofrece OOP? Con un enfoque orientado a objetos, solo necesitamos definir una clase base de Vehículo que almacene las características compartidas por todos los tipos de vehículos:

  • Hacer
  • Desplazamiento del motor
  • Caballo de fuerza
  • Año
  • nuevo o usado
  • Precio

Y métodos para recibir y enviar información. Luego creamos objetos que heredan las características de la clase Vehicle: Car y Truck. Contienen información que pertenece específicamente a este tipo de vehículos, así como métodos de entrada/salida.

De repente, la dirección del concesionario decide ampliar la oferta ofreciendo también motocicletas. Bajo el enfoque procedimental, tendríamos que recrear toda la lógica para motocicletas nuevas y usadas, mientras que un lenguaje OOP nos permite simplemente crear una nueva clase de motocicletas que hereda todas las características de la superclase de vehículos y contiene mejoras específicas de motocicletas.

¿Y qué pasaría si añadimos varios vehículos? Una implementación procedimental requeriría más trabajo que OOP. Además, cuanto mayor sea la alineación, se requerirán menos operaciones que involucren objetos.

Entonces, OOP es un estilo de programación que le permite combinar datos y métodos en una sola entidad y trabajar con ellos como un objeto unificado. Las entidades se pueden organizar en una jerarquía e interactuar entre sí sin profundizar en los detalles de implementación interna de cada una. Señalaré tres razones por las que la programación orientada a objetos es el enfoque más progresivo para mí:
  1. OOP implica el desarrollo independiente de módulos individuales, lo que permite a un programador o equipo elegir el método y los límites de contacto e intercambio de información.
  2. El código dividido en pequeños módulos es mucho más fácil de leer que los procedimientos monolíticos. Como resultado, una persona externa puede comprender rápidamente su código y, de la misma manera, puede unirse a un nuevo proyecto si es necesario.
  3. Una clase se puede cambiar sin afectar la interacción de otra, pero dicho cambio puede afectar la jerarquía de los objetos secundarios. Una vez que haya dominado este enfoque, expandir y modificar un programa se vuelve trivial.
Recuerde que un enfoque no está en conflicto con el otro, pero OOP aún está más arriba en la jerarquía. Entonces, ¿por qué recomiendo Java? Destacaría las siguientes razones:
  1. Multiplataforma.

    Java funciona en todas partes gracias a la máquina virtual Java (JVM). Una de las principales ventajas de este lenguaje es su naturaleza multiplataforma: no es necesario pensar en qué biblioteca agregar o la arquitectura de un procesador en particular. "Escribe una vez, corre a cualquier lugar."

  2. Documentación.

    Existe una enorme base de documentación: documentación oficial de Oracle, portales de capacitación y una comunidad en constante evolución. Las respuestas a la mayoría de las preguntas que surgen durante el desarrollo se pueden encontrar en unos minutos. Lo principal es entender qué ingresar en el motor de búsqueda =)

  3. Popularidad.

    Java es el lenguaje de programación más popular del mundo: además de los desarrolladores web y de Android mencionados anteriormente, casi todos los desarrolladores empresariales escriben en Java. La empresa se refiere al desarrollo corporativo interno necesario para las necesidades de las grandes corporaciones.

    Cada año, los haters predicen "la muerte de Java". Dicen: " Oracle dejará de admitirlo. Estás perdiendo el tiempo por completo ". ¡Esto no es cierto! Prometen lanzar nuevas versiones de Java cada seis meses.

    Para mí, las expresiones lambda en Java 8 fueron revolucionarias y una revelación, ¡por no hablar de las nuevas versiones! Actualmente estoy trabajando en un proyecto "heredado", por lo que no profundizo en las últimas innovaciones, pero es un hecho que Java está vivo.

    Elegir un lenguaje de programación - 4
  4. Androide.

    Durante los últimos 4 años, Android ha ocupado constantemente más del 80 % del mercado de teléfonos móviles . Los televisores, los reproductores multimedia e incluso los sistemas de información y entretenimiento del automóvil funcionan con este sistema operativo. Y el desarrollo de aplicaciones para este sistema operativo ocurre principalmente en Java. Imagínense las perspectivas que se abren. Cuando conseguí un trabajo como desarrollador de Android, me preguntaba cuánto valía el producto que estaba desarrollando. Al final resultó que, el precio era de alrededor de $ 5 por año. Eso plantea la pregunta: "¿Entonces de dónde proviene el dinero para esta oficina, los salarios, el comedor, la mesa de ping-pong, los robots y otros beneficios? La respuesta está en el volumen: nuestra aplicación tiene 20 millones de usuarios".

  5. Salarios.

    Y ahora la guinda del pastel: el salario de un desarrollador de Java se encuentra entre los más altos de la industria. Después de todo, planeas estudiar programación con un propósito específico: conseguir un buen trabajo.

La popularidad del lenguaje de programación

Existen fuentes oficiales de información, así que vayamos a ellas. Según TIOBE , Java ocupa el primer lugar a partir de octubre de 2019. En el ranking PYPL , Java ocupa el segundo lugar, muy por delante de JS y rivalizando con el moderno Python.

Conclusión

Cuando un principiante contempla elegir un lenguaje de programación, esto es a lo que debe prestar atención:
  • Popularidad (Java ocupa constantemente una posición de liderazgo)
  • Umbral de entrada (para Java, es medio: los empleadores requieren una gama bastante amplia de habilidades)
  • Materiales disponibles (bienvenidos a CodeGym =))
  • Campos de aplicación: cuantos más campos se utilice un lenguaje de programación, más especialistas se requieren en el mercado. Ya mencioné cómo Java admite el desarrollo multiplataforma, pero nunca me canso de repetirlo.
Por supuesto, hay trampas en todas partes, pero el que da un paso avanza: solo tú puedes decidir qué lenguaje de programación elegir. ¡Buena suerte en el aprendizaje!