JavaRush /Blog Java /Random-ES /Elegir un lenguaje de programación

Elegir un lenguaje de programación

Publicado en el grupo Random-ES
Conocí la programación por primera vez en la escuela, en las clases de informática. Estas fueron algunas explicaciones tediosas de los principios de los sistemas numéricos n-arios. Bueno, como prueba, tuve que escribir mi propio sitio web. Entonces me pareció que no había actividad más aburrida en el mundo. ¡Qué equivocado estaba! Desafortunadamente, el plan de estudios de informática de la escuela no proporciona una imagen completa del trabajo de TI y no está claro cómo elegir un lenguaje de programación. Seleccionar un lenguaje de programación - 1Antes de hacer la pregunta "Qué lenguaje de programación elegir para aprender", un principiante debe familiarizarse con los lenguajes que existen y cuáles son sus diferencias.

Umbral de entrada: alto, bajo, medio

Entre los programadores, a menudo se puede oír hablar del "umbral de entrada", un concepto que refleja la cantidad de esfuerzo necesario para que un "joven" individual domine un lenguaje de programación a un nivel suficiente para escribir su primer programa serio y encontrar un trabajo. El “umbral de entrada” consiste en conocimientos:
  • características de sintaxis y matices del lenguaje;
  • bibliotecas;
  • Algoritmos y estructuras de datos.
De hecho, incluso trabajar en Excel puede considerarse una especie de programación. Por cierto, este familiar programa de oficina no es tan sencillo como parece. Por un lado, el umbral de entrada será la capacidad de crear una tabla; por otro, el conocimiento de fórmulas y macros complejas. En cualquier caso, este umbral es pequeño. Luego vienen los cuasilenguajes: por ejemplo, la programación 1C . Luego, los lenguajes más fáciles de aprender: por ejemplo, PHP . A continuación se encuentran los lenguajes con sintaxis nativa (generalmente derivada del inglés) que no requieren interacción manual con la memoria: por ejemplo, Java , 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 , C++ . Los lenguajes jóvenes multiparadigma tienen, quizás, la barrera de entrada más alta, porque para dominarlos es necesario comerse a más de un perro en otros lenguajes de programación: por ejemplo, Scala . Pero antes que nada, al elegir un idioma, debes decidir qué quieres hacer a continuación: desarrollar aplicaciones web, empresariales, de escritorio o móviles .

¿Web o no web?

Web

Los programadores web se pueden dividir en desarrolladores Frontend y Backend . Vale la pena entender lo que significan estos términos. Los desarrolladores de "frontend" se ocupan del llamado lado del cliente: lo que verá el usuario. "Backend" es la parte de software y hardware del servicio: lo que se ejecuta en el servidor. Para que un desarrollador Frontend decida qué lenguaje de programación elegir, lo imprescindible es JavaScript y sus frameworks: Angular JS, React y otros. Los dialectos JS no son tan populares como sus padres, pero también pueden ser útiles: CoffeeScript, TypeScript. También existe Flash AS, antes existían JScript y VBScript, pero solo los dinosaurios lo recuerdan =) Además, es necesario comprender HTML y CSS .
Seleccionar un lenguaje de programación - 2
Muchos principiantes piensan que JavaScript y Java son casi lo mismo, estos lenguajes no deben confundirse. JS solía llamarse "LiveScript" y obtuvo su nombre actual precisamente debido a la popularidad de la palabra "Java". PHP, Python, Ruby, Pearl, Java son adecuados para el backend web . Aquí me gustaría llamar la atención sobre PHP (hablaremos de otros lenguajes más adelante), uno de los lenguajes más fáciles de aprender y que tiene un umbral de entrada bajo. Ruby, a juzgar por una encuesta entre desarrolladores web conocidos, está ganando popularidad de forma lenta pero segura: es amado por su brevedad y belleza.

No web (empresarial, de escritorio, móvil)

Agrupé específicamente estos lenguajes de programación en una categoría con un nombre tan extraño. La mayoría de ellos se pueden utilizar para escribir aplicaciones empresariales, de escritorio e incluso móviles. Python , un OOLP fácil de entender, se ha vuelto increíblemente popular recientemente debido al desarrollo del aprendizaje automático : sus seguidores utilizan ampliamente Python. ML es un área bastante joven en TI y, aunque ya se han recibido los primeros frutos, no me apresuraría a sumergirme en esta industria a la hora de elegir un lenguaje de programación. Primero, debes ser MUY bueno en matemáticas. En segundo lugar, la ola de popularidad puede ir en el mismo sentido que con la “cadena de bloques” o la “nanotecnología”. Además, como recordarás, Python se utiliza en el desarrollo web. C++ : clásico, todo se basa en las “ventajas”. Este lenguaje fue el progenitor de todos los OOLP populares y un principiante definitivamente debería prestarle atención. Muchas aplicaciones populares se basan en él. Pero la alta probabilidad de "pegarse un tiro en el pie" y la sintaxis difícil de entender anulan la posibilidad de que un principiante domine este mastodonte de la programación. Kotlin : Java para hipsters: una combinación loca de programación orientada a objetos y programación funcional. Recientemente popular debido al hecho de que un desarrollador experimentado que cambia de Java a Kotlin mejora significativamente su productividad. Un desarrollador experimentado se acostumbrará rápidamente a este lenguaje. Por cierto, lo mismo se aplica a Scala, pero Kotlin es popular en Android. Java es fácil de aprender para un principiante. Incluso gracias a JavaRush : fue aquí donde entendí cómo elegir un lenguaje de programación =) La sintaxis de Java es clara, existe la posibilidad de "dispararse en el pie", pero no es crítica.

¿POO o POP?

Enfoque procesal

El enfoque orientado a procedimientos implica escribir un programa que consta de declaraciones secuenciales que pueden ensamblarse en un todo único para resolver eficazmente una gama específica de problemas. Estos lenguajes incluyen: C , PureBasic y Pascal . Los mismos que traen desánimo a los estudiantes de secundaria y junior. También hay un GO relativamente joven . Sin embargo, la familiaridad con los lenguajes procedimentales es muy útil para un desarrollador potencial. Para mí, la inmersión en lenguajes procedimentales está asociada al sistema Mathematica (Wolfram) y a las actividades de investigación universitaria. Gracias a los enfoques algorítmicos correctos y procedimientos simples, moviéndonos linealmente desde el principio del programa hasta el final, pude calcular valores que son relevantes para la física teórica moderna. Es gracias a estos lenguajes “secuenciales” que empiezas a comprender que a veces es más fácil escribir código que contar por tu cuenta. Estudiar PPP proporciona una buena formación algorítmica, que un empleador casi siempre quiere ver en un candidato al contratar. Los cimientos de todo y de todos en TI se basan en lenguajes procedimentales, así que no los subestime. Por cierto, los principiantes que deciden qué lenguaje de programación elegir para aprender a menudo piensan que el subproceso múltiple es prerrogativa exclusiva de la programación orientada a objetos. Esto está mal. Los lenguajes de programación procesal también permiten realizar cálculos paralelos.
Seleccionar un lenguaje de programación - 3

Enfoque orientado a objetos

Quienes comenzaron con lenguajes procedimentales suelen tener buenos conocimientos de matemáticas, algoritmos y estructuras de datos (esto se debe al énfasis en estas áreas de conocimiento en las universidades técnicas). Sin embargo, en la realidad moderna, los programadores exitosos suelen ser aquellos que dominan bien otro enfoque de programación: la programación orientada a objetos. La ideología OOP hace posible construir sistemas verdaderamente globales. La peculiaridad de este enfoque es su similitud con el mundo real:
  • varios objetos interactúan entre sí y existen independientemente unos de otros.
  • Los objetos tienen una jerarquía y son capaces de adoptar o cambiar el comportamiento de sus antepasados.
  • Se puede operar con conceptos abstractos, pero sólo pueden interactuar objetos realmente existentes.

Ejemplo

Los lenguajes orientados a procedimientos son herramientas para resolver problemas específicos. Y si su tarea ha sufrido un cambio, aunque sea menor, lo más probable es que tenga que dedicar tiempo y esfuerzo a reescribir todos los algoritmos.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобo, Cómo новые, так и подержанные. В procedimientosном языке для каждого un objetoа нужно описать функции, обрабатывающие ввод o вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При un objetoно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый o б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим un objetoы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время Cómo ООП-язык позволит просто создать новый un objeto МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с un objetoами.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними Cómo с цельным un objetoом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту o команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные procedimientosы. Благодаря этому сторонний разработчик быстро разберется в твоем códigoе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного un objetoа может ниCómo не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних un objetoов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Cómoую библиотеку подключить, Cómoова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    La base de documentación más amplia: documentación oficial de Oracle, portales de formación, comunidad en constante desarrollo. 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é escribir 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 primerizos escriben en Java. La empresa es un desarrollo interno necesario para las necesidades de las grandes corporaciones.

    Cada año, los que odian predicen la "muerte de Java", dicen: " Oracle dejará de admitirlo y, en general, estás haciendo tonterías ". ¡Esto está mal! Se promete que se lanzarán nuevas versiones de Java cada seis meses. Las innovaciones y características más importantes de la última versión se pueden leer aquí .

    Para mí las lambdas en Java 8 fueron una revolución y un descubrimiento, ¡sin mencionar las nuevas versiones! Ahora estoy trabajando en un proyecto "retrógrado", por lo que no profundizo en las innovaciones, pero el hecho de que Java sigue vivo es un hecho.

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

    Android ha ocupado con seguridad más del 80% del mercado de telefonía móvil en los últimos 4 años; bajo este sistema operativo funcionan televisores, reproductores multimedia e incluso sistemas multimedia de automóviles. Y el desarrollo de este sistema operativo se realiza principalmente en Java. Imagínense las perspectivas que se abren. Cuando conseguí trabajo como desarrollador de Android, me interesé: ¿cuánto cuesta el producto que estoy desarrollando? Resultó que el precio por año es de aproximadamente $5. Surgió una pregunta razonable: ¿de dónde salieron los fondos para esta oficina, para los sueldos, las galletas, una mesa de tenis, robots y otras “cosas bonitas”? Es una cuestión de cantidad: nuestra aplicación tiene 20 millones de usuarios.

  5. Salarios.

    Y de postre: el salario de un desarrollador Java es uno de los más altos del sector. Vas a aprender programación con un propósito específico: conseguir un buen trabajo.

Popularidad de un lenguaje de programación.

Al elegir un lenguaje de programación, debe pensar en el objetivo final del aprendizaje: conseguir su primer trabajo. Para evaluar la popularidad de diferentes idiomas, fui a un popular portal de contratación y comencé a mirar el número de vacantes para diversas solicitudes para Moscú. Puedes ver los resultados a continuación.
Java: 277
pitón: 227
PHP: 188
C#: 147
c++: 131
rubí: 40
escala: 24
kotlin: 20
Incluso el recientemente popular Python no pudo adelantarse a Java. Pero estos son datos subjetivos: una ciudad concreta, un día concreto. Hay fuentes oficiales, recurramos a ellas. En octubre de 2018, según TIOBE, Java ocupa el primer lugar. En el ranking PYPL , Java ocupa el segundo lugar, muy por delante de JS y compitiendo con el “de moda” Python.

RESULTADOS

Esto es a lo que un principiante debe prestar atención al elegir un lenguaje de programación:
  • Popularidad (Java ocupa constantemente una posición de liderazgo);
  • Umbral de entrada (para Java - promedio: la gama de competencias requeridas por el empleador es bastante amplia);
  • Materiales disponibles (no existen portales similares a JavaRush en ruso, por lo tanto, la palma va a adivinar quién =));
  • Áreas de aplicación: cuantas más industrias se puedan utilizar un lenguaje de programación, más especialistas se necesitarán en el mercado. Ya hablé de multiplataforma, pero no me cansaré de repetirlo.
Por supuesto, hay trampas en todas partes, pero el que camina dominará el camino: sólo tú puedes decidir qué lenguaje de programación elegir . ¡Buena suerte en tus estudios!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION