Análisis del diseño de lenguajes de programación y su impacto en la calidad del software

Authors

DOI:

https://doi.org/10.63688/cognitivatech.v2.i1.22

Keywords:

lenguajes de programación, calidad del software, mantenibilidad, rendimiento.

Abstract

El presente estudio analiza los principios fundamentales en el diseño de lenguajes de programación y su impacto en la calidad del software, la mantenibilidad y el rendimiento, en el contexto de la ingeniería de software moderna. A través de un enfoque cualitativo de tipo descriptivo analítico, se realizó una revisión documental de literatura científica y técnica relevante, complementada con un análisis comparativo de distintos paradigmas de programación, incluyendo enfoques imperativos, orientados a objetos, funcionales y lógicos. Los resultados evidencian que la corrección del software constituye el eje prioritario en el diseño de lenguajes, promovida mediante sistemas de tipos robustos, verificación en tiempo de compilación y abstracciones expresivas que permiten reducir errores y mejorar la confiabilidad del código. Asimismo, se identificó que la mantenibilidad está fuertemente asociada a principios como la modularidad, el bajo acoplamiento, la alta cohesión y el encapsulamiento, los cuales facilitan la evolución del software y disminuyen los costos de mantenimiento. En cuanto al rendimiento, se observa una relación directa con el modelo de ejecución y las estrategias de compilación, destacando que los avances en optimización han permitido a lenguajes de alto nivel alcanzar desempeños competitivos sin sacrificar productividad. Adicionalmente, se evidencia una tendencia hacia lenguajes multiparadigma que integran diferentes enfoques para responder a la complejidad de los sistemas actuales. En conjunto, los hallazgos confirman la necesidad de equilibrar corrección, mantenibilidad y rendimiento como base para el desarrollo de software eficiente y confiable.

References

Alay, J. I. G., & Sevillano, R. P. C. (2022). Evolución de los sistemas de lenguaje de programación a lo largo de la historia. E-IDEA Journal of Engineering Science, 4(10), 14-26. https://revista.estudioidea.org/ojs/index.php/esci/article/view/237

Boehm, H. J., & Weiser, M. (1988). Garbage collection in an uncooperative environment. Software: Practice and Experience, 18(9), 807–820. https://doi.org/10.1002/spe.4380180902 DOI: https://doi.org/10.1002/spe.4380180902

Boehm, H. J., Demers, A. J., & Shenker, S. (1991). Mostly parallel garbage collection. In Proceedings of PLDI. https://doi.org/10.1145/113445.113449 DOI: https://doi.org/10.1145/113445.113459

Dobson, S., Nixon, P., Wade, V., Terzis, S., & Fuller, J. (2000). Vanilla: An open language framework. In Generative and Component-Based Software Engineering (pp. 91–104). Springer. https://doi.org/10.1007/3-540-40048-6_8 DOI: https://doi.org/10.1007/3-540-40048-6_8

Dijkstra, E. W. (1963). On the design of machine independent programming languages. Annual Review in Automatic Programming, 3, 27–42. https://doi.org/10.1016/S0066-4138(63)80003-8 DOI: https://doi.org/10.1016/S0066-4138(63)80003-8

Ghaleb, T. A., Aljasser, K., & Alturki, M. A. (2021). An extensible compiler for implementing software design patterns as concise language constructs. International Journal of Software Engineering and Knowledge Engineering, 31(7), 1043–1067. https://doi.org/10.1142/S0218194021500327 DOI: https://doi.org/10.1142/S0218194021500327

Golden, D. G. (1985). Software engineering considerations for the design of simulation languages. Simulation, 45(4), 173–180. https://doi.org/10.1177/003754978504500403 DOI: https://doi.org/10.1177/003754978504500403

Gunter, C., Mitchell, J., & Notkin, D. (1996). Strategic directions in software engineering and programming languages. ACM Computing Surveys, 28(4), 727–737. https://doi.org/10.1145/242223.242283 DOI: https://doi.org/10.1145/242223.242283

Hughes, J. (1989). Why functional programming matters. The Computer Journal, 32(2), 98–107. https://doi.org/10.1093/comjnl/32.2.98 DOI: https://doi.org/10.1093/comjnl/32.2.98

Lattner, C., & Adve, V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of CGO. https://doi.org/10.1109/CGO.2004.1281665 DOI: https://doi.org/10.1109/CGO.2004.1281665

Mauw, S., Wiersma, W. T., & Willemse, T. A. C. (2004). Language-driven system design. International Journal of Software Engineering and Knowledge Engineering, 14(6), 625–663. https://doi.org/10.1142/S0218194004001828 DOI: https://doi.org/10.1142/S0218194004001828

Mernik, M., Heering, J., & Sloane, A. M. (2005). When and how to develop domain-specific languages. ACM Computing Surveys, 37(4), 316–344. https://doi.org/10.1145/1118890.1118892 DOI: https://doi.org/10.1145/1118890.1118892

Mernik, M. (2005). Incremental programming language development. Computer Languages, Systems & Structures, 31(1), 1–16. https://doi.org/10.1016/j.cl.2004.02.001 DOI: https://doi.org/10.1016/j.cl.2004.02.001

Nanz, S., & Furia, C. A. (2015). A comparative study of programming languages in Rosetta Code. In Proceedings of ICSE. https://doi.org/10.1109/ICSE.2015.90 DOI: https://doi.org/10.1109/ICSE.2015.90

Parr, T. (2013). The definitive ANTLR 4 reference. Pragmatic Bookshelf. https://doi.org/10.5555/2501720

Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1053–1058. https://doi.org/10.1145/361598.361623 DOI: https://doi.org/10.1145/361598.361623

Ray, B., Posnett, D., Filkov, V., & Devanbu, P. (2014). A large-scale study of programming languages and code quality in GitHub. In Proceedings of FSE. https://doi.org/10.1145/2635868.2635922 DOI: https://doi.org/10.1145/2635868.2635922

Sterling, L., & Yalçinalp, Ü. (1996). Logic programming and software engineering: Implications for software design. The Knowledge Engineering Review, 11(4), 333–345. https://doi.org/10.1017/S026988890000802X DOI: https://doi.org/10.1017/S026988890000802X

Stevens, W. P., Myers, G. J., & Constantine, L. L. (1974). Structured design. IBM Systems Journal, 13(2), 115–139. https://doi.org/10.1147/sj.132.0115 DOI: https://doi.org/10.1147/sj.132.0115

Wadler, P. (1990). Linear types can change the world! In Programming Concepts and Methods. https://doi.org/10.1007/978-1-4471-3744-9_10

Wadler, P. (1997). How to declare an imperative. ACM Computing Surveys, 29(3), 240–263. https://doi.org/10.1145/262009.262011 DOI: https://doi.org/10.1145/262009.262011

Winsborough, W. (1992). Multiple specialization using minimal-function graph semantics. Journal of Logic Programming, 13(2–3), 259–290. https://doi.org/10.1016/0743-1066(92)90012-O DOI: https://doi.org/10.1016/0743-1066(92)90033-Y

Puebla, G., & Hermenegildo, M. (1995). Implementation of multiple specialization in logic programs. In PEPM. https://doi.org/10.1145/215465.215529 DOI: https://doi.org/10.1145/215465.215561

Naish, L., Schachte, P., & MacNally, A. (2016). Lightweight efficient safe polymorphic algebraic data types for C. Software: Practice and Experience, 46(12), 1685–1703. https://doi.org/10.1002/spe.2415 DOI: https://doi.org/10.1002/spe.2407

Hofmann, M. (2000). A type system for bounded space and functional in-place update. In Programming Languages and Systems. https://doi.org/10.1007/3-540-46425-5_11 DOI: https://doi.org/10.1007/3-540-46425-5_11

Gange, G., Navas, J. A., Schachte, P., Søndergaard, H., & Stuckey, P. J. (2015). Horn clauses as an intermediate representation for program analysis. Theory and Practice of Logic Programming, 15(4–5), 526–542. https://doi.org/10.1017/S1471068415000211 DOI: https://doi.org/10.1017/S1471068415000204

Gupta, G., Pontelli, E., & others. (2015). Language-based software engineering. Science of Computer Programming, 97, 37–40. https://doi.org/10.1016/j.scico.2014.02.010 DOI: https://doi.org/10.1016/j.scico.2014.02.010

Veloza Peñuela, I. A. (2023) Diseño de un prototipo de modelo con parámetros aplicables al aseguramiento de la calidad en el desarrollo de sistemas expertos como rama de la inteligencia artificial apoyado en arquitectura de tecnología de la información y de la solución. https://repository.unad.edu.co/handle/10596/55396

Published

2025-07-29

Issue

Section

Original

How to Cite

Análisis del diseño de lenguajes de programación y su impacto en la calidad del software. (2025). CognitivaTech: Ingeniería De Software Inteligente Y Sistemas Adaptativos, 2(1), 22. https://doi.org/10.63688/cognitivatech.v2.i1.22