¿Por qué hay tantos lenguajes de programación?



Programación de computadoras

Existen más de 250 lenguajes de programación. Algunos son ampliamente utilizados en el mundo empresarial, como C++ , Java , JavaScript , Rubí y Python. Otros son principalmente académicos, como Ceceo . Sin embargo, otros son oscuros y esotéricos. Es posible que se pregunte '¿por qué hay tantos lenguajes de programación?'



Eso es muy parecido a preguntar '¿Por qué hay tantos campos de las matemáticas? Tenemos álgebra. ¿Por qué necesitamos geometría, cálculo y mecánica de fluidos? Cada lenguaje de programación tiene como objetivo resolver un problema en particular. Más de un idioma podría resolver el mismo problema, pero cada uno lo abordará de manera diferente.

Estas son algunas de las principales diferencias en los lenguajes de programación.



Legibilidad y mantenibilidad

Algunos lenguajes son más fáciles de leer para un ser humano, lo que facilita que un programador colabore en el de otro programador. código . Python, por ejemplo, tiene la reputación de ser fácil de leer. Hace cumplir una sangría estricta de las líneas para definir su bloques de código , lo que facilita la visualización de un programa y su estructura. Otros idiomas también permiten la sangría, pero como una elección de estilo, no como un requisito.

A diferencia de, Perl es un lenguaje que permite al programador escribir el mismo programa de muchas formas diferentes. Aún así, es posible que el propósito del programa no quede claro de inmediato para otro lector. Tal programa puede ser conveniente de escribir, pero difícil de entender y editar para otra persona.



Actuación

Algunos idiomas son interpretado , y algunos son compilado . Un programa compilado debe ser procesado por un preprocesador, compilador y vinculador antes de que pueda ser ejecutado por la computadora. Este software intermedio especializado realiza análisis léxico, traduciendo el programa a Lenguaje de máquina . También puede optimizar el resultado instrucciones , buscando formas inteligentes de hacer que el programa se ejecute más rápido.

Los programas compilados suelen funcionar mejor que los programas interpretados. Por ejemplo, C , C ++ y Objective-C son lenguajes que se compilan en código de máquina muy rápido. Videojuegos y el software del sistema a menudo están escritos en estos lenguajes, para exprimir cada bit de rendimiento de la UPC .

Por otro lado, los programas en lenguaje interpretado son ejecutados por un software llamado intérprete, que ejecuta las instrucciones del programa sin compilarlas primero en código máquina. Aunque el intérprete a veces analiza el programa a un lenguaje intermedio, lo que resulta en alguna optimización, el rendimiento nunca es tan rápido como el código de máquina compilado.

Uno de los principales beneficios de los idiomas interpretados es su potencial para el desarrollo interactivo. Debido a que no es necesario compilar todo el programa antes de que se pueda ejecutar, el código se puede ejecutar de forma interactiva. Está familiarizado con esto si alguna vez ha utilizado el sistema operativo línea de comando : ingresa un comando y ve los resultados. Tal interfaz se llama REPL, o 'read-eval-print-loop'. Un REPL le permite ejecutar comandos (o bloques de comandos) individualmente y ver los resultados. Lisp, Perl, Python, NodeJS, Ruby y JavaScript son ejemplos de lenguajes interpretados que pueden ejecutarse en un REPL.

Interfaces de comando interactivas, como el símbolo del sistema de Windows y intento , también califican como idiomas interpretados. Los programas en estos 'lenguajes' se denominan archivos por lotes o shell guiones .

Casos de uso específicos

A menudo, los idiomas son especialmente buenos para escribir tipos específicos de programas. Por ejemplo, NodeJS está diseñado para escribir un solo roscado aplicaciones para la web. Su archivo no bloqueante E / S permite que los programas continúen funcionando ('no ser bloqueados') mientras esperan que se transmitan los datos requeridos.

Otro ejemplo es el Lenguaje de programación R , que se especializa en análisis estadístico. Los programas escritos en R se benefician de pruebas y modelos analíticos incorporados, y herramientas para manipular de manera eficiente cantidades masivas de datos .

Facilidad de creación de prototipos

Algunos lenguajes permiten la creación rápida de prototipos: el programador puede 'empezar a escribir' y construir componente tras componente hasta que el programa esté completamente formado.

Por ejemplo, el sitio web Reddit fue escrito originalmente en Lisp. Después del lanzamiento de Reddit, todo el sitio se reescribió en Python por muchas razones, tanto técnicas como logísticas. Aunque refactorizar todo el código fue una empresa importante, los propietarios del sitio no se arrepintieron. en un Entrada de blog de 2005 , comentaron que Lisp les permitió crear algo sin saber exactamente en qué se convertiría.

Bibliotecas disponibles

Por lo general, cuando comienza un nuevo proyecto de programación, no desea reinventar la rueda. Es decir, no quieres escribir funciones para tareas comunes como calcular una raíz cuadrada o encontrar la primera aparición de un carácter en un cuerda . Por esta razón, casi todos los lenguajes de programación proporcionan un conjunto de bibliotecas estándar de funciones comunes. Los programadores pueden preferir un lenguaje debido a las bibliotecas que proporciona.

Por ejemplo, las bibliotecas estándar de C proporcionan funciones de alto rendimiento para muchos nivel bajo operaciones del sistema. Perl proporciona muchas bibliotecas robustas, y también el repositorio CPAN de módulos para ser descargado y utilizado en su programa. Python proporciona una amplia gama de funciones y módulos integrados para casi todo lo que hay bajo el sol. Clojure, un lenguaje similar a Lisp que se ejecuta en la JVM, se beneficia de su capacidad para ejecutar código desde las extensas bibliotecas existentes de Java. objetos y métodos .

Seguridad

No todos los lenguajes se prestan para escribir código seguro. El lenguaje de programación C, por ejemplo, es conocido por tener características (o falta de ellas) que conducen a vulnerabilidades devastadoras como puntero nulo desreferenciar . Otros idiomas intentan abordar estas preocupaciones con reglas más estrictas.

Por ejemplo, algunos idiomas imponen restricciones sobre las operaciones que se pueden realizar en varios tipos de datos . Los más estrictos de estos lenguajes a veces se denominan 'fuertemente tipados' y pueden ofrecer tranquilidad a los programadores que priorizan la seguridad y la estabilidad en el desarrollo de software. Ejemplos de lenguajes fuertemente tipados incluyen Rust, Nim, Ocaml y Haskell.

Los lenguajes también pueden poner límites a la 'mutabilidad', la capacidad de un objeto de datos para cambiar de estado. En lugar de objetos cuyos valores se sobrescriben, estos lenguajes favorecen los objetos 'inmutables': valores en la memoria que no se pueden cambiar sin una excepción explícita. Los objetos inmutables han atraído interés a medida que las CPU de varios núcleos se han generalizado, debido a su tendencia a promover la 'seguridad de los subprocesos'. En un programa seguro para subprocesos, más de un procesador puede operar en un conjunto de datos con un riesgo de error muy reducido. Los lenguajes que priorizan los objetos inmutables incluyen Rust y Clojure.

Soporte comunitario

Al programar en un nuevo lenguaje, ayuda a acceder a una comunidad activa y apasionada de desarrolladores que utilizan activamente y contribuyen al trabajo de los demás. Antes de elegir un lenguaje de programación, obtenga más información sobre la comunidad de ese lenguaje. Algunos idiomas tienen una base de usuarios interesante, dinámica y vibrante de la que es posible que desee formar parte y otros idiomas pueden tener poca o ninguna comunidad.

Expresividad

Al escribir un programa, los pensamientos y la capacidad de resolución de problemas del programador 'hablan' a través de ese idioma. Como resultado, los programadores tienden a preferir lenguajes en los que se sienten cómodos al expresarse. Sin embargo, es difícil definir qué hace que un lenguaje y un programador funcionen bien juntos. En última instancia, la única forma de saber con qué idioma se siente cómodo es usar diferentes idiomas para diferentes proyectos y compararlos usted mismo.