Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Language Design: OOP or not OOP or better OOP

https://doi.org/10.15514/ISPRAS-2019-31(5)-6

Abstract

As part of the process of improving the application development ecosystem for various Huawei devices the company is working on a new programming language. The principal feature of the new language is the support of component-oriented programming (COP), by which we understand the possibility of assembling (an essential part) of the program from ready-made components. One of the steps in the direction of COP is, from our point of view, the right choice of OOP features. In the current work, we do not consider COP directly, focusing on the OO paradigm implementation. Currently, the situation with the OO paradigm is quite confusing. In fact, there is no consensus in the IT community on what OOP is. Suffice it to note that OOP in Go and Rust is fundamentally different from OOP in C++ and Java. Languages with object orientation based on classes and implementation inheritance (CLOP languages, where CLOP – Class-Oriented Porgramming) are criticized for the lack of flexibility and for the problems of developing reusable components. As component’s reusing is important for us, we propose OOP features that are non-CLOP and allows one to implement objects that can be extended (by adding methods) without the need to make changes to the source code of the object and with minimal recompilation of clients.

About the Author

Aleksei Nedoria
Huawei Russian Research Institute
Russian Federation
PhD of Physical and Mathematical Sciences


References

1. Szyperski С. Component Software: Beyond Object-Oriented Programming. Addison-Wesley Professional, 2002, 411 p.

2. The Go Programming Language Specification. Available at: https://golang.org/ref/spec, Version of July 31, 2019, accessed 09.10.2019.

3. Lukac L. Is Go an Object Oriented language? Avaliable at: https://medium.com/gophersland/gopher-vs-object-oriented-golang-4fa62b88c701, accessed 09.10.2019.

4. Klabnik S., Nichols C. The Rust Programming Language, Available at: https://doc.rust-lang.org/book/title-page.html, accessed 09.10.2019.

5. Klabnik S., Nichols C. Object Oriented Programming Features of Rust. Avaliable at: https://doc.rust-lang.org/book/ch17-00-oop.html, accessed 09.10.2019

6. Lua 5.3 Reference Manual. Avaliable at: https://www.lua.org/manual/5.3/, accessed 09.10.2019.

7. Lua. Object Orientation Tutorial. Avaliable at: http://lua-users.org/wiki/ObjectOrientationTutorial, accessed 09.10.2019.

8. EO, The programming language, Available at: https://github.com/yegor256/eo, accessed 09.10.2019.

9. Бугаенко Е. Элегантные объекты. Java Edition. Питер, Санкт-Петербург, 2019, 224 стр. / Bugaenko E. Elegant objects. Java Edition. Piter, St. Petersburg, 2019, 224 p.

10. Недоря А.Е. CLIP/CLOP vs pure OOP. / Nedoria A.E. CLIP/CLOP vs pure OOP. Avaliable at: http://xn--80aicaaxfgwmwf3q.xn--p1ai/?p=152, accessed 09.10.2019 (in Russian).

11. West D. Object Thinking. Microsoft Press, 2004, 368 p.

12. Suzdalnitski I. Object-Oriented Programming – The Trillion Dollar Disaster. Avaliable at: https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7, accessed 09.10.2019.

13. Scalfani C. Goodbye, Object Oriented Programming. Avaliable at: https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53, accessed 09.10.2019.

14. Armstrong J. Why OO Sucks. Avaliable at: http://harmful.cat-v.org/software/OO_programming/why_oo_sucks, accessed 09.10.2019.

15. Will B. Object-Oriented Programming is Bad. Avaliable at: https://www.youtube.com/watch?v=QM1iUe6IofM, accessed 09.10.2019.

16. Church M. Was object-oriented programming a failure? Avaliable at: https://www.quora.com/Was-object-oriented-programming-a-failure/answer/Michael-O-Church?ch=10&share=cb6efe55&srid=XoXvj, accessed 09.10.2019.

17. Недоря А.Е. Триада языков программирования. / Nedoria A.E. The triad of programming languages. Avaliable at: http://xn--80aicaaxfgwmwf3q.xn--p1ai/?p=298, published 20.09.2018, accessed 09.10.2019 (in Russian).

18. Недоря А.Е. Технология разработки мультиплатформенных программ на основе явных схем программ. / Nedoria A.E. Technology for developing multi-platform programs based on explicit program schemes Available at: http://digital-economy.ru/stati/tekhnologiya-razrabotki-multiplatformennykh-programm-na-osnove-yavnykh-skhem-programm, published 04.05.2018, accessed 09.10.2019 (in Russian).

19. Недоря А.Е. Компонентный ассемблер для цифрового пространства. / Nedoria A.E. Component Assembler for Digital Space. Available at: http://digital-economy.ru/stati/komponentnyj-assembler-dlya-tsifrovogo-prostranstva, published 05.12.2018, accessed 09.10.2019 (in Russian).

20. Недоря А.Е. Компонентный ассемблер. Часть 2. Дух языка. / Nedoria A.E. Component assembler. Part 2. The spirit of language. Available at: http://digital-economy.ru/stati/komponentnyj-assembler-chast-2-dukh-yazyka, published 18.01.2019, accessed 09.10.2019 (in Russian).

21. Недоря А.Е. Ворчалки о программировании. / Nedoria A.E. Gruntings about programming. Available at: http://алексейнедоря.рф, accessed 09.10.2019 (in Russian).

22.


Review

For citations:


Nedoria A. Language Design: OOP or not OOP or better OOP. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2019;31(5):89-94. (In Russ.) https://doi.org/10.15514/ISPRAS-2019-31(5)-6



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)