Welltype: Language elements for multiparadigm programming
Áron Baráth, Zoltán Porkoláb
DOI: http://dx.doi.org/10.15439/2017F546
Citation: Position Papers of the 2017 Federated Conference on Computer Science and Information Systems, M. Ganzha, L. Maciaszek, M. Paprzycki (eds). ACSIS, Vol. 12, pages 97–101 (2017)
Abstract. Modern programming languages try to provide a balance between flexibility to support rapid development and implementing as much validation on the program as possible to avoid expensive runtime errors. This trade-off is reflected in the language syntax, the type system and even in the method how the program produces the runtime binary. While the balance seems to be slightly moved today from safety to effectiveness, there is still a high demand for thoroughly checked, safe, but still effective programming languages. In this paper we introduce our experimental, imperative programming language, Welltype, which is designed to demonstrate that effective development can be accommodated with increased safety. Our language design decisions are based on current real-life problems and their solutions. We describe key features such as syntax improvement, fail-safe type system, and binary compatibility via dynamic linking.
References
- Baráth, Á., Porkoláb, Z.: Automatic Checking of the Usage of the C++ 11 Move Semantics. ACTA CYBERNETICA-SZEGED 22: pp. 5–20. (2015)
- Dietrich, J., Jezek, K., Brada, P.: Broken promises: An empirical study into evolution problems in java programs caused by library upgrades. Software Maintenance, Reengineering and Reverse Engineering (CSMR- WCRE), 2014 Software Evolution Week-IEEE Conference on. IEEE, (2014), https://doi.org/10.1109/CSMR-WCRE.2014.6747226
- Stroustrup, B.: C++ Core Guidelines https://github.com/isocpp/CppCoreGuidelines
- Cline, M. P., Lomow, G. and Girou, M.: C++ FAQs. Pearson Education (1998)
- Järvi, J., Freeman, J.: C++ lambda expressions and closures. Science of Computer Programming 75.9 (2010): 762-772. https://doi.org/10.1016/j.scico.2009.04.003
- Savga, I., Rudolf M., Goetz, S.: Comeback!: a refactoring-based tool for binary-compatible framework upgrade. Companion of the 30th international conference on Software engineering. ACM, (2008), https://doi.org/10.1145/1370175.1370198
- Baráth, Á., Porkoláb, Z.: Compile-time Unit Testing. 4th Workshop on Software Quality Analysis, Monitoring, Improvement, and Applications pp. 1–7. ISBN 978-961-248-485-9 (2015)
- Duffy, Edward B., Brian A. Malloy, and Stephen Schaub. Exploiting the Clang AST for analysis of C++ applications. Proceedings of the 52nd Annual ACM Southeast Conference. 2014.
- Alan A. A. Donovan, Brian W. Kernighan. The Go Programming Language. Addison-Wesley Professional, ISBN: 978-0134190440 (2015)
- Go Programming Language Specification. https://golang.org/ref/spec
- Baráth, Á., Porkoláb, Z.: Life without implicit casts: safe type system in C++. Proceedings of the 7th Balkan Conference on Informatics, ISBN 978-1-4503-3335-1 (2015), https://doi.org/10.1145/2801081.2801114
- Summerfield, M.: Programming in Python 3: a complete introduction to the Python language. Addison-Wesley Professional, ISBN 978-0321680563 (2010)
- Matsakis, Nicholas D., and Felix S. Klock II.: The rust language. ACM SIGAda Ada Letters. Vol. 34. No. 3. ACM, (2014) http://doi.org/10.1145/2692956.2663188
- Layka, V., and Pollak, D.: Scala Type System. In Beginning Scala (pp. 133-151). Apress. (2015)
- Kernighan, B. W., and Ritche, D. M.: The C programming language. Vol. 2. Englewood Cliffs: prentice-Hall (1988)
- Stroustrup, B. The C++ Programming Language, 4th Edition. Addison- Wesley (2013)
- Klimek, M.: The Clang AST – a Tutorial. http://llvm.org/devmtg/2013-04/klimek-slides.pdf (2013)
- TinyXML. http://www.grinninglizard.com/tinyxml2
- Baráth, Á., Porkoláb, Z.: Towards Safer Programming Language Constructs. Studia Univ. Babes-Bolyai Ser. Inf. LX:(1) 19-34 (2015)
- Vulnerability Summary for CVE-2014-1266. http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-1266.
- Welltype web page. http://baratharon.web.elte.hu/welltype/