¿Cuál es el lenguaje de programación mas complicado de aprender?


La dificultad de un lenguaje de programación puede variar según la experiencia y el enfoque del programador. Sin embargo, algunos lenguajes son conocidos por su complejidad. Aquí te menciono algunos de los más «complicados»: Haskell, C++, Ensamblador o Malbolge.

El lenguaje C

Pongamos C. El lenguaje C es un lenguaje compilado (mas complicado, o al menos un poco mas). Imperativo (fácil en teoría), con tipado débil y estático (se comprueba en la compilación).En principio te aseguro que C, es muy fácil de aprender. Pero tremendamente difícil de usar bien.

El motivo es que hay lenguajes fáciles de aprender, pero no tanto de implementar cosas en la práctica. Hay que dominar muchos detalles, que en el caso del C pasarían por librerías, como interactuar con hardware, acceso directo a memoria… es un lenguaje de bajo nivel que accede directamente al hardware en algunos casos, y eso lo hace complejo.

Y por cierto si hablamos de C++ aunque aunque C++ se basa en C ( digamos que es la versión orientada a objetos de C y por tanto mucho mas poderoso) , C++ puede ser aun mas difícil de dominar debido a su compleja sintaxis y la gestión manual de memoria:

  1. Sintaxis Compleja: C++ tiene una sintaxis más compleja debido a sus características avanzadas como la programación orientada a objetos, la sobrecarga de operadores y las plantillas.
  2. Gestión de Memoria: Aunque ambos lenguajes requieren gestión manual de memoria, C++ introduce conceptos adicionales como constructores, destructores y el uso de new y delete, lo que añade una capa extra de complejidad
  3. Características Avanzadas: C++ incluye muchas características avanzadas que no están presentes en C, como la herencia múltiple y las excepciones, lo que puede ser abrumador para los principiantes.

Por cierto Arduino se programa principalmente en C y C++. De hecho, el entorno de desarrollo integrado (IDE) de Arduino está diseñado específicamente para facilitar la escritura de código en estos lenguajes, adaptándolos a las necesidades de las placas Arduino.

2024 04 06 20 52 20 arduino   Buscar con Google y 5 páginas más   Personal  Microsoft​ Edge

Ensamblador

Digamos ensamblador. Este lenguaje de bajo nivel requiere un conocimiento profundo del hardware y es conocido por ser muy detallado y específico. Es un lenguaje muy simple, imperativo y… poco mas. No tiene tipos de datos y en algunos aspectos es extremadamente simple. Pero es realmente complicado de usar. Estás usando las instrucciones de la CPU directamente. Solo puedes trabajar en binario e incluso cosas que das por supuestas en otros lenguajes como muchas operaciones matemáticas, aquí se hacen codificándolas desde cero. Incluso, ni que decir que si quieres usar decimales, tendrás que tratarlos como bytes de datos.

Hace falta un extenso conocimiento de librerías, hardware y otras cosas complicaditas para usar ese lenguaje debidamente.

Ahora veremos lo opuesto, un lenguaje estructurado, tipado fuerte y… jodido o no.

programacion   Buscar con Google y 2 páginas más   Personal  Microsoft​ Edge

Java

Digamos Java o alguno similar. Lenguajes orientados totalmente al objeto. Tipado fuerte y con una cantidad de abstracción bastante elevada.

Aquí la cosa es «mas fácil» en algunos aspectos, y muy complicada en otros. Hay que aprender y no hablo de conocer la definición, sino saber como se usan montones de conceptos que son propios de este tipo de lenguajes.

Cosas como encapsulado, interfaces, objetos, métodos… conceptos abstractos que se usan en este tipo de programación y que si no tienes muy claro, te darán auténticos quebraderos de cabeza. Cosas que pueden hacer la construcción de grandes programas fácil, pero que hacen innecesariamente complicado el hacer cosas pequeñas. Mucha gente se frustra con esto, no digamos ya con el manejo de errores a base de excepciones que hay que tratar.

Es un lenguaje complejo de aprender, mas que nada por la cantidad de conceptos abstractos que son raros para el que no los usa, pero que son esenciales para este tipo de programación. Incluso su descripción suena rara.

Este tipo de abstracciones y herramientas, no aparecen en otros lenguajes que a veces se consideran «mas difíciles». Ojo con lo que quieres, puede que lo consigas.

javabuild

Mas rarezas de lenguajes Haskell.. Malbolge y muchos mas

Haskell

Este lenguaje basado en el cálculo lambda y en la teoría de tipos, funcional es famoso por su curva de aprendizaje empinada debido a su sintaxis abstracta y su enfoque en la inmutabilidad y las funciones de orden superior. Haskell se destaca por su capacidad para expresar ideas abstractas y su énfasis en la inmutabilidad y la programación declarativa.

Haskell es un lenguaje de programación funcional conocido por su sintaxis concisa y su enfoque en la declaración de qué debe hacerse en lugar de cómo hacerlo paso a paso. Aunque su curva de aprendizaje puede ser empinada debido a su sistema de tipos sofisticado y su paradigma funcional puro, ofrece grandes ventajas como código más confiable, conciso y elegante. Es ideal para aplicaciones que requieren un alto nivel de abstracción y precisión, como en el ámbito matemático y científico.

Los principales desafíos al aprender Haskell incluyen su sintaxis abstracta, la necesidad de un cambio de mentalidad para pensar en términos funcionales y la complejidad de su sistema de tipos. Sin embargo, con dedicación y los recursos adecuados, es posible dominar este lenguaje y aprovechar sus beneficios. La comunidad de Haskell es muy activa y dispuesta a ayudar a quienes están empezando.

Prolog

Prolog (Programming in Logic) es un lenguaje de programación lógica que resuelve problemas aplicando reglas lógicas. A diferencia de los lenguajes imperativos, Prolog se enfoca en la declaración de hechos y reglas, lo que permite expresar problemas de manera más natural. Los principales desafíos al aprender Prolog incluyen:

  • Cambio en la forma de pensar y resolver problemas.
  • Complejidad en el proceso de resolución de consultas.
  • Adaptación al paradigma de programación lógica.

Rust

Desarrollado por Mozilla Research, Rust es conocido por su seguridad y rendimiento. Su sistema de tipos estáticos y gestión de memoria sin errores lo hacen ideal para software de alto rendimiento y sistemas embebidos. Los desafíos de Rust incluyen:

  • Complejidad del sistema de tipos estáticos.
  • Enfoque riguroso en la seguridad que puede ralentizar el desarrollo.
  • Necesidad de aprender nuevas técnicas de programación.

Lisp

Lisp (List Processing) es uno de los lenguajes más antiguos y desafiantes. Ha influido en muchos lenguajes modernos como Clojure. Los desafíos de Lisp incluyen:

  • Sintaxis basada en paréntesis.
  • Enfoque en la programación funcional.

Brainfuck

Brainfuck, creado en 1993 por Urban Müller, es un lenguaje minimalista con solo ocho comandos. Es un verdadero desafío debido a su:

  • Sintaxis inusual y minimalista.
  • Falta de estructuras familiares.
  • Necesidad de codificar cada operación explícitamente.

Malbolge

Malbolge es un lenguaje esotérico diseñado para ser extremadamente difícil de programar. Sus desafíos incluyen:

  • Diseño oscuro y confuso.
  • Técnicas de programación altamente inusuales.

¿Muy bien ..pero cuál es el lenguaje de programación más fácil de aprender?

En mi opinión, los lenguajes mas sencillos son los interpretados, con tipado débil y paradigma imperativo. Si esto te suena a chino, a ver que expliquemos:

  • Interpretados son los lenguajes que escribes en un editor, y luego se ejecutan en un intérprete que va línea por línea ejecutando los comandos. Si hay un error, se detiene en la línea donde aparece ese error y te informa de ello.
  • Tipado débil quiere decir que las variables se declaran de manera simple, sin importar el tipo de dato que contengan.
  • Paradigma imperativo es el paradigma mas antiguo, se indica línea por línea lo que queremos que haga ese programa.

Ojo, un lenguaje puede tener esas características, y no ser fácil de dominar. Aquí deberíamos de aclarar un punto, y es que consideras fácil, y que consideras difícil. Aprender a usar un lenguaje como digamos Python, Basic.. es sencillo. Dominarlo no tanto.

  • Python es ampliamente considerado uno de los lenguajes «más fáciles de aprender» para principiantes. Su sintaxis es clara y concisa, similar al lenguaje natural, lo que facilita su comprensión. Además, cuenta con una gran comunidad y una amplia variedad de bibliotecas que lo hacen muy versátil.
  • JavaScript también es una excelente opción, especialmente si estás interesado en el desarrollo web. Aunque puede tener algunas particularidades, su popularidad y la gran cantidad de recursos disponibles hacen que sea un lenguaje muy accesible.
  • Ruby es otro lenguaje conocido por su sintaxis elegante y su enfoque en la productividad. Es una buena opción para aquellos que buscan un lenguaje que les permita escribir código de manera rápida y eficiente.

Otros lenguajes considerados fáciles para principiantes incluyen:

  • Visual Basic: Con un entorno de desarrollo visual intuitivo, es ideal para aquellos que se inician en la programación.
  • PHP: Ampliamente utilizado para el desarrollo web, es relativamente fácil de aprender y tiene una sintaxis similar a C.

¿Y cuales son los lenguajes de programación más utilizados?

El lenguaje de programación más utilizado varía según el contexto y el ámbito de aplicación. Sin embargo, algunos lenguajes destacan en diversas encuestas y rankings:

  1. JavaScript: Dominante en el desarrollo web frontend, es esencial para crear la parte interactiva de las páginas web. También se usa en el backend con frameworks como Node.js.
  2. Python: Con una sintaxis sencilla y legible, es ideal para una amplia gama de aplicaciones, incluyendo desarrollo web, ciencia de datos, machine learning e inteligencia artificial.
  3. Java: Un lenguaje robusto y versátil, ampliamente utilizado en aplicaciones empresariales, desarrollo de Android y sistemas embebidos.
  4. C#: Desarrollado por Microsoft, es popular para aplicaciones de escritorio, desarrollo de juegos (con Unity) y aplicaciones web con .NET.
  5. C++: Ofrece un gran control sobre el hardware, siendo utilizado en desarrollo de sistemas, videojuegos y aplicaciones de alto rendimiento.

Otros Lenguajes Populares

  • SQL: Específico para la gestión de bases de datos relacionales.
  • PHP: Muy utilizado en el desarrollo web backend.
  • Go: Desarrollado por Google, es eficiente y moderno, ideal para sistemas distribuidos y aplicaciones de red.
  • Swift: El principal lenguaje para desarrollar aplicaciones iOS y macOS.
  • R: Utilizado en análisis estadístico y visualización de datos.

Estos lenguajes son fundamentales en sus respectivos campos y ofrecen diversas ventajas según las necesidades del proyecto.

image 20
Quizás en resumen no sean tan importante elegir un lenguaje u otro según cual sea el mas usado o la dificultad o no de este sino mas bien a que se adapte a una tarea o problema especifico que necesitemos abordar…

¿Cual es mejor lenguaje de programación para aprender?


Hay muchas comunidades potenciales que podrían ser encuestadas para este análisis. aunque GitHub y Stack Overflow se utilizan en casi en casi todos los análisis que vamos  a ver  debido indudablemente a su voluntaria,   pero  también a su grandisma exposición pública de los datos necesarios para el análisis.

Asimismo, todas las clasificaciones numéricas deben tomarse con sumo cuidado, porque estas  pueden ser sustancialmente menos relevantes que la agrupación de  lenguajes de programación (en muchos casos, un lugar en la lista no es distinguible del siguiente).

De todos modos  la separación entre los niveles de lenguajes en la trama, sin embargo, es generalmente representativa de las diferencias sustanciales en la popularidad relativa.
Además, cuanto más abajo en los rankings un lenguaje  de programacion  va, menos datos hay disponibles para clasificar los lenguajes.

Más allá de los niveles superiores de lenguajes, dependiendo de la instantánea, la cantidad de datos a evaluar es mínima, y ​​la ubicación real de los lenguajes se vuelve menos confiable cuanto más adelante en la lista se avanza. De   todos modos  aunque  todos estas listas no puedan ser exactas al 100% ,estos rankings que vamos a ver son una buena referencia para entender como se están construyendo actualmente lo sistemas actuales ofreciéndonos una  idea  de cuales son las tecnologías preferidas

 

Ranking de PYPL

El índice de popularidad de PYPL se crea al analizar la frecuencia con la que se buscan los tutoriales de idiomas en Google.

Cuanto más se busca un tutorial de idioma, más popular se supone que es el lenguaje de   programacion , asi  que es un indicador adelantado dado que. ls datos brutos provienen de Google Trends.

Si cree en la sabiduría colectiva, el índice de Popularidad del Lenguaje de Programación de PYPL puede ayudarle a decidir qué lenguaje de programacion estudiar o cuál usar en un nuevo proyecto de software.

Lista mundial en  Abril de  2018 comparado   con datos un año  hacia atrás :

Rank Change Language Share Trend
1 Java 22.62 % -0.8 %
2 Python 22.05 % +5.2 %
3 Javascript 8.56 % +0.2 %
4 PHP 8.22 % -1.8 %
5 C# 7.95 % -0.7 %
6 C 6.38 % -1.1 %
7 R 4.26 % +0.4 %
8 Objective-C 3.7 % -1.0 %
9 Swift 2.92 % -0.6 %
10 Matlab 2.31 % -0.4 %
11 Ruby 1.7 % -0.4 %
12 TypeScript 1.58 % +0.5 %
13 VBA 1.39 % +0.0 %
14 Visual Basic 1.27 % -0.3 %

Ranking de GitHut

GitHut  asociado al famoso repositorio  de codigo  Github     también tiene su propio ranking

El ganador  sin duda  es   #1(26,5%)  Javascript  desarrollado  originalmente por Netscape en 2002.  A pesar de tener nombres similares, Javascript no está relacionado con Java como todos sabemo

JavaScript (abreviado como js) es un lenguaje de programación interpretado  orientado a objetos ​ basado en prototipos, imperativo, débilmente tipado y dinámico.

Se ha estado  usando  años a tras  principalmente en su forma del lado del cliente , implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas , pero  actualmente ha tomado mucha transcendencia , y de ahi  su posición en este ranking  debido a su facilidad de uso en el lado del servidor(Server-side JavaScript o SSJS)

A  partir de mediados de la década de los 2000, ha habido una proliferación de implementaciones de JavaScript para el lado servidor. Node.js es uno de los notables ejemplos de JavaScript en el lado del servidor, siendo usado en proyectos importantes

# Ranking

Programming Language

Percentage (Change)

Trend

1 JavaScript
22.947% (-2.606%)
2 Python
16.127% (+0.848%)
3 Java
9.960% (+0.001%)
4 Go
7.236% (+1.238%)
5 Ruby
6.732% (+0.237%)
6 C++
6.423% (+0.779%)
7 PHP
6.094% (-1.242%)
8 TypeScript
4.807% (+1.999%)
9 C#
3.375% (-0.647%)
10 C
2.890% (-0.442%)
11 Shell
2.327% (+0.146%)
12 Scala
1.406% (-0.011%)
13 Swift
1.168% (-0.025%)

githut.PNG

Ranking  de Stack Overflow

Stack Overflow es uno de los  sitios de preguntas y respuestas mas famosos   para programadores de todo el mundo .  Gracias a ello este  ranking  rastrea los lenguajes más populares en su encuesta anual para desarrolladores. Para el informe de 2018, Stack Overflow obtuvo respuestas de más de 100.000 desarrolladores, lo que lo convierte en un buen vistazo a las tecnologías más populares entre programadores.

Esto es lo que hay en la lista:

  • #1: Javascript: A pesar de tener nombres similares, Javascript no está relacionado con Java. Permite a los desarrolladores crear elementos interactivos en los sitios web, convirtiéndolo en uno de los lenguajes más omnipresentes de la web y el más popular del mundo.
  • #2: HTML: Aunque técnicamente no es un lenguaje de programación – es un «lenguaje de marcas» – HTML es la base para la estructura de cada sitio web.
  • #3: Cascading Style Sheets, o CSS: el lenguaje de programación más utilizado para diseñar sitios web y aplicaciones basadas en navegadores.
  • #4: SQL: Structured Query Language (Lenguaje de consulta estructurado). Permite tratar grandes cantidades de datos mediante el acceso y la gestión de bases de datos. La mayoría de las veces se usa en conjunción con otro lenguaje, como PHP.
  • #5: Java: Java fue inventado originalmente por Sun Microsystems en 1991 como lenguaje de programación para sistemas de televisión interactiva. Desde la compra de Sun, Oracle ha convertido a Java en una potencia. El lenguaje de programación es la forma más común de construir aplicaciones Android.
  • #6: Bash/Shell: Shell no es exactamente un lenguaje de programación. En su lugar, un script de shell instruye a un sistema operativo para que ejecute automáticamente una lista prediseñada de comandos. Por ejemplo, un script shell puede hacer que un sistema operativo convierta cada archivo «.bmp» en un «.jpg» siempre que se ejecute.
  • #7: Python: Python data de 1989 y es amado por sus fans por su código altamente legible. Muchos programadores creen que es el lenguaje más fácil de usar.
  • #8: C#: Este lenguaje, pronunciado «C-Sharp», fue desarrollado por Microsoft. Es un rival al aún más popular Java y ampliamente utilizado por los desarrolladores de software empresarial.
  • #9: PHP se utiliza para sitios web y aplicaciones que son pesados en datos. Incluso alimenta WordPress y Facebook. Pero muchos programadores odian PHP con pasión. «PHP no es tanto un lenguaje como una colección aleatoria de cosas arbitrarias, una explosión virtual en la fábrica de palabras clave y funciones», escribió Jeff Atwood, fundador de Stack Overflow.
  • #10: C++ es una rama del lenguaje de programación C. Fue creado originalmente en 1983, y se puede encontrar en todo, desde aplicaciones web de escritorio hasta infraestructura de servidores.
  • #11: C, uno de los lenguajes de programación más antiguos aún en uso común, fue creado a principios de la década de los 70. En 1978, el legendario manual del lenguaje, «The C Programming Language», fue publicado por primera vez.
  • #12: Typescript es relativamente joven según los estándares de lenguajes de programación. Lo creó Microsoft en 2012. Está estrechamente relacionado con el mega-popular JavaScript y diseñado para ejecutar grandes aplicaciones.
  • #13: Ruby ha ganado muchos elogios por ser fácil de leer y escribir. También es popular Rails, un framework complementario para Ruby que facilita la creación de aplicaciones web. El lema oficial de la lengua es «El mejor amigo de un programador».
  • #14: Swift fue lanzado por Apple 2014, promocionado como una mejor y más fácil manera de construir software. Swift se ha puesto de moda; Lyft, entre otros, lo utilizó para hacer su aplicación para iPhone.

Ranking de RedMonk

Redmonk   sigue un proceso básico similar  a los anteriores : extraen clasificaciones de idiomas de GitHub y Stack Overflow, y combinan  una clasificación que intente reflejar la tracción de código (GitHub) y discusión (desbordamiento de pila). La idea no es ofrecer una representación estadísticamente válida del uso actual, sino más bien correlacionar la discusión y el uso del lenguaje en un esfuerzo por extraer ideas sobre posibles tendencias futuras de adopción.

La fuente de datos utilizada para estas consultas es el archivo GitHub. Consultan lenguajes de  programación  por solicitud de extracción de una manera similar a la que usó GitHub para ensamblar el Estado del Octoverse 2016.

En el lado positivo, en este ranking  también eliminan  la queja más común con respecto a los rankings históricamente: que las mediciones por repositorio pueden sobreestimar la importancia de un lenguaje determinado(JavaScript, con mayor frecuencia).

Para ser incluido en este análisis, un lenguaje debe ser observable dentro de GitHub y Stack Overflow.

Con todas las consideraciones  aquí está la trama del primer trimestre para 2018.

https://i0.wp.com/sogrady-media.redmonk.com/sogrady/files/2018/03/lang.rank_.118.png

 

No se hacen afirmaciones aquí de que estos rankings sean representativos del uso general más amplia mente. No son nada más ni nada menos que un examen de la correlación entre dos poblaciones que creen que son predictivas del uso futuro, de ahí su valor.

 

Es difícil  dar un prevision a futuro del uso de cada lenguaje,pero desde luego lo que ya nadie duda es que Java va perdiendo cada vez mas protagonismo, protagonismo que va lentamente reemplazado por otros lenguajes como  Javascript  , Python  , Ruby  o C#