Skip to main content

A Look Through the SN Compiler: Reverse Engineering Results

  • Conference paper
  • First Online:
New Perspectives in Software Engineering (CIMPS 2022)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 189.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 249.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 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. 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. 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

  1. 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

  2. Biermann, A.W., Ballard, B.W.: Toward natural language computation. Comput. Linguist. 6(2), 71–86 (1980)

    Google Scholar 

  3. Booch, G.: Object-Oriented Analysis and Design with Applications, 3rd edn. Addison Wesley Longman Publishing Co., Inc, USA (2004)

    MATH  Google Scholar 

  4. 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)

    Google Scholar 

  5. 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

  6. 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

  7. 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

  8. 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

  9. Presmman, R.: Ingeniería del Software un Enfoque Práctico. Mc. Graw Hill, Esta- dos Unidos de America (2010)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. 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

  12. 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

  13. 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

  14. 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)

    Google Scholar 

  15. 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

  16. Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press (2004)

    Google Scholar 

Download references

Acknowledgments

This work is supported by Consejo Nacional de Ciencia y Tecnología (CONACyT).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Pedro de Jesús González-Palafox .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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

Publish with us

Policies and ethics