C++ Panel Discussion Summary Jim Kowalkowski. Participants Amber Boehnlein Jim Kowalkowski Leo Michelotti Marc Paterno Liz Sexton-Kennedy Bjarne Stroustrup.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Chapter 11 user support. Issues –different types of support at different times –implementation and presentation both important –all need careful design.
Software Development Languages and Environments. Programming languages High level languages are problem orientated contain many English words are easier.
Programming Paradigms and languages
Transition from C to C++ …and a Review of Basic Problem Solving.
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Object-Oriented Design & Programming Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Intro to CIT 594
1 CMSC 132: Object-Oriented Programming II Software Development IV Department of Computer Science University of Maryland, College Park.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
OBJECT ORIENTED PROGRAMMING IN C++ LECTURE
PROGRAMMING LANGUAGES The Study of Programming Languages.
Design Patterns Discussion of pages: xi-11 Sections: Preface, Forward, Chapter
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Dr. Chris Musselle – Consultant R Meets Julia Dr Chris Musselle.
1 Shawlands Academy Higher Computing Software Development Unit.
Introduction to Object-oriented programming and software development Lecture 1.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Detailed Design Overview and Mid-Level Class Modeling.
S oftware Q uality A ssurance Part One Reviews and Inspections.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Advanced Analysis Environments What is the role of Java in physics analysis? Will programming languages at all be relevant? Can commercial products help.
Experiences Reviewing Scientific C++ Code Marc Paterno f CD/Special Assignments.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
CSC 313 – Advanced Programming Topics. Design Pattern Intent  Each design pattern is a tool  Like all tools, have reason for being.
Interviewing 1. Goals of Interviewing  Make sure that the biases and predispositions of the interviewer do not interfere with a free exchange of information.
Debugging. Compile problems Read the whole complaint! Runtime problems –Exceptions –Incorrect behavior.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
SE: CHAPTER 7 Writing The Program
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Object Oriented.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
Design Concepts By Deepika Chaudhary.
Reviews and Inspections. Types of Evaluations Formal Design Reviews conducted by senior personnel or outside experts uncover potential problems Inspections.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
CSE 303 – Software Design and Architecture
Chapter 13 Finalizing Design Specifications
Class Diagrams. Terms and Concepts A class diagram is a diagram that shows a set of classes, interfaces, and collaborations and their relationships.
CIT 590 Intro to Programming Lecture 10 (object oriented programming)
Chapter 2 Principles of Programming and Software Engineering.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Chapter 6 Guidelines for Modelling. 1. The Modelling Process 1. Modelling as a Transformation Process 2. Basic Modelling Activities 3. Types of Modelling.
More SQA Reviews and Inspections. Types of Evaluations  Verification Unit Test, Integration Test, Usability Test, etc  Formal Reviews  aka "formal.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
The sharing of ideas allows us to stand on one another’s shoulders instead of on one another’s feet Jim Warren.
Software Design.
Programming paradigms
Sachin Malhotra Saurabh Choudhary
Turing Lecture External Version.ppt
A Brief Introduction to Design Patterns
Programming in Java Sachin Malhotra, Chairperson, PGDM-IT, IMS Ghaziabad Saurabh Chaudhary, Dean, Academics, IMS Ghaziabad.
Part 3 Design What does design mean in different fields?
1.1 Reasons to study concepts of PLs
Roadmap to Programming work, right, fast KISS
Ada – 1983 History’s largest design effort
Computational Thinking
Chapter 2. Problem Solving and Software Engineering
Digital Designs – What does it take
Reasons To Study Programming Languages
Presentation transcript:

C++ Panel Discussion Summary Jim Kowalkowski

Participants Amber Boehnlein Jim Kowalkowski Leo Michelotti Marc Paterno Liz Sexton-Kennedy Bjarne Stroustrup (distinguished panelist)

Day One Talks Talks Frustration with the language Frustration with the language Speed Speed Persistence Persistence

Talks Interesting problems that have been addressed Interesting problems that have been addressed Abstraction and modularity are key concepts Abstraction and modularity are key concepts Experiences with templates and the Standard Library Experiences with templates and the Standard Library

Frustrations Questions and concerns Questions and concerns –Decomposing problem is difficult to do properly –Requires design time –Slower to produce results –Appropriateness of algorithm/data separation Answers Answers –Good design yields flexible, maintainable, and correct code –Prototyping is very important, distinguish it from production code –Striking a balance in separating concepts is difficult, extremes are usually bad

Speed Questions and concerns Questions and concerns –Fortran is apparently faster Answers Answers –Performance testing is difficult, one must compare very similar things –Cannot ignore efficiency when designing and implementing code –Well designed code is generally easier to optimize –Correctness is more important than speed –Extremely fast programs that produce erroneous results, even part of the time, are incorrect

Day Two Missing features Missing features Use of language Use of language

Missing Features Questions and concerns Questions and concerns –Persistency –Reflection –Compiler optimization hints Answers Answers –Join committee –No consensus (standards require this) –Not pushed hard by groups in the committee

Use of Language Subset Questions and concerns Questions and concerns –Exceptions (cost) –Templates (compiler support) Answers Answers –Take fresh look at exceptions and templates, much improved compiler support –Turning off exceptions is not using Standard C++ –Missing out on the strengths of C++

C++ is Difficult Questions and concerns Questions and concerns –Abundant Fortran expertise, not so with C++ –Difficult to read C++ Answers Answers –Fortran skill and code was not very good –Poor C++ is hard to read. Good C++ code matches the concepts and is straightforward to read and maintain –Rely on other code, concentrate on the application, do not need to understand every detail

Use of Standard Library Questions and concerns Questions and concerns –Algorithms are “Weird” –Different style than many are accustomed to Answers Answers –Missing out on the strengths of C++ –Algorithms allow direct expression of concepts in code –Efficient »Allow many optimization opportunities »Best available algorithms

Session Highlights First day First day –Design aspects –Frustrations Second day Second day –Language features –Language use

Stroustrup’s talk Majority of talk discussed techniques involving generic programming Majority of talk discussed techniques involving generic programming Concentrated on use of function objects and algorithms Concentrated on use of function objects and algorithms Classes and code should map clearly and cleanly onto the concepts and intention of the program Classes and code should map clearly and cleanly onto the concepts and intention of the program Stressed importance of building classes that directly model a single concept. Stressed importance of building classes that directly model a single concept. Stressed that class hierarchies should be kept as simple as possible (hierarchies of pure interface) Stressed that class hierarchies should be kept as simple as possible (hierarchies of pure interface)

Summary Use the language features that are appropriate for solving the problem Use the language features that are appropriate for solving the problem –Code to the standard, not a subset Need for representation on the C++ committee Need for representation on the C++ committee Take a look at the generic programming aspects of the language. Take a look at the generic programming aspects of the language. –The combination of OO and generic programming is the strength of the language