首页> 美国政府科技报告 >Coding Without Your Crystal Ball: Unanticipated Object-Oriented Reuse
【24h】

Coding Without Your Crystal Ball: Unanticipated Object-Oriented Reuse

机译:没有你的水晶球编码:意外的面向对象重用

获取原文

摘要

In many ways, existing languages place unrealistic expectations on library and framework designers, allowing some varieties of client reuse only if it is explicitly-- sometimes manually--supported. Instead, we should aim for the ideal: a language design that reduces the amount of prognostication that is required on the part of the original designers. In particular, I show that languages can and should support a combination of structural and nominal subtyping, external dispatch, and a form of multiple inheritance. Structural subtyping, which allows new types to be added to an existing hierarchy post-hoc, has been studied for decades, but a naive combination of structural subtyping and external dispatch poses serious typechecking issues. Instead, I present a novel combination of structural subtyping, nominal subtyping, and external dispatch--external dispatch allowing programmers to write new code that dynamically dispatches on an existing hierarchy. In its absence, programmers will often resort to writing manual dispatch code, which is tedious, error- prone, and lacks extensibility. External dispatch is also difficult to combine with another useful language feature--multiple inheritance. It so happens that any form of multiple inheritance (even Java-style) makes modular typechecking of external methods extremely difficult; this is due to the so-called 'diamond problem.' To sidestep these issues, I propose a novel form of multiple inheritance which does not allow diamonds, but recovers expressiveness through a generalized form of self-types. Finally, since languages with structural subtyping are used mainly in the research community, it had thus far remained unclear whether structural subtyping is actually useful in practice.

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号