Abstract
Naturalistic programming is a topic of great interest because it allows reducing the gap between the problem domain and the solution domain in the software creation process. SN is a naturalistic language prototype that as a result returns Java bytecode, uses indirect references, allows a higher level of description to de ne procedures, defines nouns that optionally possess a plural form, adjectives that combine with nouns either during definition or instantiation and finally, the prototype presents a limited ability to describe circumstances. The objective of the present work is to apply a reverse engineering process to the SN compiler to know the details of the implementation, identify its characteristics, and document the elements of the language of which there is little or no record. Reverse engineering recovers information about the design of the language and its compiler, which facilitates the understanding of the language. This paper presents the results of the reverse engineering process applied to the SN language compiler. The results include the organization of the SN code by class diagrams and package diagrams; on the other hand, the compilation process of SN programs is detailed. Both results provide insight into the current state of SN and its operation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
The name SN is inspired by the Latin locution Sicut Naturali which means “as the natural”, but its creator says the correct name is SN.
- 2.
The SN language is focused on describing naturalistic expressions, so it requires a mechanism to de ne formalisms of a particular domain to work properly. The mechanism implemented to describe instructions of a specific domain is an embedded grammar.
- 3.
Plurals are expected to have attributes and verbs, but since their definition depends on the noun they represent, their elements are defined in the noun itself by prefixing the reserved word plural.
- 4.
A literal is a constant value consisting of a sequence of characters. Any statement in SN that defines a constant value - a value that does not change during program execution - is a literal.
References
Alducin-Francisco, L.M., Juarez-Martinez, U., Pelaez-Camarena, S.G., Rodriguez- Mazahua, L., Abud-Figueroa, M.A., Pulido-Prieto, O.: Perspectives for soft- ware development using the naturalistic languages. In: 2019 8th International Conference on Software Process Improvement (CIMPS), pp. 1–11 (2019). https://doi.org/10.1109/CIMPS49236.2019.9082428
Biermann, A.W., Ballard, B.W.: Toward natural language computation. Comput. Linguist. 6(2), 71–86 (1980)
Booch, G.: Object-Oriented Analysis and Design with Applications, 3rd edn. Addison Wesley Longman Publishing Co., Inc, USA (2004)
Knöll, R., Gasiunas, V., Mezini, M.: Naturalistic types. In: Proceedings of the 10th SIGPLAN Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, pp. 33–48 (2011)
Knöll, R., Mezini, M.: Pegasus: first steps toward a naturalistic programming language. In: Companion to the 21st ACM SIGPLAN Symposium on Object-Oriented Programming Systems, Languages, and Applications, pp. 542–559. OOPSLA 2006, Association for Computing Machinery, New York, NY, USA (2006). https://doi.org/10.1145/1176617.1176628, https://doi.org/10.1145/1176617.1176628
Liu, H., Lieberman, H.: Metafor: Visualizing stories as code. In: Proceedings of the 10th International Conference on Intelligent User Interfaces, pp. 305 307. IUI 2005, Association for Computing Machinery, New York, NY, USA (2005). https://doi.org/10.1145/1040830.1040908, https://doi.org/10.1145/1040830.1040908
Lopes, C.V., Dourish, P., Lorenz, D.H., Lieberherr, K.: Beyond aop: Toward naturalistic programming. SIGPLAN Not. 38(12), 34–43 (2003). https://doi.org/10.1145/966051.966058, https://doi.org/10.1145/966051.966058
Mefteh, M., Bouassida, N., Ben-Abdallah, H.: Towards naturalistic programming: Mapping language-independent requirements to constrained language specifications. Sci. Comput. Program. 166, 89–119 (05 2018). https://doi.org/10.1016/j.scico.2018.05.006
Presmman, R.: Ingeniería del Software un Enfoque Práctico. Mc. Graw Hill, Esta- dos Unidos de America (2010)
Pulido-Priedo, O.: Modelo conceptual para la implementación de lenguajes de programación naturalísticos de propósito general. PhD. thesis, Instituto Tecnológico de Orizaba (2019)
Pulido-Prieto, O., Ju rez-Martínez, U.: A survey of naturalistic programming technologies. ACM Comput. Surv. 50(5), 1–35 (2017). https://doi.org/10.1145/3109481, https://doi.org/10.1145/3109481
Pulido-Prieto, O., Juárez Martínez, U.: A model for naturalistic programming with implementation. Appl. Sci. 9, 3936 (2019). https://doi.org/10.3390/app9183936
Pulido Prieto, O., Ju rez Martínez, U.: Naturalistic programming: model and implementation. IEEE Latin Am. Trans. 18(07), 1230–1237 (2020). https://doi.org/10.1109/TLA.2020.9099764
Romero, J.A.J.: Desarrollo de software utilizando el lenguaje de programación naturalístico Cal-4700. PhD. thesis, Instituto Tecnológico de Orizaba (2022)
Sammet, J.E.: The use of English as a programming language. Commun. ACM 9(3), 228–230 (1966). https://doi.org/10.1145/365230.365274, https://doi.org/10.1145/365230.365274
Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press (2004)
Acknowledgments
This work is supported by Consejo Nacional de Ciencia y Tecnología (CONACyT).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
de Jesús González-Palafox, P., Juárez-Martinéz, U., Pulido-Prieto, O., Rodríguez-Mazahua, L., Abud-Figueroa, M.A. (2023). A Look Through the SN Compiler: Reverse Engineering Results. In: Mejia, J., Muñoz, M., Rocha, Á., Hernández-Nava, V. (eds) New Perspectives in Software Engineering. CIMPS 2022. Lecture Notes in Networks and Systems, vol 576. Springer, Cham. https://doi.org/10.1007/978-3-031-20322-0_4
Download citation
DOI: https://doi.org/10.1007/978-3-031-20322-0_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-20321-3
Online ISBN: 978-3-031-20322-0
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)