stringtranslate.com

Lenguaje de programación de propósito general

En el campo del software informático , un lenguaje de programación de propósito general ( GPL ) es un lenguaje de programación para crear software en una amplia variedad de dominios de aplicación . Por el contrario, un lenguaje de programación de dominio específico (DSL) se utiliza dentro de un área específica. Por ejemplo, Python es un GPL, mientras que SQL es un DSL para consultar bases de datos relacionales .

Historia

Los primeros lenguajes de programación fueron diseñados para computación científica (cálculos numéricos) o procesamiento de datos comerciales, al igual que el hardware de las computadoras. Los lenguajes científicos como Fortran y Algol admitían cálculos de punto flotante y matrices multidimensionales, mientras que los lenguajes comerciales como COBOL admitían formatos de archivo de campo fijo y registros de datos . Mucho menos utilizados fueron los lenguajes especializados como IPL-V y LISP para el procesamiento de listas simbólicas ; COMIT para la manipulación de cadenas; APT para máquinas controladas numéricamente . La programación de sistemas que requería manipulación de punteros se hacía típicamente en lenguaje ensamblador , aunque JOVIAL se utilizó para algunas aplicaciones militares. [1]

El System/360 de IBM , anunciado en 1964, fue diseñado como una arquitectura de hardware unificada que admitía aplicaciones científicas y comerciales, e IBM desarrolló PL/I para él como un lenguaje único de propósito general que admitía programación científica, comercial y de sistemas. De hecho, un subconjunto de PL/I se utilizó como lenguaje de programación de sistemas estándar para el sistema operativo Multics .

Desde PL/I, la distinción entre lenguajes de programación científicos y comerciales ha disminuido; la mayoría de los lenguajes admiten las características básicas requeridas por ambos y gran parte del manejo de formatos de archivos especiales se delega a sistemas de gestión de bases de datos especializados .

También se desarrollaron muchos lenguajes especializados a partir de la década de 1960: GPSS y Simula para simulación de eventos discretos; MAD , BASIC , Logo y Pascal para enseñar programación; C para programación de sistemas; JOSS y APL\360 para programación interactiva. [1]

GPL frente a DSL

La distinción entre lenguajes de programación de propósito general y lenguajes de programación de dominio específico no siempre es clara. [2] Un lenguaje de programación puede ser creado para una tarea específica, pero utilizado más allá de ese dominio original y por lo tanto ser considerado un lenguaje de programación de propósito general. Por ejemplo, COBOL , Fortran y Lisp fueron creados como DSL (para procesamiento de negocios, cálculo numérico y procesamiento simbólico), pero se convirtieron en GPL con el tiempo. [ dudosodiscutir ] Inversamente, un lenguaje puede ser diseñado para uso general pero solo aplicado en un área específica en la práctica. [3] Un lenguaje de programación que es adecuado para un problema, ya sea un lenguaje de propósito general o DSL, debe minimizar el nivel de detalle requerido mientras sigue siendo lo suficientemente expresivo en el dominio del problema. [4] Como sugiere el nombre, el lenguaje de propósito general es "general" en el sentido de que no puede proporcionar soporte para la notación específica del dominio mientras que los DSL pueden diseñarse en diversos dominios de problemas para manejar este problema. [4] Los lenguajes de propósito general se prefieren a los DSL cuando un dominio de aplicación no se entiende lo suficientemente bien como para justificar su propio lenguaje. En este caso, se puede utilizar un lenguaje de propósito general con una biblioteca apropiada de tipos de datos y funciones para el dominio. [5] Si bien los DSL suelen ser más pequeños que la GPL en el sentido de que ofrecen una gama más pequeña de notaciones de abstracciones, algunos DSL en realidad contienen una GPL completa como sublenguaje. En estos casos, los DSL pueden ofrecer poder expresivo específico del dominio junto con el poder expresivo de la GPL. [6]

Los lenguajes de programación de propósito general son todos Turing completos , lo que significa que teóricamente pueden resolver cualquier problema computacional. Los lenguajes de dominio específico suelen ser Turing completos de manera similar, pero no lo son exclusivamente.

Ventajas y desventajas

Los lenguajes de programación de propósito general son los más utilizados por los programadores. Según un estudio, C , Python y Java fueron los lenguajes de programación más utilizados en 2021. [7]  Un argumento a favor del uso de lenguajes de programación de propósito general en lugar de lenguajes de dominio específico es que más personas estarán familiarizadas con estos lenguajes, lo que superará la necesidad de aprender un nuevo lenguaje.

Además, para muchas tareas (por ejemplo, análisis estadístico, aprendizaje automático, etc.) existen bibliotecas que han sido ampliamente probadas y optimizadas. En teoría, la presencia de estas bibliotecas debería salvar la brecha entre los lenguajes de propósito general y los de dominio específico. [4]

Un estudio empírico de 2010 intentó medir la resolución de problemas y la productividad entre las licencias GPL y DSL, planteando problemas a usuarios que estaban familiarizados con la licencia GPL ( C# ) y no con la licencia DSL ( XAML ). En definitiva, los usuarios de este lenguaje específico de dominio obtuvieron mejores resultados en un factor del 15%, a pesar de que estaban más familiarizados con la licencia GPL, lo que justifica una mayor investigación. [4]


Ejemplos

do

El predecesor de C , B , fue desarrollado en gran medida para un propósito específico: la programación de sistemas . [8] Por el contrario, C ha encontrado uso en una variedad de dominios computacionales, como sistemas operativos , controladores de dispositivos , software de aplicación y sistemas integrados .

El lenguaje C es adecuado para su uso en diversas áreas debido a su generalidad. Proporciona economía de expresión, control de flujo, estructuras de datos y un amplio conjunto de operadores, pero no obliga a sus usuarios a utilizarlo en un único contexto. [9] Como resultado, aunque sus creadores lo utilizaron por primera vez para reescribir el núcleo del sistema operativo Unix , [10] se adaptó fácilmente para su uso en el desarrollo de aplicaciones, sistemas integrados (por ejemplo, programación de microprocesadores), videojuegos (por ejemplo, Doom ), etc. Hoy en día, C sigue siendo uno de los lenguajes de programación más populares y utilizados. [11]

C++

Concebido como una extensión de C, C++ introdujo características orientadas a objetos , así como otras ventajas como referencias, sobrecarga de operadores y argumentos predeterminados. Al igual que C, la generalidad de C++ permitió que se lo utilizara en una amplia gama de áreas. Si bien el área de aplicación principal de C++ es la programación de sistemas (debido a la capacidad de C++ de otorgar acceso a la arquitectura de bajo nivel), [12] se ha utilizado ampliamente para crear aplicaciones de escritorio, videojuegos, bases de datos, sistemas financieros y mucho más. [13] Las principales empresas de software y finanzas, como Microsoft , Apple , Bloomberg y Morgan Stanley , todavía utilizan ampliamente C++ en sus aplicaciones internas y externas. [13]

Pitón

Python fue concebido como un lenguaje que enfatizaba la legibilidad y extensibilidad del código. [14] [15] El primero permitió que los ingenieros no especializados en software aprendieran y escribieran programas informáticos fácilmente, mientras que el segundo permitió que los especialistas en el dominio crearan fácilmente bibliotecas adaptadas a sus propios casos de uso. Por estas razones, Python se ha utilizado en una amplia gama de dominios.

A continuación se presentan algunas de las áreas donde se utiliza Python: [16]

Lista

Los siguientes son algunos lenguajes de programación de propósito general:

Véase también

Referencias

  1. ^ de Jean E. Sammet, "Lenguajes de programación: historia y futuro", Communications of the ACM 15 :7:601-610 (julio de 1972) doi :10.1145/361454.361485
  2. ^ van Deursen, Arie; Klint, Pablo; Visser, Joost (2000). "Idiomas de dominio específico: una bibliografía comentada". Avisos ACM SIGPLAN . 35 (6): 26–36. CiteSeerX 10.1.1.33.8207 . doi :10.1145/352029.352035. 
  3. ^ Berry, Gerard (mayo de 2006). "Programación en tiempo real: lenguajes de propósito especial o de propósito general". HAL Open Science .
  4. ^ abcd Kosar, Tomaz (mayo de 2010). "Comparación de lenguajes de propósito general y de dominio específico: un estudio empírico" (PDF) . Ciencias de la computación y sistemas de información . 7 (2): 247–264. doi :10.2298/CSIS1002247K.
  5. ^ van Deursen, Arie (diciembre de 1998). "Pequeños lenguajes: ¿poco mantenimiento?". Journal of Software Maintenance: Research and Practice . 10 (2): 75–92. doi :10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5.
  6. ^ van Deursen, Arie; Klint, Paul; Visser, Joost (junio de 2000). "Lenguajes específicos de dominio: una bibliografía anotada". Avisos SIGPLAN de la ACM . 35 (6): 26–36. doi : 10.1145/352029.352035 . ISSN  0362-1340. S2CID  1049872.
  7. ^ "Los lenguajes de programación más populares - 1965/2021 - Nueva actualización - Estadísticas y datos". statisticsanddata.org . Consultado el 3 de junio de 2022 .
  8. ^ Thompson, K. (7 de enero de 1972). "Portada del memorando técnico" (PDF) . Bell Telephone Laboratories . Archivado (PDF) desde el original el 11 de junio de 2015. Consultado el 3 de junio de 2022 .
  9. ^ W., Kernighan, Brian (2016). El lenguaje de programación C. Prentice Hall. ISBN 978-0-13-110370-2.OCLC 1004153413  .{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  10. ^ Ritchie, Dennis (abril de 1993). "El desarrollo del lenguaje C" (PDF) . ACM SIGPLAN Notices . 28 (3): 201–208. doi :10.1145/155360.155580.
  11. ^ "Índice TIOBE". TIOBE . Consultado el 3 de junio de 2022 .
  12. ^ Stroustrup, Bjarne (1995). El lenguaje de programación C++ . Addison-Wesley.
  13. ^ ab "Aplicaciones C++". www.stroustrup.com . Consultado el 3 de junio de 2022 .
  14. ^ "artima - La creación de Python". www.artima.com . Consultado el 3 de junio de 2022 .
  15. ^ "Preguntas frecuentes generales sobre Python: documentación de Python 3.10.4". docs.python.org . Consultado el 3 de junio de 2022 .
  16. ^ "Aplicaciones para Python". Python.org . Consultado el 3 de junio de 2022 .
  17. ^ "Popularidad de los lenguajes de programación en 12.086 artículos de investigación: cuantificación de la salud" . Consultado el 3 de junio de 2022 .
  18. ^ Pedregosa, Fabian (2011). "Scikit-learn: aprendizaje automático en Python" (PDF) . The Journal of Machine Learning Research . 12 : 2825–2830. arXiv : 1201.0490 . Código Bibliográfico :2011JMLR...12.2825P.