...
首页> 外文期刊>Computer Science and Information Systems >Extending Programming Language to Support Object Orientation in Legacy Systems
【24h】

Extending Programming Language to Support Object Orientation in Legacy Systems

机译:扩展编程语言以支持旧式系统中的对象定向

获取原文
           

摘要

The contemporary software systems written in C face maintainability issues because of tight coupling. Introducing object orientation can address these problems by raising the abstraction to objects, thereby providing better programmability and understandability. However, compiling a C software with a C++ compiler is difficult because of the incompatibilities between C and C++. Some of the incompatibilities such as designated initializers are nontrivial in nature and hence are very difficult to handle by automation such as scripting or by manual efforts. Moreover, runtime support for features such as global constructors, exception handling, runtime type inference, etc. is also required in the target system. Clearly, the traditional procedural language compiler cannot provide these features. In this paper, we propose extending programming language such as C++ to support object orientation in legacy systems instead of completely redesigning them. With a case study of Linux kernel, we report major issues in providing the compile and runtime support for C++ in legacy systems, and provide a solution to these issues. Our approach paves the way for converting a large C based software into C++. The experiments demonstrate that the proposed extension saves significant manual efforts with very little change in the g++ compiler. In addition, the performance study considers other legacy systems written in C and shows that the overhead resulting from the modifications in the compiler is negligible in comparison to the functionality achieved.
机译:用C编写的现代软件系统由于紧密耦合而面临可维护性问题。引入面向对象可以通过提高对对象的抽象来解决这些问题,从而提供更好的可编程性和可理解性。但是,由于C和C ++之间的不兼容性,很难用C ++编译器编译C软件。某些不兼容功能(例如指定的初始化程序)本质上是不平凡的,因此很难通过自动化(例如脚本编写)或手动操作来处理。此外,在目标系统中还需要对功能(如全局构造函数,异常处理,运行时类型推断等)的运行时支持。显然,传统的过程语言编译器无法提供这些功能。在本文中,我们提出扩展诸如C ++之类的编程语言来支持传统系统中的面向对象,而不是完全重新设计它们。通过对Linux内核的案例研究,我们报告了在遗留系统中为C ++提供编译和运行时支持的主要问题,并提供了针对这些问题的解决方案。我们的方法为将大型基于C的软件转换为C ++铺平了道路。实验表明,所建议的扩展节省了大量的手动工作,而g ++编译器却几乎没有变化。此外,性能研究还考虑了其​​他用C编写的遗留系统,并表明与实现的功能相比,编译器中的修改所产生的开销可以忽略不计。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号