Bad engineering properties of object-orient languages

  title={Bad engineering properties of object-orient languages},
  author={Luca Cardelli},
  journal={ACM Comput. Surv.},
  • L. Cardelli
  • Published 1996
  • Computer Science
  • ACM Comput. Surv.
The object-oriented paradigm emerged in the 60Os, roughly during the time that important notions such as data abstraction, polymorphism, and modularization were applied to the procedural paradigm. Eventually, object-oriented languages also acquired notions of data abstraction, polymorphism, and modularization, but not quite in the same way, and not quite as effectively. In the last decade, object-oriented languages have been widely adopted as engineering tools because of their superiority with… Expand
Should ML be Object-Oriented?
It is argued that while some of the simpler aspects of object-oriented languages are compatible with ML, adding a full- edged class-based object system to ML leads to an excessively complex type system and relatively little expressive gain, especially if the authors aim to preserve that mostly functional style of programming that is a major advantage of ML. Expand
Formal Aspects of Computing Should ML be Object-Oriented ?
At a fundamental level, functional and object-oriented programming languages are all ‘higherorder’, in the sense that they support computing with values that are themselves pieces of program codeExpand
Mool: an object-oriented programming language with generics and modules
MOOL is a class-based object-oriented language that supports modular programming and genericity, and contains separated mechanisms for different concepts like classes and modules, which are unified in other languages. Expand
Improving Object Oriented Software Contracts
A new software contract tool, PACT, is developed which will help increase the use of software contracts and is described in detail the formal semantics and typing of PACT and a first implementation of the tool is developed. Expand
Specification-Based Unit Testing
This MSc Thesis explores different alternatives for creating test cases in a more intelligent manner, but still very efficiently, so that the probability of finding bugs becomes higher in practice. Expand
Subclassing errors, OOP, and practically checkable rules to prevent them
A set of mechanically verifiable rules are introduced that prevent subtle errors leading to subtle errors that break separation of interface and implementations in Object-Oriented Programming. Expand
factory Chain of responsibility Adapter Builder Command Bridge Factory method Interpreter Composite Prototype Iterator Decorator Singleton Mediator Facade Memento Flyweight Observer Proxy StateExpand
Experiences from placing Stack Overflow at the core of an intermediate programming course
The redesign of an intermediate Computer Programming course taught at the University of Vigo is discussed, seeking to promote question‐and‐answer websites for programmers as the main source of reference for the students, and turning the teacher into a permanent observer who delivers pertinent advice. Expand
Software Component Reusability Classification in Functional Paradigm
  • Devesh Manjhi, Amrita Chaturvedi
  • Computer Science
  • 2019 IEEE International Conference on Electrical, Computer and Communication Technologies (ICECCT)
  • 2019
The Self-Organizing Map algorithm is used to cluster the functions from three Haskell packages into three different classes of reusability, based on metrics threshold and their average values. Expand
Rupiah: Towards an Expressive Static Type System for Java
Specific topics include bidirectional languages, domain-specific languages, data synchronization, updatable views, view maintenance, security views, information-flow, confidentiality, integrity, provenance, XML, regular types, dependent types, hybrid type checking, logic, formal methods, mechanized proof, model transformations, software engineering. Expand


C++ Programming Language
Bjarne Stroustrup makes C even more accessible to those new to the language, while adding advanced information and techniques that even expert C programmers will find invaluable. Expand
The Java Language Specification
The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language. Expand
Smalltalk-80: The Language and Its Implementation
This book is the first detailed account of the Smalltalk-80 system and is divided into four major parts: an overview of the concepts and syntax of the programming language, a specification of the system's functionality, and an example of the design and implementation of a moderate-size application. Expand
Pizza into Java: translating theory into practice
Pizza is a strict superset of Java that incorporates three ideas from the academic community: parametric polymorphism, higher-order functions, and algebraic data types. Pizza is defined byExpand
OO Type Theory web page
  • OO Type Theory web page
  • 1996
The language and its implementation
  • 1983