The CORBA C++ Mapping: Beyond Repair? MARS 2007 -03-14 Douglas C. Schmidt Vanderbilt University Institute for Software Integrated Systems CORBA IN THE.

Slides:



Advertisements
Similar presentations
Quick Sort, Shell Sort, Counting Sort, Radix Sort AND Bucket Sort
Advertisements

15 May, 2015 CORBA Object-by-Value An overview of the value type and its IDL-to-C++ mapping. George Edwards Institute for Software-Integrated Systems Vanderbilt.
1 Design and Integration: Part 1. 2 What’s a metaphor? Ward Cunningham cites George Lakoff’s book, Metaphors We Live By: Lakoff argues that the assumptions.
Data Analytics and Dynamic Languages Lee E. Edlefsen, Ph.D. VP of Engineering 1.
1 Storage Registers vs. memory Access to registers is much faster than access to memory Goal: store as much data as possible in registers Limitations/considerations:
Honors Compilers Addressing of Local Variables Mar 19 th, 2002.
Reasons to study concepts of PL
Hash Tables1 Part E Hash Tables  
Hash Tables1 Part E Hash Tables  
1 New Architectures Need New Languages A triumph of optimism over experience! Ian Watson 3 rd July 2009.
Computer Science II Exam I Review Monday, February 6, 2006.
Introduction to Classes and Objects CS-2303, C-Term Introduction to Classes and Objects CS-2303 System Programming Concepts (Slides include materials.
Mining Large Software Compilations over Time Another Perspective on Software Evolution: Gregorio Robles, Jesus M. Gonzalez-Barahona, Martin Michlmayr,
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Chocolate Bar! luqili. Milestone 3 Speed 11% of final mark 7%: path quality and speed –Some cleverness required for full marks –Implement some A* techniques.
Computing Science 1P Large Group Tutorial 17 Simon Gay Department of Computing Science University of Glasgow 2006/07.
CS3100 Software Project Management Week 26 - Quality Dr Tracy Hall.
Genetic Algorithms CS121 Spring 2009 Richard Frankel Stanford University 1.
S556 SYSTEMS ANALYSIS & DESIGN Week 12. Selecting Alternatives SLIS S556 2  Provide clients with some alternatives:  Long-term vs. short-term  Expensive.
Software Refactoring Part I: Introduction Bartosz Walter Advanced Object-Oriented Design Lecture 5.
PAPER PRESENTATION: EMPIRICAL ASSESSMENT OF MDE IN INDUSTRY Erik Wang CAS 703.
Stacks - 2 Nour El-Kadri ITI Implementing 2 stacks in one array and we don’t mean two stacks growing in the same direction: but two stacks growing.
Win32 Programming Lesson 16: Virtual Memory. Where are we?  We’ve covered the theory of Windows memory, and poked around some  Now let’s use how to.
Presentation of Failure- Oblivious Computing vs. Rx OS Seminar, winter 2005 by Lauge Wullf and Jacob Munk-Stander January 4 th, 2006.
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke.
Exceptions Handling Exceptionally Sticky Problems.
Pointers to Functions In C programming language. Introduction  While many programming languages support the concept of pointers to data, only a few enable.
CSE 425: Data Types I Data and Data Types Data may be more abstract than their representation –E.g., integer (unbounded) vs. 64-bit int (bounded) A language.
Memory Management Issues, Solutions, and Examples.
Investigating Survivability Strategies for Ultra-Large Scale (ULS) Systems Vanderbilt University Nashville, Tennessee Institute for Software Integrated.
Working with Batches of Data Lecture 4 Hartmut Kaiser
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Chapter 10 Customer-Defined Service Standards
As you arrive… FIRST: Grab the handout SECOND: Snarf the code for today’s class THIRD: Explain what’s going on in this code (It’s Example 1 in the code.
Basic Memory Management 1. Readings r Silbershatz et al: chapters
Operating Systems (CS 340 D) Princess Nora University Faculty of Computer & Information Systems Computer science Department.
Functions. Motivation What is a function? A function is a self-contained unit of program code designed to accomplish a particular task. We already used.
1 Exposing Behavioral Differences in Cross-Language API Mapping Relations Hao Zhong Suresh Thummalapenta Tao Xie Institute of Software, CAS, China IBM.
CSE 332: Memory management with C++ classes Memory Management with Classes Review: for non-static built-in (native) types –default constructor and destructor.
Lecture 5 functions 1 © by Pearson Education, Inc. All Rights Reserved.
Hashtables David Kauchak cs302 Spring Administrative Midterm must take it by Friday at 6pm No assignment over the break.
Design Principles and Common Security Related Programming Problems
Announcements Quiz this Thursday 1. Multi dimensional arrays A student got a warning when compiling code like: int foo(char **a) { } int main() { char.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 9: Arrays; Revision Session.
Topic 5: CORBA RMI Dr. Ayman Srour
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
Distributed Computing & Embedded Systems Chapter 4: Remote Method Invocation Dr. Umair Ali Khan.
Lecture 5 Page 1 CS 111 Summer 2013 Bounded Buffers A higher level abstraction than shared domains or simple messages But not quite as high level as RPC.
Data Structures and Algorithm Analysis Dr. Ken Cosh Linked Lists.
User-Written Functions
Memory Management with Classes
Managing the Project Lifecycle
Common Object Request Broker Architecture (CORBA)
CSE 3302 Programming Languages
Handling Exceptionally Sticky Problems
C++ coding standard suggestion… Separate reasoning from action, in every block. Hi, this talk is to suggest a rule (or guideline) to simplify C++ code.
Choosing Technologies
Object Oriented Programming COP3330 / CGS5409
CORBA Object-by-Value
Testing, Reliability, and Interoperability Issues in CORBA Programming Paradigm 11/21/2018.
Future of CORBA for Distributed Real-time & Embedded Systems Tuesday, December 04, 2018, ICALEPCS Douglas C. Schmidt
CORBA Object-by-Value
Chapter 9: Virtual Memory
Gang Xing and Michael R. Lyu The Chinese University of Hong Kong
Legacy system components
Handling Exceptionally Sticky Problems
Interpreting Java Program Runtimes
Modern Collections Classes & Generics
Introduction to Classes and Objects
Presentation transcript:

The CORBA C++ Mapping: Beyond Repair? MARS Douglas C. Schmidt Vanderbilt University Institute for Software Integrated Systems CORBA IN THE BALANCE Middleware & the Human Spirit AL GORE

Disclaimer This talk presents my quixotic perspective as a long-time CORBA advocate & does not (necessarily) represent any company’s perspective

Motivation

What are the Problems? 1.Memory management is too complicated & easy to get wrong due to lots of rules to memorize, e.g., Storing strings within sequences & structs Not handling the return reference from an operation, but passing it to another operation Not setting length() of sequence properly Not duplicating object references properly Not using ServantBase_var properly Many of these problems stem from the lack of “self-managing” types in the C++ mapping

What are the Problems? 2.Lack of standard C++ classes makes CORBA look “old & lame” & causes extra work for programmers e.g., it’s a lot of work to move the data back & forth between the standard C++ types you want to manipulate & the types you need to pass as parameters 3.A tremendous amount of code gets generated for the C++ mapping, leading to bloat & slow compilation The size difference between the same essential set of functionality can be roughly on the order of 5:1 e.g., for e*ORB C & C++ on Red Hat 9 Linux compiled with gcc 3.2 the C libec_poa.so is 29 kbytes C++ vs libe_mpoa.so is 105 kbytes

Top 10 Things to Fix in C++ Mapping 1.All memory should be self- managed This includes CORBA::Object, sequences, strings, structures of all types, etc 2.Structs & unions should have useful constructors 3.Arrays should be implemented using std::vector<> Many more suggestions in CUJ columns by Vinoski & Schmidt Fix valuetypes so they use consistent reference counting scheme 5.All types should offer exception- safe swap() operations 6.Use bool, wchar_t, wstring, std::string, std::vector, etc. Do not introduce new types unless you must 7.Repeat number (1) until you reach (10)

Tyranny of the installed base Not clear what the strategic directions are for CORBA Why All This Is Hard

Some Options Ultimately, this isn’t a technical issue, per se, it’s a question of… Wait for CORBA vendors to devise general fixes Pros: Establish critical mass of vendors necessary to assure impact Cons: To paraphrase the eminent Jay-Z: “I've got ninety nine problems but the C++ mapping ain't one” Define an alternative mapping for a specific domain, e.g., embedded systems Pros: Probably more realistic than trying to standardize a totally new general mapping Cons: Doesn’t address the problem of trying to grow the overall general CORBA market Define an alternative general mapping & prototype it via open-source ORBs Pros: Let the market decide, i.e., similar to Boost for C++ Cons: Establishing critical mass Adopt the ICE C++ mapping wholesale Pros: Well thought out & based on “modern” C++ Cons: Legal implications, i.e., is the ICE spec “open”?