The Evolving Search for Effective C++
|
|
- Bertina Welch
- 8 years ago
- Views:
Transcription
1 The Evolving Search for Effective C++ Scott Meyers Image Florian Wizorek. Used with permission. Last Revised: 12/5/ Polar Bear Image: Polar Bear Cub, flickr Slide 2
2 Information Information Information Information Information Information Information Information
3 Effective Effective Books 1. Keep Items short. 2. Put Item titles in the imperative. 3. Make Item advice as specific as possible 4. Word Item titles carefully. 5. Prefer guidelines that say what to do over what not to do. 6. Tell the truth and nothing but the truth, but not necessarily the whole truth. 7. Back Items with solid technical arguments. 8. End each Item with a summary of its advice. 9. Know how to modulate the stridency of Item titles. 10. Cross reference liberally. 11. Minimize use of footnotes. 12. Be consistent when referring to yourself and your readers. 13. Seek out ruthless pre-publication reviewers. Slide 5 Case Study Item 42 Slide 6
4 Candidate Guideline Prefer emplacement to insertion. Slide 7 Emplacement vs. Insertion for Container<T> Insertion functions take parameters of type (reference to) T: push_front(t) push_back(t) insert(position, T) insert_after(position, T) Emplacement functions take constructor arguments for T: emplace_front(ctor args for T) emplace_back(ctor args for T) emplace(position, ctor args for T) emplace_hint(position, ctor args for T) emplace_after(position, ctor args for T) In std::vector<std::string>: void push_back(const std::string&); void push_back(std::string&&); template<class... Args> void emplace_back(args&&...); Slide 8
5 The Case for Emplacement Avoids temporary creation: std::vector<std::string> vs; vs.push_back("xyzzy"); vs.emplace_back("xyzzy"); // create temp // move temp into vector // destroy temp // create string inside vector Slide 9 The Case for Emplacement For copyable/movable types, emplacement can do it all! std::string queenofdisco("donna Summer"); vs.push_back(queenofdisco); // copy-construct queenofdisco // at end of vs vs.emplace_back(queenofdisco); // ditto Ergo: Prefer emplacement to insertion. Should never be slower, should sometimes be faster. Right? Slide 10
6 Reality Check Howard Hinnant s experiments adding a T object to front of 3-element std::vector<t>. Two cases: Reallocation unnecessary (capacity > size). Reallocation required (capacity == size). For each case: Add lvalue. Add xvalue (e.g., std::move(existing object)). Add prvalue (e.g., T(ctor args)). Three std::vector implementations: libc++ (LLVM) libstdc++ (Gnu) VS2013 (Microsoft) Slide 11 Reallocation Unnecessary Results (Functions Executed per insert/emplace) Lvalue Xvalue Prvalue I E I I - - I - - libc++ libstdc++ VS2013 libc++ libstdc++ VS2013 libc++ libstdc++ VS2013 Reallocation Required - - I Slide 12
7 Observations Much variation per scenario or implementation: Number of functions executed. Whether insertion or emplacement executes fewer functions. Whether emplacement equivalent to insertion. Slide 13 Insight Construction fundamentally different from assignment: Construction can take arbitrary types. Assignment generally takes same-type argument. class Widget { public: Widget(int x, double d, std::string s); // arbitrary types Widget& operator=(const Widget&); // signatures per Widget& operator=(widget&&); // convention }; Seeming exceptions may not really be exceptional: template<typename chart> // simplified version class basic_string { public: basic_string& operator=(const chart* s); // specified as... // *this = basic_string(s) }; Slide 14
8 Insight Assignment for T generally requires argument of type T. Typically negates emplacement s performance advantage! So emplace_back may beat push_back, ditto for emplace_front, but no reason to expect emplace to normally beat insert. construction construction assignment Slide 15 Conclusions So Far Emplacement into a Container<T> a potential win only when: Object added to container via construction, not assignment. For std::vector/std::deque, true only for push_back/push_front. Multiple arguments passed. Avoids need to create temporary to satisfy insertion interface. Single argument passed not of type T. No reason to expect emplacing a T to beat inserting a T. Slide 16
9 CWUK = Containers with Unique Keys std::set<k>, std::unordered_set<k> have nodes holding K objects. CWUK Containers std::map<k, V>, std::unordered_map<k, V> have nodes holding std::pair<const K, V> objects. K (K,V) K K K K K (K,V) (K,V) (K,V) (K,V) (K,V) K K K K (K,V) (K,V) (K,V) (K,V) Slide 17 CWUK Container Declarations template <class Key, class Compare = less<key>, class Allocator = allocator<key> > class set; template <class Key, class Hash = hash<key>, class Pred = std::equal_to<key>, class Alloc = std::allocator<key> > class unordered_set; template <class Key, class T, class Compare = less<key>, class Allocator = allocator<pair<const Key, T> > > class map; From C++14 Standard template <class Key, class T, class Hash = hash<key>, class Pred = std::equal_to<key>, class Alloc = std::allocator<std::pair<const Key, T> > > class unordered_map; Slide 18
10 CWUK Containers Default same value comparisons are homogeneous: std::less<k> compares two K objects. std::equal_to<k> compares two K objects. Emplacement must create a K for comparison, even if value to be added is a duplicate. If a duplicate, created K must then be destroyed. No reason to expect emplacement to run faster than insertion: A temp object likely created to satisfy comparison function interface. Slide 19 CWUK Container Lookup Behavior Insertion: 1. Compare parameter key to keys in container. 2. If parameter key isn t in container, a. Dynamically allocate new node. b. Copy or move parameter key into new node. c. Link new node into container. For duplicate keys: No node allocation/deallocation. No copying or moving parameter key. Emplacement: 1. Dynamically allocate memory for new node. 2. Construct key in new node. 3. Compare new node key to keys in container. 4. If new node key isn t in container, a. link new node into container. else b. Destroy new node. For duplicate keys: Node allocated and deallocated. Key in new node constructed + destructed. Slide 20
11 Additional Conclusion Emplacement into a Container<T> a likely lose (vis-a-vis insertion) when: Container rejects duplicate keys and duplicate keys aren t uncommon. Slide 21 Consider: std::vector<std::regex> regexes; The Conversion Consideration regexes.push_back(nullptr); regexes.emplace_back(nullptr); Huh? // error! nullptr isn't a std::regex // and there's no implicit conversion // compiles! Slide 22
12 The Constructor in Question template <class chart, class traits = regex_traits<chart> > class basic_regex {... explicit basic_regex(const chart* p, flag_type f = regex_constants::ecmascript);... }; Requires: p shall not be a null pointer. From C++14 Standard Hence: regexes.emplace_back(nullptr); // UB! (Precondition violation) But why does emplace_back compile when push_back doesn t? Slide 23 Direct vs. Copy Initialization Direct initialization may call explicit constructors. Copy initialization can t. 8.5/15-16 How know which used where? Memorize :-( std::regex r1(nullptr); std::regex r2{nullptr}; std::regex r3 = nullptr; // compiles! Direct initialization // may call explicit ctor // ditto // error! Copy initialization // can't call explicit ctor Slide 24
13 Direct vs. Copy Initialization Emplacement functions use direct initialization: regexes.emplace_back(nullptr); Insertion functions use copy initialization: regexes.push_back(nullptr); // compiles! // error! Slide 25 Emplacement less safe than insertion. May invoke explicit constructors. One More Conclusion Slide 26
14 Performance: Summary Emplacement can reduce number of constructions/destructions. In theory, emplacement never costs more than insertion. In practice, emplacement often does. Emplacement most likely a win when: Value being added is constructed into the container, not assigned. Argument(s) passed are different from T (for Container<T>). Value to be added unlikely to be rejected as a duplicate. Safety: Insertion respects explicit constructors, emplacement doesn t. Slide 27 Guideline Prefer emplacement to insertion. Many thanks to: Stephan T. Lavavej Howard Hinnant Michael Winterberg Slide 28
15 Intermission Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation
16 Promulgating the Message 1991: Writing Presentations 2014: Writing Presentations Video Image: Loudspeakers, Pelle flickr Slide 31 Black ink on white, fixed-size pages. The Writing Landscape: 1991 Slide 32
17 Flashback to my TOC 2009 talk: The Writing Landscape: 2014 Slide 33
18 Authoring Challenges in a Multiplatform World The Vision and Why Authors Matter What's in here Printed book Computer screen Portable electronic book reader Manuscript from author Multipurpose portable device affects how easy and effective these transitions are Audio device Copyrighted material, all rights reserved. Slide 3 The Goal Platform-agnostic manuscript from author. Facilitates: Exploitation of platforms' strengths and capabilities. Accommodation of their weaknesses. Copyrighted material, all rights reserved. Slide 4 Copyrighted material, all rights reserved.
19 Authoring Challenges in a Multiplatform World Some Platform Variations Color? Display Size Diagrams, Graphs, Tables? Page- Based? Dynamic? Personalizable? Rarely Medium Yes Yes No Typically Big Yes Maybe Yes Maybe Medium Maybe Maybe Yes Maybe with POD In concept In concept Typically Small Yes, but small Maybe Yes In concept Maybe Typically small Maybe No Rarely In concept Copyrighted material, all rights reserved. Slide 5 What Works Poorly Conventional manuscript from author Authors design/write books that are: Static Monochrome Page-based Visible Other formats suffer. Copyrighted material, all rights reserved. Slide 6 Copyrighted material, all rights reserved.
20 Authoring Challenges in a Multiplatform World What may go in a Platform-Agnostic Manuscript? Anything that works in printed form. The usual suspects: Text, diagrams, tables, photographs, etc. In addition: Color Video/Animations Audio Copyrighted material, all rights reserved. Slide 7 Challenge: Adopting New Tools New expository tools: Color, video/animations, audio Authors need to learn: What works where? Why? What doesn t? Why not? As true for novelists as for technical writers. Copyrighted material, all rights reserved. Slide 8 Copyrighted material, all rights reserved.
21 Regarding Color... Legitimate uses (IMO): Code highlighting. Syntax coloring. Diagrams and tables. Visual appeal. Slide 34 Not Everybody Gets It Slide 35
22 The Line Length Problem 64 Slide 36 The Solution? Slide 37
23
24
25 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 43
26 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 44 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 45
27 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 46 The Animation Approach Advantages: Good for live, remote, and asynchronous audiences. Disadvantages: Lots of up-front work. Lots. Inflexible. Slide 47
28 The Solution? Touch-based laser pointer and annotation support? Paul Wagner on using ipad/doceri in the Classroom Slide 48 Take-Aways Base guidelines on thorough analysis and solid technical arguments. Write for modern digital devices. Design live presentations to be recorded.
29 Further Information Automatic Detection of Programming Errors: Initial Thoughts on a lint++, Scott Meyers and Moises Lejter, Proceedings of the 1991 USENIX C++ Conference, April Effective Effective Books, Scott Meyers, The View From Aristeia, 23 January insert vs. emplace, Howard Hinnant, 28 July 2014, Effective Modern C++, Scott Meyers, O Reilly, Authoring Challenges in a Multiplatform World, Scott Meyers, Tools of Change, February The Line-Length Problem, Scott Meyers, The View from Aristeia, 13 March clang-format: Automatic formatting for C++, Daniel Jasper, 2013 European LLVM Conference, 29 April C++ Seasoning, Sean Parent, GoingNative 2013, 4 September Paul Wagner on using ipad/doceri in the Classroom, YouTube, 22 November Slide 50 Use discount code AUTHD at oreilly.com for 40%-50% off!
30 Licensing Information Scott Meyers licenses materials for this and other training courses for commercial or personal use. Details: Commercial use: Personal use: Courses currently available for personal use include: Slide 52 About Scott Meyers Scott Meyers is one of the world s foremost authorities on C++. His web site, provides information on: Technical training services Upcoming presentations Books, articles, online videos, etc. Professional activities blog Slide 53
Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009
Software Engineering Concepts: Testing Simple Class Example continued Pointers & Dynamic Allocation CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Glenn G. Chappell Department
More informationCORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
More informationVariable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
More information7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
More informationObject Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
More informationGlossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
More informationThe Universal Reference/Overloading Collision Conundruim
The materials shown here differ from those I used in my presentation at the Northwest C++ Users Group. Compared to the materials I presented, these materials correct a variety of technical errors whose
More informationIn this topic we discuss a number of design decisions you can make to help ensure your course is accessible to all users.
Accessible Course Design As a course designer you hold a pivotal role in ensuring that Learning Environment is accessible to all users, regardless of their learning needs. It is your content that students
More informationSequences in the C++ STL
CS 311 Data Structures and Algorithms Lecture Slides Wednesday, November 4, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationLinked Lists: Implementation Sequences in the C++ STL
Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University
More informationHow To Develop An Application
What is Application Lifecycle Management? David Chappell Sponsored by Microsoft Corporation Copyright 2014 Chappell & Associates Defining application lifecycle management (ALM) isn t easy. Different people
More informationFor questions regarding use of the NSF Logo, please email nsf-logo@nsf.gov
Please find enclosed the NSF guidelines for logo usage. It is imperative to adhere to these standards so that we can increase the public s awareness of who NSF is and what we can do for them. To protect
More informationN3458: Simple Database Integration in C++11
N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München neumann@in.tum.de 2012-10-22 Many applications make use of relational database to store and query their data. However,
More informationHOW TO USE DATA VISUALIZATION TO WIN OVER YOUR AUDIENCE
HOW TO USE DATA VISUALIZATION TO WIN OVER YOUR AUDIENCE + TABLE OF CONTENTS HOW DATA SUPPORTS YOUR MESSAGE 1 Benefits of Data Visualization WHEN TO USE DATA VISUALIZATION HOW TO FIND THE STORY IN YOUR
More informationWhy you shouldn't use set (and what you should use instead) Matt Austern
Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't
More informationC Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
More informationC++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
More informationOpenCL Static C++ Kernel Language Extension
OpenCL Static C++ Kernel Language Extension Document Revision: 04 Advanced Micro Devices Authors: Ofer Rosenberg, Benedict R. Gaster, Bixia Zheng, Irina Lipov December 15, 2011 Contents 1 Overview... 3
More informationSupport for Embedded Programming in C++11 and C++14
Support for Embedded Programming in C++11 and C++14 Scott Meyers, Ph.D. Photo: Craig Wyzlk @ flickr Copyrighted material, all rights reserved. Last Revised: 10/24/14 Features New in C++11 (Incomplete List)
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationA Short Course in Logic Example 8
A Short ourse in Logic xample 8 I) Recognizing Arguments III) valuating Arguments II) Analyzing Arguments valuating Arguments with More than one Line of Reasoning valuating If then Premises Independent
More informationStorage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
More informationC++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
More informationNew Generation of Software Development
New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 tyehon@cs.ubc.ca ABSTRACT In this paper, I present a picture of what software development
More informationThe Secret Formula for Webinar Presentations that Work Every Time
The Secret Formula for Webinar Presentations that Work Every Time by Gihan Perera www.webinarsmarts.com Sponsored by In an online presentation, your slides aren t visual aids; they ARE the visuals. One
More informationvector vec double # in # cl in ude <s ude tdexcept> tdexcept> // std::ou std t_of ::ou _range t_of class class V Vector { ector {
Software Design (C++) 3. Resource management and exception safety (idioms and technicalities) Juha Vihavainen University of Helsinki Preview More on error handling and exceptions checking array indices
More informationsqlpp11 - An SQL Library Worthy of Modern C++
2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at
More informationJava CPD (I) Frans Coenen Department of Computer Science
Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials
More informationCpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
More informationVisualization Quick Guide
Visualization Quick Guide A best practice guide to help you find the right visualization for your data WHAT IS DOMO? Domo is a new form of business intelligence (BI) unlike anything before an executive
More informationHow To Ask For A Referral Online Without Being Afraid
The Art of the Ask How to Overcome the Fear of Asking for Referrals 2013 Copyright Constant Contact, Inc. 12-3149 BEST PRACTICES GUIDE SOCIAL MEDIA MARKETING When you think about your main source of new
More informationC++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
More informationCoding conventions and C++-style
Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate
More informationCS193j, Stanford Handout #10 OOP 3
CS193j, Stanford Handout #10 Summer, 2003 Manu Kumar OOP 3 Abstract Superclass Factor Common Code Up Several related classes with overlapping code Factor common code up into a common superclass Examples
More informationPristine s Day Trading Journal...with Strategy Tester and Curve Generator
Pristine s Day Trading Journal...with Strategy Tester and Curve Generator User Guide Important Note: Pristine s Day Trading Journal uses macros in an excel file. Macros are an embedded computer code within
More informationLINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationA Guide to Sharing Architecture
Salesforce, Spring 16 @salesforcedocs Last updated: January 18, 2016 Copyright 2000 2016 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc., as are other
More informationMaking TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs
Making TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs In the worlds of electronic publishing and video production programs, the need for TIFF or EPS formatted files
More informationCHAPTER 4 ESSENTIAL DATA STRUCTRURES
CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex
More informationPromoting Your Location Platform
Promoting Your Location Platform A Change Management Kit www.esri.com/changekit Publication Date: November 23, 2015 Esri: Promoting Your Location Platform 1 What is the Change Management Kit? The launch
More information16.1 DataFlavor. 16.1.1 DataFlavor Methods. Variables
In this chapter: DataFlavor Transferable Interface ClipboardOwner Interface Clipboard StringSelection UnsupportedFlavorException Reading and Writing the Clipboard 16 Data Transfer One feature that was
More information30- Day List Building Plan for a blogger/affiliate marketer
30- Day List Building Plan for a blogger/affiliate marketer Day What to 1 If you have been using FeedBurner, switch to an service provider. If you have been using nothing, choose an provider. If you already
More informationQuickTimePro creating movies from frames
Biochem 660 2008 179 QuickTimePro creating movies from frames Appleʼs QuickTime Pro is available on Macintosh and Windows platforms. The free version is downloadable from http://www.apple.com/quicktime/
More informationJetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
More informationIntermediate PowerPoint
Intermediate PowerPoint Charts and Templates By: Jim Waddell Last modified: January 2002 Topics to be covered: Creating Charts 2 Creating the chart. 2 Line Charts and Scatter Plots 4 Making a Line Chart.
More informationINTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011
INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 1 Goals of the Lecture Present an introduction to Objective-C 2.0 Coverage of the language will be INCOMPLETE
More informationSplicing Maps and Sets
Document number: N3586 Date: 2013-03-17 Project: Programming Language C++ Reference: N3485 Reply to: Alan Talbot cpp@alantalbot.com Howard Hinnant howard.hinnant@gmail.com Related Documents Splicing Maps
More informationCopyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.
The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret
More informationProgramming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions
COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement
More informationPython, C++ and SWIG
Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,
More informationCIM Level 4 Certificate in Professional Marketing
CIM Level 4 Certificate in Professional Marketing Digital Marketing (2103) December 2015 Assignment The assignment comprises SIX compulsory tasks Task 1 is worth 5 marks Task 2 is worth 15 marks Task 3
More informationCreating a Jeopardy Review Game using PowerPoint software.
DKeane MSMC ED 5700 ICP - Lesson Plan Using Technology in the K-8 Science Curriculum Creating a Jeopardy Review Game using PowerPoint software. (Sample Performance objectives and questions are based on
More informationWebsite Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.
Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.com Why have a website? If you re busier than you d like to be
More information6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation
More informationSo today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we
More informationComp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
More informationThe Challenge of Helping Adults Learn: Principles for Teaching Technical Information to Adults
The Challenge of Helping Adults Learn: Principles for Teaching Technical Information to Adults S. Joseph Levine, Ph.D. Michigan State University levine@msu.edu One of a series of workshop handouts made
More informationUnified Communications Using Microsoft Office Live Meeting 2007
Unified Communications Using Microsoft Office Live Meeting 2007 Text version of online course. Contents Unified Communications... 1 About Microsoft Office Live Meeting 2007... 3 Copyright Information...
More informationLearning From Lectures:
Learning From Lectures: A Guide to University Learning Learning Services University of Guelph Table of Contents Student Guide:... 3 University Lectures... 3 Preparing for Lectures... 4 Laptop Pros & Cons...
More informationWindows SharePoint Services Operations Guide. Robert Crane Computer Information Agency http://www.ciaops.com
Windows SharePoint Services Operations Guide By Robert Crane Computer Information Agency http://www.ciaops.com Terms This Windows SharePoint Services Operations Guide (WSSOPS) from the Computer Information
More informationI ntroduction. Accessing Microsoft PowerPoint. Anatomy of a PowerPoint Window
Accessing Microsoft PowerPoint To access Microsoft PowerPoint from your home computer, you will probably either use the Start menu to select the program or double-click on an icon on the Desktop. To open
More informationManagement Information System Prof. B. Mahanty Department of Industrial Engineering & Management Indian Institute of Technology, Kharagpur
(Refer Slide Time: 00:54) Management Information System Prof. B. Mahanty Department of Industrial Engineering & Management Indian Institute of Technology, Kharagpur Lecture - 18 Data Flow Diagrams - III
More informationWHAT IS IT? WHO IS IT FOR? WHY?
WHAT IS IT? Zoho Creator is an online platform that allows you to build custom applications for any business need, all by yourself. together - just the application you need. To make it work the way you
More informationRecord-Level Access: Under the Hood
Record-Level Access: Under the Hood Salesforce, Summer 15 @salesforcedocs Last updated: May 20, 2015 Copyright 2000 2015 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of
More informationCS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012
CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone
More informationComplete a Relationships Presentation
Complete a Relationships Presentation Speech Tips 1. I am so scared of giving my speech. How do I get over my nervousness? Nervousness is natural. Think of it as a friend rather than an enemy. You need
More informationSQL Server 200x Optimizing Stored Procedure Performance
SQL Server 200x Optimizing Stored Procedure Performance Kimberly L. Tripp SQLskills.com Email: Kimberly@SQLskills.com Blog: http://www.sqlskills.com/blogs/kimberly http://www.sqlskills.com Speaker Kimberly
More informationCS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators
CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators This handout is designed to provide a better understanding of how one should write template code and architect iterators
More informationBasic Computer Skills Module 4. Introduction to Microsoft PowerPoint 2010
Basic Computer Skills Module 4 Introduction to Microsoft PowerPoint 2010 Basic Computer Skills Module 4 Introduction to Microsoft PowerPoint 2010 Summary Goal(s): This unit includes lessons on how to use
More informationC++ future. The original English text of an interview with the Russian news organization CNEWS:
The original English text of an interview with the Russian news organization CNEWS: C++ future Soon we will have a new standard for C++. What is going to change in this programming language? What new features
More informationOnline Instructional Materials for Universal Web Accessibility
Online Instructional Materials for Universal Web Accessibility 2002/2003 TIGERS Grant Final Report (as published in the 2003 EdMedia Conference Proceedings) Candace Egan California State University Fresno
More informationThomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
More informationA conversation with Scott Chappell, CMO, Sessions Online Schools of Art and Design
A conversation with Scott Chappell, CMO, Sessions Online Schools of Interviewed by: Steven Groves, StevenGroves.com Guy R. Powell, DemandROMI Can you talk to us a little bit about Sessions and what Sessions
More informationTHE BENEFITS AND RISKS OF CLOUD PLATFORMS
THE BENEFITS AND RISKS OF CLOUD PLATFORMS A GUIDE FOR BUSINESS LEADERS DAVID CHAPPELL JANUARY 2011 SPONSORED BY MICROSOFT CORPORATION Cloud platforms are a fundamental part of the move to cloud computing.
More informationPlanning for your new web site
Planning for your new web site Copyright Vince Yokom 2012 Snoop around Check out your competition Looking around the web at other sites is probably the most important part of the process. It is usually
More informationOrganization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used
More informationTop 5 best practices for creating effective dashboards. and the 7 mistakes you don t want to make
Top 5 best practices for creating effective dashboards and the 7 mistakes you don t want to make p2 Financial services professionals are buried in data that measure and track: relationships and processes,
More informationrecursion, O(n), linked lists 6/14
recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list
More informationBasic Object-Oriented Programming in Java
core programming Basic Object-Oriented Programming in Java 1 2001-2003 Marty Hall, Larry Brown http:// Agenda Similarities and differences between Java and C++ Object-oriented nomenclature and conventions
More informationUsing Historical Probabilities to Trade the Opening Gap
Using Historical Probabilities to Trade the Opening Gap Scott Andrews Hosted by Hamzei Analytics November 10, 2010 Disclaimer This material is intended for educational purposes only and is believed to
More informationAn Economic Perspective of! Disk vs. Flash Media! in Archival Storage Preeti Gupta Avani Wildani Ethan L. Miller! Daniel Rosenthal Ian F. Adams,!
An Economic Perspective of Disk vs. Flash Media in Archival Storage Preeti Gupta Avani Wildani Ethan L. Miller Daniel Rosenthal Ian F. Adams, Christina Strong Andy Hospodor What s the trouble with media
More informationAcademic presentations
ST810 March 17, 2008 Outline Types of talks Organization Preparing slides Presentation tips Taking questions Types of talks: Conference presentation Usually 15-20 minutes for contributed talks. Maybe time
More informationTeaching Online at UD Best Practices Guide
Teaching Online at UD Best Practices Guide Version 1.0 April 14, 2009, Updated January 26, 2015 Ryan C. Harris Learning Teaching Center UDit Curriculum Innovation and E Learning Delivering Quality Online
More informationConsulting. Personal Attention, Expert Assistance
Consulting Personal Attention, Expert Assistance 1 Writing Better SQL Making your scripts more: Readable, Portable, & Easily Changed 2006 Alpha-G Consulting, LLC All rights reserved. 2 Before Spending
More information0-7803-5643-8/99/$10.00 1999 IEEE
Design of a Web-Based Education Environment Session 12a3 Thomas G. Cleaver and Robert L. Toole Department of Electrical Engineering University of Louisville Louisville, KY 40292 Abstract - Delivery of
More informationChapter 12. The Product Coordination Team
Chapter 12. The Product Coordination Team In theory, theory and practice are the same. In practice, they are different. Attributed to many. In This Chapter This chapter describes the challenge of teams
More informationFont and color choices are all made from the Message or Format Text tab on the ribbon.
Outlook 2010: Contents Outlook 2010:... 1 Email That Everyone Can Read... 1 Fonts and Colors... 1 What Format Should I Choose?... 2 How to Add Structure and Meaning to a Longer Email... 2 How to Add Images
More informationPattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
More informationWINDOWS AZURE EXECUTION MODELS
WINDOWS AZURE EXECUTION MODELS Windows Azure provides three different execution models for running applications: Virtual Machines, Web Sites, and Cloud Services. Each one provides a different set of services,
More informationA Modern Sales Roadmap. 7 best practices to drive sales success. tellwise
A Modern Sales Roadmap 7 best practices to drive sales success tellwise Introduction Whether you re an inside sales rep or the Chief Sales Officer (CSO), you know sales is a demanding field, with countless
More informationCSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
More informationAdding emphasis to a presentation in PowerPoint 2010 and 2013 for Windows
Adding emphasis to a presentation in PowerPoint 2010 and 2013 for Windows This document introduces technique to add interest to your presentation using graphics, audio and video. More detailed training
More informationCustomer Referral Programs A How-To Guide to Help You Generate Better Sales Leads
Customer Referral Programs A How-To Guide to Help You Generate Better Sales Leads Whatare Customer Referral Programs? Customer referral programs are a simple, low cost and effective marketing strategy,
More informationHypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
More informationChapter 6: Project Planning & Production
AIM Your Project with Flash: Chapter 6 - Project Planning and Production 105 Chapter 6: Project Planning & Production After completing this module, you ll be able to: plan a Flash project. consider design
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationData Visualization Best Practice. Sophie Sparkes Data Analyst
Data Visualization Best Practice Sophie Sparkes Data Analyst http://graphics.wsj.com/infectious-diseases-and-vaccines/ http://blogs.sas.com/content/jmp/2015/03/05/graph-makeover-measles-heat-map/ http://graphics.wsj.com/infectious-diseases-and-vaccines/
More information