What Code Generation Can Do for You. Marc-Antoine Sauvé
|
|
- Virgil Welch
- 5 years ago
- Views:
Transcription
1 What Code Generation Can Do for You Marc-Antoine Sauvé Hopper
2 Hopper Creates Trust from Data We process 300 billion flight prices each month to build trust and optimize customer interactions.
3 Repetitive tasks are Boring Error prone Counterproductive
4 Sourcery Code generation No reflection Flexible
5 What is it? Standalone application
6 What is it? Standalone application Scan the source code
7 What is it? Standalone application Scan the source code Uses templates
8 What is it? Standalone application Scan the source code Uses templates Generate source code
9 What is it? Standalone application Scan the source code Uses templates Generate source code Can read code and comments
10 Foo.swift public class Foo {
11 Foo.swift AutoClassName.stencil public class Foo { {% for type in types.all % extension {{ type.name { {% if type.accesslevel == "public" % public var name: String { return "{{ type.name " {% endif % {% endfor %
12 Foo.swift AutoClassName.stencil public class Foo { {% for type in types.all % extension {{ type.name { {% if type.accesslevel == "public" % public var name: String { return "{{ type.name " {% endif % {% endfor %
13 Foo.swift AutoClassName.stencil public class Foo { {% for type in types.all % extension {{ type.name { {% if type.accesslevel == "public" % public var name: String { return "{{ type.name " {% endif % {% endfor %
14 Foo.swift AutoClassName.stencil public class Foo { {% for type in types.all % extension {{ type.name { {% if type.accesslevel == "public" % public var name: String { return "{{ type.name " {% endif % {% endfor %
15 Foo.swift AutoClassName.stencil public class Foo { {% for type in types.all % extension {{ type.name { {% if type.accesslevel == "public" % public var name: String { return "{{ type.name " {% endif % {% endfor % AutoClassName.generated.swift extension Foo { public var name: String { return "Foo"
16 Sourcery Before build Watch files Manual
17 Real Swift problem Listing enum
18 models.swift public enum SuperPower { case HeatVision case SuperSpeed case SuperStrength case XrayVision case SuperIntelligence
19 models.swift protocol AutoCases { public enum SuperPower: AutoCases { case HeatVision case SuperSpeed case SuperStrength case XrayVision case SuperIntelligence
20 AutoCases.stencil {% for enum in types.implementing.autocases enum % {{ enum.accesslevel extension {{ enum.name { static public let count: Int = {{ enum.cases.count {% if not enum.hasassociatedvalues % static public let allcases: [{{ enum.name ] = [ {% for case in enum.cases %.{{ case.name {% if not forloop.last %,{% endif % {% endfor %] {% endif % {% endfor %
21 AutoCases.stencil {% for enum in types.implementing.autocases enum % {{ enum.accesslevel extension {{ enum.name { static public let count: Int = {{ enum.cases.count {% if not enum.hasassociatedvalues % static public let allcases: [{{ enum.name ] = [ {% for case in enum.cases %.{{ case.name {% if not forloop.last %,{% endif % {% endfor %] {% endif % {% endfor %
22 AutoCases.stencil {% for enum in types.implementing.autocases enum % {{ enum.accesslevel extension {{ enum.name { static public let count: Int = {{ enum.cases.count {% if not enum.hasassociatedvalues % static public let allcases: [{{ enum.name ] = [ {% for case in enum.cases %.{{ case.name {% if not forloop.last %,{% endif % {% endfor %] {% endif % {% endfor %
23 AutoCases.generated.swift public extension SuperPower { static let count: Int = 5 static public let allcases: [SuperPower] = [.HeatVision,.SuperSpeed,.SuperStrength,.XrayVision,.SuperIntelligence ]
24 Sourcery Readable code Debuggable DRY
25 Equatable
26 AutoEquatable.stencil // swiftlint:disable file_length // [...] Removed some boilerplate to enhance readability {% macro comparevariables variables % {% for variable in variables where variable.readaccess!= "private" and variable.readaccess!= "fileprivate" %{% if not variable.annotations.skipequality %guard {% if not variable.isoptional %{% if not variable.annotations.arrayequality %lhs.{{ variable.name == rhs.{{ variable.name {% else %comparearrays(lhs: lhs.{{ variable.name, rhs: rhs.{{ variable.name, compare: ==){% endif %{% else %compareoptionals(lhs: lhs.{{ variable.name, rhs: rhs.{{ variable.name, compare: ==){% endif % else { return false {% endif % {% endfor % {% endmacro % // MARK: - AutoEquatable for classes, protocols, structs {% for type in types.implementing.autoequatable!enum % // MARK: - {{ type.name AutoEquatable {% if not type.kind == "protocol" and not type.based.nsobject %extension {{ type.name : Equatable {{% endif % {% if type.supertype.based.equatable or type.supertype.implements.autoequatable %THIS WONT COMPILE, WE DONT SUPPORT INHERITANCE for AutoEquatable{% endif % {{ type.accesslevel func == (lhs: {{ type.name, rhs: {{ type.name ) -> Bool { {% if not type.kind == "protocol" % {% call comparevariables type.storedvariables % {% else % {% call comparevariables type.allvariables % {% endif % return true {% endfor % // Keeps going for a while adding some code for enums
27 AutoEquatable.generated.swift // MARK: - SuperHero AutoEquatable extension SuperHero: Equatable { public func == (lhs: SuperHero, rhs: SuperHero) -> Bool { guard lhs.name == rhs.name else { return false guard lhs.superpowers == rhs.superpowers else { return false return true
28 AutoEquatable.generated.swift // MARK: - SuperPower AutoEquatable extension SuperPower: Equatable { public func == (lhs: SuperPower, rhs: SuperPower) -> Bool { switch (lhs, rhs) { case (.HeatVision,.HeatVision): return true case (.SuperSpeed(let lhs),.superspeed(let rhs)): if lhs.speed!= rhs.speed { return false if lhs.duration!= rhs.duration { return false return true // [ Skipped some code for readability ] default: return false
29 Annotations public class SuperHero: AutoEquatable { public let name: String // sourcery: skipequality public let sidekick: SuperHero? public let superpowers: [SuperPower]
30 Sourcery Test once Avoid human mistakes Low maintenance cost
31 Class Types Method TypeName Protocol Subscript Enum ArrayType GenericTypeParameter TupleType TupleElement Attribute AssociatedValue Struct DictionaryType GenericType MethodParameter Variable ClosureType EnumCase
32 What s bad? Hard to read the template
33 What s bad? Hard to read the template Hard to write the template
34 What s bad? Hard to read the template Hard to write the template Poor support in the IDEs
35 What s bad? Hard to read the template Hard to write the template Poor support in the IDEs Can be slow to compile
36 What s bad? Hard to read the template Hard to write the template Poor support in the IDEs Can be slow to compile Annotations are not type checked
37 AppCode
38 Visual Studio Code
39 Still worth it! Saves a lot of time!
40 Questions?
41 We re on the Lookout for Talented People Check out current openings at hopper.com/jobs. Slides available on cocoaheadsmtl.com.
Mobile Application Programming. Swift Classes
Mobile Application Programming Swift Classes Swift Top-Level Entities Like C/C++ but unlike Java, Swift allows declarations of functions, variables, and constants at the top-level, outside any class declaration
More informationiphone Application Programming Lab 3: Swift Types and Custom Operator + A02 discussion
Lab 3: Swift Types and Custom Operator + A02 discussion Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Learning Objectives Discuss A02 Another implementation
More informationPatterns & practices for unit-testing Swift-ly. Jakub Turek 18th June, 2018
Patterns & practices for unit-testing Swift-ly Jakub Turek 18th June, 2018 About me Jakub Turek https://jakubturek.com @KubaTurek turekj EL Passion 1 Agenda 1. Introduction to unit-testing. Test Driven
More informationthe gamedesigninitiative at cornell university Lecture 7 C++ Overview
Lecture 7 Lecture 7 So You Think You Know C++ Most of you are experienced Java programmers Both in 2110 and several upper-level courses If you saw C++, was likely in a systems course Java was based on
More informationDebug C++ Without Running. Anastasia Kazakova
Debug C++ Without Running Anastasia Kazakova JetBrains @anastasiak2512 Agenda 1. Tricky C++ language. Show samples! 2. Seems to help but it doesn t. Why? Running / Debugging Static / dynamic code analysis
More informationboost::enable_if Deep Down Boostimagical Fun Christian Bay and Kasper A Andersen Department of Computer Science University of Copenhagen
Deep Down Boostimagical Fun boost::enable_if Christian Bay and Kasper A Andersen Department of Computer Science University of Copenhagen C. Bay and K. A. Andersen, June 2, 2006 p. 1/12 SFINAE revisited
More informationCS 32. Lecture 2: objects good?
CS 32 Lecture 2: objects good? Double Vision This course has two main tracks Unix/shell stuff Object-Oriented Programming Basic C++ familiarity Off by one! Another Troika This class has three main texts
More informationCS 32. Lecture 5: Templates
CS 32 Lecture 5: Templates Vectors Sort of like what you remember from Physics but sort of not Can have many components Usually called entries Like Python lists Array vs. Vector What s the difference?
More informationUsing Enum Structs as Bitfields
New York C++ Developers Group July 12, 2016 Using Enum Structs as Bitfields Presentation by Jon Kalb Based on an article in Overload magazine by Anthony Williams 1 What do these have in common?! explicit
More informationStanford CS193p. Developing Applications for ios. Fall CS193p. Fall
Stanford Developing Applications for ios Today Mostly Swift but some other stuff too Autolayout teaser Quick review of what we learned in Concentration CountableRange of floating point numbers Tuples Computed
More informationiphone Application Programming Lecture 3: Swift Part 2
Lecture 3: Swift Part 2 Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Review Type aliasing is useful! Escaping keywords could be useful! If you want
More information12 CREATING NEW TYPES
Lecture 12 CREATING NEW TYPES of DATA Typedef declaration Enumeration Structure Bit fields Uninon Creating New Types Is difficult to solve complex problems by using programs written with only fundamental
More informationPIC 10A. Lecture 17: Classes III, overloading
PIC 10A Lecture 17: Classes III, overloading Function overloading Having multiple constructors with same name is example of something called function overloading. You are allowed to have functions with
More informationSyntax-Directed Translation. Lecture 14
Syntax-Directed Translation Lecture 14 (adapted from slides by R. Bodik) 9/27/2006 Prof. Hilfinger, Lecture 14 1 Motivation: parser as a translator syntax-directed translation stream of tokens parser ASTs,
More informationSyntax Warnings Language-Integrated Nitpicking
Syntax Warnings Language-Integrated Nitpicking 1 foo.rkt #lang racket/base (require "util.rkt" racket/match (for-syntax "macro-util.rkt") "macros.rkt" racket/vector (for-syntax "macro-util-more.rkt") (for-template
More informationIntroduction to Linked Lists. Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms
Introduction to Linked Lists Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms Lecture Slides Friday, September 25, 2009 Glenn G. Chappell Department of Computer Science
More informationWhat s New in Swift #WWDC18. Ted Kremenek, Languages & Runtimes Manager Slava Pestov, Swift Compiler Engineer
Session #WWDC18 What s New in Swift 401 Ted Kremenek, Languages & Runtimes Manager Slava Pestov, Swift Compiler Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted
More informationBasic Types, Variables, Literals, Constants
Basic Types, Variables, Literals, Constants What is in a Word? A byte is the basic addressable unit of memory in RAM Typically it is 8 bits (octet) But some machines had 7, or 9, or... A word is the basic
More informationCS ios. Extensions, Protocols, and Generics
CS4962 - ios Extensions, Protocols, and Generics Package Management Application level package managers CocoaPods Carthage SPM (Swift Package Manager) CocoaPods Centralized, searchable repository Automatically
More informationP1267R0: Custom Constraint Diagnostics
P1267R0: Custom Constraint Diagnostics ISO/IEC JTC1 SC22/WG21 - Programming Languages - C++ Authors: Hana Dusíková < hana.dusikova@avast.com > Bryce Adelstein Lelbach < brycelelbach@gmail.com > Audience:
More informationThe Go Programming Language. Frank Roberts
The Go Programming Language Frank Roberts frank.roberts@uky.edu - C++ (1983), Java (1995), Python (1991): not modern - Java is 18 years old; how has computing changed in 10? - multi/many core - web programming
More informationCompilers Project. Cyril Soldani. Mar 6th University of Liège
Compilers Project Cyril Soldani University of Liège Mar 6th 2018 1 Outline 1 General remarks 2 Syntax analysis 3 AST structure advice 2 Best group size is 2 Groups of 3 are allowed, but expected to do
More informationWhy C++ is much more fun than C (C++ FAQ)?
From C to C++ Why C++ is much more fun than C (C++ FAQ)? 1. Classes & methods - OO design 2. Generic programming - Templates allow for code reuse 3. Stricter type system (e.g. function args) 4. Some run-time
More informationInstantiation of Template class
Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double
More informationCOMP-520 GoLite Tutorial
COMP-520 GoLite Tutorial Alexander Krolik Sable Lab McGill University Winter 2019 Plan Target languages Language constructs, emphasis on special cases General execution semantics Declarations Types Statements
More informationAdvanced C++ Topics. Alexander Warg, 2017
www.kernkonzept.com Advanced C++ Topics Alexander Warg, 2017 M I C R O K E R N E L M A D E I N G E R M A N Y Overview WHAT IS BEHIND C++ Language Magics Object Life Time Object Memory Layout INTRODUCTION
More informationStatements execute in sequence, one after the other, such as the following solution for a quadratic equation:
Control Structures Sequence Statements execute in sequence, one after the other, such as the following solution for a quadratic equation: double desc, x1, x2; desc = b * b 4 * a * c; desc = sqrt(desc);
More informationFundamentals of Type-Dependent Code Reuse in C++ Mark Isaacson
Fundamentals of Type-Dependent Code Reuse in C++ Mark Isaacson Roadmap Reusing an implementation Selecting between implementations Opt-in functions A Beginning assert(max(3, 5) == 5); assert(max("abc"s,
More informationtemplate<typename T> cout << "The value is << value << endl; } void printdata(t value){
C++ Templates Parametric Polymorphism void printdata(int value){ cout
More informationLists. linking nodes. constructors. chasing pointers. MCS 360 Lecture 11 Introduction to Data Structures Jan Verschelde, 17 September 2010.
1 2 3 MCS 360 Lecture 11 Introduction to Data Structures Jan Verschelde, 17 September 2010 1 2 3 efficient updates with lists At http://www.sgi.com/tech/stl/ is the Standard Template Library Programmer
More information1d: tests knowing about bitwise fields and union/struct differences.
Question 1 1a: char ptr[] = Hello World ; char a = ptr[1], b = *(ptr+6); Creates an array of 12 elements, 11 visible letters and a character value 0 at the end. i true ii true iii false iv false v true
More informationStanford CS193p. Developing Applications for ios. Fall CS193p. Fall
Stanford Developing Applications for ios Today Mostly more Swift but some other stuff too Quick demo of mutating protocols String NSAttributedString Closures (and functions as types in general) Data Structures
More informationSWIFT & #IOExtendedCLT, 18th May 2016
SWIFT & KOTLIN @DagnaBieda, #IOExtendedCLT, 18th May 2016 Software Engineer at Quoin, 209 Delburg Street, Davidson, NC Sources tell The Next Web that Google is considering making Swift a first class language
More informationFriendship in Service of Testing
Friendship in Service of Testing Gábor Márton, martongabesz@gmail.com Zoltán Porkoláb, gsd@elte.hu 1 / 47 Agenda Introduction, principals Case study Making the example better Vision 2 / 47 Functional Programming
More informationPolymorphism COSC346
Polymorphism COSC346 Polymorphism OOP Polymorphism refers to the ability of different class objects to respond to the same method(s) From the perspective of the message sender, the receiver can take different
More informationPatterns and Practices for Embedded TDD in C and C++ How we introduced TDD into our company
Patterns and Practices for Embedded TDD in C and C++ How we introduced TDD into our company Work for Cornwall, England. based in Provide an embedded software development service. Introduced Lean/Agile
More informationIntroduction to Programming
Introduction to Programming session 6 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Spring 2011 These slides are created using Deitel s slides Sharif University of Technology Outlines
More informationInstructor: SIR MUHAMMAD NAVEED Created by: ARSLAN AHMED SHAAD ( ) MUHAMMAD BILAL ( ) ISIT:
Instructor: SIR MUHAMMAD NAVEED Created by: ARSLAN AHMED SHAAD ( 1163135 ) MUHAMMAD BILAL (1163122 ) ISIT:www.techo786.wordpress.com CHAPTER: 3 NOTE: CONTROL STATEMENTS Question s Given below are Long
More informationContract Programming For C++0x
Contract Programming For C++0x WG21/N1800 and J16/05-0060 Lawrence Crowl and Thorsten Ottosen lawrence.crowl@sun.com and nesotto@cs.aau.dk 2005-04-27 Overview This is an annotated version of the presentation
More informationMetaprogramming. Concepts of Programming Languages. Alexander Schramm. 2. November Institut für Softwaretechnik und Programmiersprachen
Metaprogramming Concepts of Programming Languages Alexander Schramm Institut für Softwaretechnik und Programmiersprachen 2. November 2015 A. Schramm 2. November 2015 1/39 Table of Contents Introduction
More informationNon-numeric types, boolean types, arithmetic. operators. Comp Sci 1570 Introduction to C++ Non-numeric types. const. Reserved words.
, ean, arithmetic s s on acters Comp Sci 1570 Introduction to C++ Outline s s on acters 1 2 3 4 s s on acters Outline s s on acters 1 2 3 4 s s on acters ASCII s s on acters ASCII s s on acters Type: acter
More informationVariadic Templates. Andrei Alexandrescu Research Scientist Facebook. c 2012 Andrei Alexandrescu, Facebook. 1 / 34
Variadic Templates Andrei Alexandrescu Research Scientist Facebook c 2012 Andrei Alexandrescu, Facebook. 1 / 34 Twitter stream highlight Don t think I ll be able to stay up to see whatever Cthuloid-template-horror
More informationFundamentals. Fundamentals. Fundamentals. We build up instructions from three types of materials
Fundamentals We build up instructions from three types of materials Constants Expressions Fundamentals Constants are just that, they are values that don t change as our macros are executing Fundamentals
More informationtemplate <typename T> // unless it s an unqualified pointer struct IsPtr<T *> { enum { r = true }; };
SFINAE Sono Buoni SFINAE In attempting to use function template argument deduction to select among a number of candidate function templates, a C++ compiler may attempt an instantiation that fails on one
More informationiphone Application Programming Lecture 3: Swift Part 2
Lecture 3: Swift Part 2 Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Properties Properties are available for classes, enums or structs Classified
More informationGEA 2017, Week 4. February 21, 2017
GEA 2017, Week 4 February 21, 2017 1. Problem 1 After debugging the program through GDB, we can see that an allocated memory buffer has been freed twice. At the time foo(...) gets called in the main function,
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationAppendix. Grammar. A.1 Introduction. A.2 Keywords. There is no worse danger for a teacher than to teach words instead of things.
A Appendix Grammar There is no worse danger for a teacher than to teach words instead of things. Marc Block Introduction keywords lexical conventions programs expressions statements declarations declarators
More informationl Operators such as =, +, <, can be defined to l The function names are operator followed by the l Otherwise they are like normal member functions:
Operator Overloading & Templates Week 6 Gaddis: 14.5, 16.2-16.4 CS 5301 Spring 2018 Jill Seaman Operator Overloading l Operators such as =, +,
More informationFast Introduction to Object Oriented Programming and C++
Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming
More informationSELECTION. (Chapter 2)
SELECTION (Chapter 2) Selection Very often you will want your programs to make choices among different groups of instructions For example, a program processing requests for airline tickets could have the
More informationCOM S 213 PRELIM EXAMINATION #2 April 26, 2001
COM S 213 PRELIM EXAMINATION #2 April 26, 2001 Name: Student ID: Please answer all questions in the space(s) provided. Each question is worth 4 points. You may leave when you are finished with the exam.
More informationeingebetteter Systeme
Praktikum: Entwicklung interaktiver eingebetteter Systeme C++-Tutorial (falk@cs.fau.de) 1 Agenda Classes Pointers and References Functions and Methods Function and Operator Overloading Template Classes
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationStructs. Contiguously-allocated region of memory Refer to members within structure by names Members may be of different types Example: Memory Layout
Structs (C,C++) 2 Structs Contiguously-allocated region of memory Refer to members within structure by names Members may be of different types Example: struct rec int i; int a[3]; int *p; Memory Layout
More information04 Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio. Ben Riga
04 Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga http://about.me/ben.riga Course Topics Building Apps for Both Windows 8 and Windows Phone 8 Jump Start 01 Comparing Windows
More informationMore Advanced Class Concepts
More Advanced Class Concepts Operator overloading Inheritance Templates PH (RH) (Roger.Henriksson@cs.lth.se) C++ Programming 2016/17 146 / 281 Operator Overloading In most programming languages some operators
More informationWhat s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402
Developer Tools #WWDC15 What s New in LLDB Debug your way to fame and glory Session 402 Kate Stone Software Behavioralist Sean Callanan Master of Expressions Enrico Granata Data Wizard 2015 Apple Inc.
More informationChapter 20: Binary Trees
Chapter 20: Binary Trees 20.1 Definition and Application of Binary Trees Definition and Application of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two other
More informationThe University Of Michigan. EECS402 Lecture 15. Andrew M. Morgan. Savitch Ch. 8 Operator Overloading Returning By Constant Value
The University Of Michigan Lecture 15 Andrew M. Morgan Savitch Ch. 8 Operator Overloading Returning By Constant Value Consider This Program class ChangePocketClass public: ChangePocketClass():quarters(0),dimes(0)
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationCOEN244: Class & function templates
COEN244: Class & function templates Aishy Amer Electrical & Computer Engineering Templates Function Templates Class Templates Outline Templates and inheritance Introduction to C++ Standard Template Library
More informationMidterm 3 practice problems
Midterm 3 practice problems CS 133 May 3, 218 1 Hash functions and hash tables What are the two good hash methods we discussed, and how do they work? Remainder: use Horner s method to treat the string
More informationVariant: a type-safe union without undefined behavior (v2).
Variant: a type-safe union without undefined behavior (v2). P0087R0, ISO/IEC JTC1 SC22 WG21 Axel Naumann (axel@cern.ch), 2015-09-28 Contents Introduction 3 Version control 4 Discussion 4 Empty state and
More informationAdvanced use of the C language
Advanced use of the C language Content Why to use C language Differences from Java Object oriented programming in C Usage of C preprocessor Coding standards Compiler optimizations C99 and C11 Standards
More informationC++ Template Meta. A basic introduction to basic C++ techniques used in template metaprogramming.
C++ Template Meta A basic introduction to basic C++ techniques used in template metaprogramming. Github Repo The presentation and all of the code are online on github, with an OSI license. github.com/zwimer/template-meta-tutorial
More informationCMPT 117: Tutorial 1. Craig Thompson. 12 January 2009
CMPT 117: Tutorial 1 Craig Thompson 12 January 2009 Administrivia Coding habits OOP Header Files Function Overloading Class info Tutorials Review of course material additional examples Q&A Labs Work on
More informationLinear Search. Sorting Algorithms. linear search code. Sorting in Ascending Order Selection Sort. Selection sort algorithm
Linear Search Additional CPSC1620 topics Searching, Sorting, Big(O) template functions, classes The idea of a linear search is to walk through the entire list until the value is found. The list does not
More informationOperator Overloading and Templates. Linear Search. Linear Search in C++ second attempt. Linear Search in C++ first attempt
Operator Overloading and Templates Week 6 Gaddis: 8.1, 14.5, 16.2-16.4 CS 5301 Fall 2015 Jill Seaman Linear Search! Search: find a given target item in an array, return the index of the item, or -1 if
More informationCSE 113 A. Announcements - Lab
CSE 113 A February 21-25, 2011 Announcements - Lab Lab 1, 2, 3, 4; Practice Assignment 1, 2, 3, 4 grades are available in Web-CAT look under Results -> Past Results and if looking for Lab 1, make sure
More informationMacros to the Rescue. André Winkelmann Thorsten Dworzak Verilab GmbH
Macros to the Rescue André Winkelmann Thorsten Dworzak Verilab GmbH Code Readability Before What is the code supposed to do? for each in (list.all_indices(it < 2).reverse()) { list.delete(it); Code Readability
More informationChapter 3. More Flow of Control. Copyright 2008 Pearson Addison-Wesley. All rights reserved.
Chapter 3 More Flow of Control Overview 3.1 Using Boolean Expressions 3.2 Multiway Branches 3.3 More about C++ Loop Statements 3.4 Designing Loops Slide 3-3 Flow Of Control Flow of control refers to the
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationAPPENDIX A : Example Standard <--Prev page Next page -->
APPENDIX A : Example Standard If you have no time to define your own standards, then this appendix offers you a pre-cooked set. They are deliberately brief, firstly because standards
More informationVariables. Data Types.
Variables. Data Types. The usefulness of the "Hello World" programs shown in the previous section is quite questionable. We had to write several lines of code, compile them, and then execute the resulting
More informationUnderstanding Undefined Behavior
Session Developer Tools #WWDC17 Understanding Undefined Behavior 407 Fred Riss, Clang Team Ryan Govostes, Security Engineering and Architecture Team Anna Zaks, Program Analysis Team 2017 Apple Inc. All
More informationModern and Lucid C++ Advanced for Professional Programmers. Part 12 Advanced Library Design. Department I - C Plus Plus Advanced
Department I - C Plus Plus Advanced Modern and Lucid C++ Advanced for Professional Programmers Part 12 Advanced Library Design Thomas Corbat / Prof. Peter Sommerlad Rapperswil, 23.02.2017 HS2017 Topics
More informationG52CPP C++ Programming Lecture 8. Dr Jason Atkin
G52CPP C++ Programming Lecture 8 Dr Jason Atkin 1 Last lecture Dynamic memory allocation Memory re-allocation to grow arrays Linked lists Use -> rather than. pcurrent = pcurrent -> pnext; 2 Aside: do not
More informationITP 342 Mobile App Dev. Functions
ITP 342 Mobile App Dev Functions Functions Functions are self-contained chunks of code that perform a specific task. You give a function a name that identifies what it does, and this name is used to call
More informationTDDE18 & 726G77. Functions
TDDE18 & 726G77 Functions Labs update No more one time password. We will note who have demonstrated during the lab and register this in webreg. Use the terminal to send in your lab! Dont use Visual studio
More informationAdvanced features of Functional Programming (Haskell)
Advanced features of Functional Programming (Haskell) Polymorphism and overloading January 10, 2017 Monomorphic and polymorphic types A (data) type specifies a set of values. Examples: Bool: the type of
More informationC++ Basics. Brian A. Malloy. References Data Expressions Control Structures Functions. Slide 1 of 24. Go Back. Full Screen. Quit.
C++ Basics January 19, 2012 Brian A. Malloy Slide 1 of 24 1. Many find Deitel quintessentially readable; most find Stroustrup inscrutable and overbearing: Slide 2 of 24 1.1. Meyers Texts Two excellent
More informationCS 106X, Lecture 14 Classes and Pointers
CS 106X, Lecture 14 Classes and Pointers reading: Programming Abstractions in C++, Chapter 6, 11 This document is copyright (C) Stanford Computer Science and Nick Troccoli, licensed under Creative Commons
More informationTopic 6: A Quick Intro To C. Reading. "goto Considered Harmful" History
Topic 6: A Quick Intro To C Reading Assumption: All of you know basic Java. Much of C syntax is the same. Also: Some of you have used C or C++. Goal for this topic: you can write & run a simple C program
More informationSemantic actions for declarations and expressions
Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 12 October 8, 2018 CPSC 427, Lecture 12, October 8, 2018 1/24 Uses of Pointers Feedback on Programming Style CPSC 427, Lecture 12, October
More informationLecture 10: Lindenmayer Systems
Carl Kingsford, 0-01, Fall 015 Lecture 10: Lindenmayer Systems (Stacks, Queues, append, and list literals) Lindenmayer systems or L-systems are a way to model complex shape contruction simply. They are
More information! Search: find a given target item in an array, ! Linear Search: Very simple search method: ! Operators such as =, +, <, and others can be
Operator Overloading and Templates Week 6 Gaddis: 8.1, 14.5, 16.2-16.4 CS 5301 Spring 2015 Jill Seaman Linear Search! Search: find a given target item in an array, return the index of the item, or -1 if
More informationComputing and compilers
Computing and compilers Comp Sci 1570 to Outline 1 2 3 4 5 Evaluate the difference between hardware and software Find out about the various types of software Get a high level understanding of how program
More informationMCS 360 Exam 2 11 November In order to get full credit, you need to show your work.
MCS 360 Exam 2 11 November 2015 Name: Do not start until instructed to do so. In order to get full credit, you need to show your work. You have 50 minutes to complete the exam. Good Luck! Problem 1.a /15
More informationOverview. Iteration 4 kinds of loops. Infinite Loops. for while do while foreach
Repetition Overview Iteration 4 kinds of loops for while do while foreach Infinite Loops Iteration One thing that computers do well is repeat commands Programmers use loops to accomplish this 4 kinds of
More informationCSCI 104 Templates. Mark Redekopp David Kempe
CSCI 104 Templates Mark Redekopp David Kempe Overview C++ Templates allow alternate versions of the same code to be generated for various data types 2 FUNCTION TEMPLATES 3 How To's Example reproduced from:
More informationTowards Automatic Partial Evaluation for the C++ Language. Robert Anisko
Towards Automatic Partial Evaluation for the C++ Language Robert Anisko May 27, 2002 Partial evaluation is a high-level optimization technique that, given a program text and some of its input, generates
More informationIncrement and the While. Class 15
Increment and the While Class 15 Increment and Decrement Operators Increment and Decrement Increase or decrease a value by one, respectively. the most common operation in all of programming is to increment
More informationC++17 and Beyond. Mark Isaacson
C++17 and Beyond Mark Isaacson 1 Roadmap What s coming in C++17 and C++20 The surprising utility of std::string_view C++20 s most deliciously scary feature: operator dot Making templates more accessible
More informationP.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above
P.G.TRB - COMPUTER SCIENCE Total Marks : 50 Time : 30 Minutes 1. C was primarily developed as a a)systems programming language b) general purpose language c) data processing language d) none of the above
More informationUnit 7. 'while' Loops
1 Unit 7 'while' Loops 2 Control Structures We need ways of making decisions in our program To repeat code until we want it to stop To only execute certain code if a condition is true To execute one segment
More informationLecture 2, September 4
Lecture 2, September 4 Intro to C/C++ Instructor: Prashant Shenoy, TA: Shashi Singh 1 Introduction C++ is an object-oriented language and is one of the most frequently used languages for development due
More informationCS 11 Ocaml track: lecture 6
CS 11 Ocaml track: lecture 6 n Today: n Writing a computer language n Parser generators n lexers (ocamllex) n parsers (ocamlyacc) n Abstract syntax trees Problem (1) n We want to implement a computer language
More information